phyloio 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Examples/Website/phyloio.html +73 -71
- package/{src_phylo_compare/phylo.js → Examples/Website/src_worker_bcn_js.phylo.js} +25 -972
- package/{src_phylo_compare/vendors-node_modules_d3_index_js-node_modules_file-saver_dist_FileSaver_min_js.phylo.js → Examples/Website/src_worker_distance_js.phylo.js} +100 -2
- package/README.md +16 -2
- package/dist/phylo.js +7 -7
- package/dist/src_worker_bcn_js.phylo.js +2 -2
- package/dist/src_worker_distance_js.phylo.js +1 -1
- package/package-lock.json +19607 -0
- package/package.json +1 -1
- package/src/api.js +19 -9
- package/src/container.js +408 -64
- package/src/interface.css +6 -0
- package/src/interface.js +371 -207
- package/src/model.js +5 -0
- package/src/tmp +12 -0
- package/src/utils.js +31 -1
- package/src/viewer.js +177 -88
- package/src_phylo_compare/fonts/fa-brands-400.eot +0 -0
- package/src_phylo_compare/fonts/fa-brands-400.svg +0 -3717
- package/src_phylo_compare/fonts/fa-brands-400.ttf +0 -0
- package/src_phylo_compare/fonts/fa-brands-400.woff +0 -0
- package/src_phylo_compare/fonts/fa-brands-400.woff2 +0 -0
- package/src_phylo_compare/fonts/fa-regular-400.eot +0 -0
- package/src_phylo_compare/fonts/fa-regular-400.svg +0 -801
- package/src_phylo_compare/fonts/fa-regular-400.ttf +0 -0
- package/src_phylo_compare/fonts/fa-regular-400.woff +0 -0
- package/src_phylo_compare/fonts/fa-regular-400.woff2 +0 -0
- package/src_phylo_compare/fonts/fa-solid-900.eot +0 -0
- package/src_phylo_compare/fonts/fa-solid-900.svg +0 -5034
- package/src_phylo_compare/fonts/fa-solid-900.ttf +0 -0
- package/src_phylo_compare/fonts/fa-solid-900.woff +0 -0
- package/src_phylo_compare/fonts/fa-solid-900.woff2 +0 -0
- package/src_phylo_compare/fonts/fa-v4compatibility.ttf +0 -0
- package/src_phylo_compare/fonts/fa-v4compatibility.woff2 +0 -0
- package/src_phylo_compare/src_utils_js.phylo.js +0 -21
- package/src_phylo_compare/src_worker_bcn_js.phylo.js +0 -341
- package/src_phylo_compare/src_worker_distance_js.phylo.js +0 -227
- package/src_phylo_compare/vendors-node_modules_biojs-io-newick_src_index_js-node_modules_minhashjs_index_js.phylo.js +0 -1703
- package/src_phylo_compare.zip +0 -0
|
@@ -10,633 +10,6 @@ var PhyloIO;
|
|
|
10
10
|
/******/ (() => { // webpackBootstrap
|
|
11
11
|
/******/ var __webpack_modules__ = ({
|
|
12
12
|
|
|
13
|
-
/***/ "./node_modules/@popperjs/core/lib/createPopper.js":
|
|
14
|
-
/*!*********************************************************!*\
|
|
15
|
-
!*** ./node_modules/@popperjs/core/lib/createPopper.js ***!
|
|
16
|
-
\*********************************************************/
|
|
17
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
18
|
-
|
|
19
|
-
"use strict";
|
|
20
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]),\n/* harmony export */ popperGenerator: () => (/* binding */ popperGenerator)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ \"./node_modules/@popperjs/core/lib/utils/orderModifiers.js\");\n/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ \"./node_modules/@popperjs/core/lib/utils/debounce.js\");\n/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ \"./node_modules/@popperjs/core/lib/utils/mergeByName.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\n\n\n\n\n\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(reference.contextElement) : [],\n popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(popper), state.options.strategy === 'fixed'),\n popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nvar createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/createPopper.js?");
|
|
21
|
-
|
|
22
|
-
/***/ }),
|
|
23
|
-
|
|
24
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js":
|
|
25
|
-
/*!***************************************************************!*\
|
|
26
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***!
|
|
27
|
-
\***************************************************************/
|
|
28
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
29
|
-
|
|
30
|
-
"use strict";
|
|
31
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ contains)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/contains.js?");
|
|
32
|
-
|
|
33
|
-
/***/ }),
|
|
34
|
-
|
|
35
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js":
|
|
36
|
-
/*!****************************************************************************!*\
|
|
37
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***!
|
|
38
|
-
\****************************************************************************/
|
|
39
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
40
|
-
|
|
41
|
-
"use strict";
|
|
42
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getBoundingClientRect)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js?");
|
|
43
|
-
|
|
44
|
-
/***/ }),
|
|
45
|
-
|
|
46
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js":
|
|
47
|
-
/*!**********************************************************************!*\
|
|
48
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***!
|
|
49
|
-
\**********************************************************************/
|
|
50
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
51
|
-
|
|
52
|
-
"use strict";
|
|
53
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getClippingRect)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js\");\n/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js\");\n/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ \"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js\");\n/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(element).position) >= 0;\n var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"])(element) : element;\n\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);\n accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);\n accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);\n accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js?");
|
|
54
|
-
|
|
55
|
-
/***/ }),
|
|
56
|
-
|
|
57
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js":
|
|
58
|
-
/*!***********************************************************************!*\
|
|
59
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***!
|
|
60
|
-
\***********************************************************************/
|
|
61
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
62
|
-
|
|
63
|
-
"use strict";
|
|
64
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getCompositeRect)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;\n var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);\n var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);\n var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(offsetParent);\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(documentElement)) {\n scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent);\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {\n offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js?");
|
|
65
|
-
|
|
66
|
-
/***/ }),
|
|
67
|
-
|
|
68
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js":
|
|
69
|
-
/*!***********************************************************************!*\
|
|
70
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***!
|
|
71
|
-
\***********************************************************************/
|
|
72
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
73
|
-
|
|
74
|
-
"use strict";
|
|
75
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getComputedStyle)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getComputedStyle(element) {\n return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element).getComputedStyle(element);\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js?");
|
|
76
|
-
|
|
77
|
-
/***/ }),
|
|
78
|
-
|
|
79
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js":
|
|
80
|
-
/*!*************************************************************************!*\
|
|
81
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***!
|
|
82
|
-
\*************************************************************************/
|
|
83
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
84
|
-
|
|
85
|
-
"use strict";
|
|
86
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getDocumentElement)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\nfunction getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js?");
|
|
87
|
-
|
|
88
|
-
/***/ }),
|
|
89
|
-
|
|
90
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js":
|
|
91
|
-
/*!**********************************************************************!*\
|
|
92
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***!
|
|
93
|
-
\**********************************************************************/
|
|
94
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
95
|
-
|
|
96
|
-
"use strict";
|
|
97
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getDocumentRect)\n/* harmony export */ });\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n var y = -winScroll.scrollTop;\n\n if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(body || html).direction === 'rtl') {\n x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js?");
|
|
98
|
-
|
|
99
|
-
/***/ }),
|
|
100
|
-
|
|
101
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js":
|
|
102
|
-
/*!***************************************************************************!*\
|
|
103
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***!
|
|
104
|
-
\***************************************************************************/
|
|
105
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
106
|
-
|
|
107
|
-
"use strict";
|
|
108
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getHTMLElementScroll)\n/* harmony export */ });\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js?");
|
|
109
|
-
|
|
110
|
-
/***/ }),
|
|
111
|
-
|
|
112
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js":
|
|
113
|
-
/*!********************************************************************!*\
|
|
114
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***!
|
|
115
|
-
\********************************************************************/
|
|
116
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
117
|
-
|
|
118
|
-
"use strict";
|
|
119
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getLayoutRect)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nfunction getLayoutRect(element) {\n var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js?");
|
|
120
|
-
|
|
121
|
-
/***/ }),
|
|
122
|
-
|
|
123
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js":
|
|
124
|
-
/*!******************************************************************!*\
|
|
125
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***!
|
|
126
|
-
\******************************************************************/
|
|
127
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
128
|
-
|
|
129
|
-
"use strict";
|
|
130
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getNodeName)\n/* harmony export */ });\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js?");
|
|
131
|
-
|
|
132
|
-
/***/ }),
|
|
133
|
-
|
|
134
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js":
|
|
135
|
-
/*!********************************************************************!*\
|
|
136
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***!
|
|
137
|
-
\********************************************************************/
|
|
138
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
139
|
-
|
|
140
|
-
"use strict";
|
|
141
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getNodeScroll)\n/* harmony export */ });\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js\");\n\n\n\n\nfunction getNodeScroll(node) {\n if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {\n return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node);\n } else {\n return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node);\n }\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js?");
|
|
142
|
-
|
|
143
|
-
/***/ }),
|
|
144
|
-
|
|
145
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js":
|
|
146
|
-
/*!**********************************************************************!*\
|
|
147
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***!
|
|
148
|
-
\**********************************************************************/
|
|
149
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
150
|
-
|
|
151
|
-
"use strict";
|
|
152
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getOffsetParent)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\n\n\n\n\n\n\n\nfunction getTrueOffsetParent(element) {\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837\n (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])());\n\n if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element);\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(currentNode)) < 0) {\n var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js?");
|
|
153
|
-
|
|
154
|
-
/***/ }),
|
|
155
|
-
|
|
156
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js":
|
|
157
|
-
/*!********************************************************************!*\
|
|
158
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***!
|
|
159
|
-
\********************************************************************/
|
|
160
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
161
|
-
|
|
162
|
-
"use strict";
|
|
163
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getParentNode)\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\nfunction getParentNode(element) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element) // fallback\n\n );\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js?");
|
|
164
|
-
|
|
165
|
-
/***/ }),
|
|
166
|
-
|
|
167
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js":
|
|
168
|
-
/*!**********************************************************************!*\
|
|
169
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***!
|
|
170
|
-
\**********************************************************************/
|
|
171
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
172
|
-
|
|
173
|
-
"use strict";
|
|
174
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getScrollParent)\n/* harmony export */ });\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n\n\n\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node)) {\n return node;\n }\n\n return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node));\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js?");
|
|
175
|
-
|
|
176
|
-
/***/ }),
|
|
177
|
-
|
|
178
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js":
|
|
179
|
-
/*!**********************************************************************!*\
|
|
180
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***!
|
|
181
|
-
\**********************************************************************/
|
|
182
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
183
|
-
|
|
184
|
-
"use strict";
|
|
185
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getViewportRect)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js\");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js\");\n\n\n\n\nfunction getViewportRect(element, strategy) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(element),\n y: y\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js?");
|
|
186
|
-
|
|
187
|
-
/***/ }),
|
|
188
|
-
|
|
189
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js":
|
|
190
|
-
/*!****************************************************************!*\
|
|
191
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***!
|
|
192
|
-
\****************************************************************/
|
|
193
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
194
|
-
|
|
195
|
-
"use strict";
|
|
196
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getWindow)\n/* harmony export */ });\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js?");
|
|
197
|
-
|
|
198
|
-
/***/ }),
|
|
199
|
-
|
|
200
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js":
|
|
201
|
-
/*!**********************************************************************!*\
|
|
202
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***!
|
|
203
|
-
\**********************************************************************/
|
|
204
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
205
|
-
|
|
206
|
-
"use strict";
|
|
207
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getWindowScroll)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\nfunction getWindowScroll(node) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js?");
|
|
208
|
-
|
|
209
|
-
/***/ }),
|
|
210
|
-
|
|
211
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js":
|
|
212
|
-
/*!**************************************************************************!*\
|
|
213
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***!
|
|
214
|
-
\**************************************************************************/
|
|
215
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
216
|
-
|
|
217
|
-
"use strict";
|
|
218
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getWindowScrollBarX)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js\");\n\n\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(element).scrollLeft;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js?");
|
|
219
|
-
|
|
220
|
-
/***/ }),
|
|
221
|
-
|
|
222
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js":
|
|
223
|
-
/*!*****************************************************************!*\
|
|
224
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***!
|
|
225
|
-
\*****************************************************************/
|
|
226
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
227
|
-
|
|
228
|
-
"use strict";
|
|
229
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isElement: () => (/* binding */ isElement),\n/* harmony export */ isHTMLElement: () => (/* binding */ isHTMLElement),\n/* harmony export */ isShadowRoot: () => (/* binding */ isShadowRoot)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n\n\nfunction isElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js?");
|
|
230
|
-
|
|
231
|
-
/***/ }),
|
|
232
|
-
|
|
233
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":
|
|
234
|
-
/*!***********************************************************************!*\
|
|
235
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***!
|
|
236
|
-
\***********************************************************************/
|
|
237
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
238
|
-
|
|
239
|
-
"use strict";
|
|
240
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isLayoutViewport)\n/* harmony export */ });\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ \"./node_modules/@popperjs/core/lib/utils/userAgent.js\");\n\nfunction isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])());\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js?");
|
|
241
|
-
|
|
242
|
-
/***/ }),
|
|
243
|
-
|
|
244
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":
|
|
245
|
-
/*!*********************************************************************!*\
|
|
246
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***!
|
|
247
|
-
\*********************************************************************/
|
|
248
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
249
|
-
|
|
250
|
-
"use strict";
|
|
251
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isScrollParent)\n/* harmony export */ });\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js?");
|
|
252
|
-
|
|
253
|
-
/***/ }),
|
|
254
|
-
|
|
255
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js":
|
|
256
|
-
/*!*********************************************************************!*\
|
|
257
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***!
|
|
258
|
-
\*********************************************************************/
|
|
259
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
260
|
-
|
|
261
|
-
"use strict";
|
|
262
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isTableElement)\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element)) >= 0;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js?");
|
|
263
|
-
|
|
264
|
-
/***/ }),
|
|
265
|
-
|
|
266
|
-
/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js":
|
|
267
|
-
/*!************************************************************************!*\
|
|
268
|
-
!*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***!
|
|
269
|
-
\************************************************************************/
|
|
270
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
271
|
-
|
|
272
|
-
"use strict";
|
|
273
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ listScrollParents)\n/* harmony export */ });\n/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js\");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js\");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js\");\n\n\n\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(target)));\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js?");
|
|
274
|
-
|
|
275
|
-
/***/ }),
|
|
276
|
-
|
|
277
|
-
/***/ "./node_modules/@popperjs/core/lib/enums.js":
|
|
278
|
-
/*!**************************************************!*\
|
|
279
|
-
!*** ./node_modules/@popperjs/core/lib/enums.js ***!
|
|
280
|
-
\**************************************************/
|
|
281
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
282
|
-
|
|
283
|
-
"use strict";
|
|
284
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ afterMain: () => (/* binding */ afterMain),\n/* harmony export */ afterRead: () => (/* binding */ afterRead),\n/* harmony export */ afterWrite: () => (/* binding */ afterWrite),\n/* harmony export */ auto: () => (/* binding */ auto),\n/* harmony export */ basePlacements: () => (/* binding */ basePlacements),\n/* harmony export */ beforeMain: () => (/* binding */ beforeMain),\n/* harmony export */ beforeRead: () => (/* binding */ beforeRead),\n/* harmony export */ beforeWrite: () => (/* binding */ beforeWrite),\n/* harmony export */ bottom: () => (/* binding */ bottom),\n/* harmony export */ clippingParents: () => (/* binding */ clippingParents),\n/* harmony export */ end: () => (/* binding */ end),\n/* harmony export */ left: () => (/* binding */ left),\n/* harmony export */ main: () => (/* binding */ main),\n/* harmony export */ modifierPhases: () => (/* binding */ modifierPhases),\n/* harmony export */ placements: () => (/* binding */ placements),\n/* harmony export */ popper: () => (/* binding */ popper),\n/* harmony export */ read: () => (/* binding */ read),\n/* harmony export */ reference: () => (/* binding */ reference),\n/* harmony export */ right: () => (/* binding */ right),\n/* harmony export */ start: () => (/* binding */ start),\n/* harmony export */ top: () => (/* binding */ top),\n/* harmony export */ variationPlacements: () => (/* binding */ variationPlacements),\n/* harmony export */ viewport: () => (/* binding */ viewport),\n/* harmony export */ write: () => (/* binding */ write)\n/* harmony export */ });\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/enums.js?");
|
|
285
|
-
|
|
286
|
-
/***/ }),
|
|
287
|
-
|
|
288
|
-
/***/ "./node_modules/@popperjs/core/lib/index.js":
|
|
289
|
-
/*!**************************************************!*\
|
|
290
|
-
!*** ./node_modules/@popperjs/core/lib/index.js ***!
|
|
291
|
-
\**************************************************/
|
|
292
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
293
|
-
|
|
294
|
-
"use strict";
|
|
295
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ afterMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain),\n/* harmony export */ afterRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead),\n/* harmony export */ afterWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite),\n/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),\n/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),\n/* harmony export */ auto: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto),\n/* harmony export */ basePlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements),\n/* harmony export */ beforeMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain),\n/* harmony export */ beforeRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead),\n/* harmony export */ beforeWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite),\n/* harmony export */ bottom: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom),\n/* harmony export */ clippingParents: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),\n/* harmony export */ createPopper: () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),\n/* harmony export */ createPopperBase: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),\n/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ end: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),\n/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),\n/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),\n/* harmony export */ left: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left),\n/* harmony export */ main: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main),\n/* harmony export */ modifierPhases: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases),\n/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),\n/* harmony export */ placements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements),\n/* harmony export */ popper: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),\n/* harmony export */ read: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read),\n/* harmony export */ reference: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference),\n/* harmony export */ right: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right),\n/* harmony export */ start: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start),\n/* harmony export */ top: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top),\n/* harmony export */ variationPlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements),\n/* harmony export */ viewport: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport),\n/* harmony export */ write: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ \"./node_modules/@popperjs/core/lib/modifiers/index.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ \"./node_modules/@popperjs/core/lib/popper.js\");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ \"./node_modules/@popperjs/core/lib/popper-lite.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/index.js?");
|
|
296
|
-
|
|
297
|
-
/***/ }),
|
|
298
|
-
|
|
299
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js":
|
|
300
|
-
/*!******************************************************************!*\
|
|
301
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***!
|
|
302
|
-
\******************************************************************/
|
|
303
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
304
|
-
|
|
305
|
-
"use strict";
|
|
306
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js?");
|
|
307
|
-
|
|
308
|
-
/***/ }),
|
|
309
|
-
|
|
310
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js":
|
|
311
|
-
/*!************************************************************!*\
|
|
312
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***!
|
|
313
|
-
\************************************************************/
|
|
314
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
315
|
-
|
|
316
|
-
"use strict";
|
|
317
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ \"./node_modules/@popperjs/core/lib/dom-utils/contains.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state.placement);\n var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(basePlacement);\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(arrowElement);\n var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;\n var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/arrow.js?");
|
|
318
|
-
|
|
319
|
-
/***/ }),
|
|
320
|
-
|
|
321
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js":
|
|
322
|
-
/*!********************************************************************!*\
|
|
323
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***!
|
|
324
|
-
\********************************************************************/
|
|
325
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
326
|
-
|
|
327
|
-
"use strict";
|
|
328
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ mapToStyles: () => (/* binding */ mapToStyles)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,\n y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0\n };\n}\n\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;\n var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) {\n offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(popper);\n\n if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.placement),\n variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js?");
|
|
329
|
-
|
|
330
|
-
/***/ }),
|
|
331
|
-
|
|
332
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js":
|
|
333
|
-
/*!*********************************************************************!*\
|
|
334
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***!
|
|
335
|
-
\*********************************************************************/
|
|
336
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
337
|
-
|
|
338
|
-
"use strict";
|
|
339
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js?");
|
|
340
|
-
|
|
341
|
-
/***/ }),
|
|
342
|
-
|
|
343
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js":
|
|
344
|
-
/*!***********************************************************!*\
|
|
345
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***!
|
|
346
|
-
\***********************************************************/
|
|
347
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
348
|
-
|
|
349
|
-
"use strict";
|
|
350
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {\n return [];\n }\n\n var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(placement);\n return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n\n var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n }\n\n var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/flip.js?");
|
|
351
|
-
|
|
352
|
-
/***/ }),
|
|
353
|
-
|
|
354
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js":
|
|
355
|
-
/*!***********************************************************!*\
|
|
356
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***!
|
|
357
|
-
\***********************************************************/
|
|
358
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
359
|
-
|
|
360
|
-
"use strict";
|
|
361
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n\n\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/hide.js?");
|
|
362
|
-
|
|
363
|
-
/***/ }),
|
|
364
|
-
|
|
365
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js":
|
|
366
|
-
/*!************************************************************!*\
|
|
367
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***!
|
|
368
|
-
\************************************************************/
|
|
369
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
370
|
-
|
|
371
|
-
"use strict";
|
|
372
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyStyles: () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ arrow: () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ flip: () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ hide: () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ offset: () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"]),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/index.js?");
|
|
373
|
-
|
|
374
|
-
/***/ }),
|
|
375
|
-
|
|
376
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js":
|
|
377
|
-
/*!*************************************************************!*\
|
|
378
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***!
|
|
379
|
-
\*************************************************************/
|
|
380
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
381
|
-
|
|
382
|
-
"use strict";
|
|
383
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ distanceAndSkiddingToXY: () => (/* binding */ distanceAndSkiddingToXY)\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/offset.js?");
|
|
384
|
-
|
|
385
|
-
/***/ }),
|
|
386
|
-
|
|
387
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js":
|
|
388
|
-
/*!********************************************************************!*\
|
|
389
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***!
|
|
390
|
-
\********************************************************************/
|
|
391
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
392
|
-
|
|
393
|
-
"use strict";
|
|
394
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js?");
|
|
395
|
-
|
|
396
|
-
/***/ }),
|
|
397
|
-
|
|
398
|
-
/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js":
|
|
399
|
-
/*!**********************************************************************!*\
|
|
400
|
-
!*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***!
|
|
401
|
-
\**********************************************************************/
|
|
402
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
403
|
-
|
|
404
|
-
"use strict";
|
|
405
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ \"./node_modules/@popperjs/core/lib/utils/getAltAxis.js\");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ \"./node_modules/@popperjs/core/lib/utils/within.js\");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state.placement);\n var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement);\n var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n\n var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js?");
|
|
406
|
-
|
|
407
|
-
/***/ }),
|
|
408
|
-
|
|
409
|
-
/***/ "./node_modules/@popperjs/core/lib/popper-lite.js":
|
|
410
|
-
/*!********************************************************!*\
|
|
411
|
-
!*** ./node_modules/@popperjs/core/lib/popper-lite.js ***!
|
|
412
|
-
\********************************************************/
|
|
413
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
414
|
-
|
|
415
|
-
"use strict";
|
|
416
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/popper-lite.js?");
|
|
417
|
-
|
|
418
|
-
/***/ }),
|
|
419
|
-
|
|
420
|
-
/***/ "./node_modules/@popperjs/core/lib/popper.js":
|
|
421
|
-
/*!***************************************************!*\
|
|
422
|
-
!*** ./node_modules/@popperjs/core/lib/popper.js ***!
|
|
423
|
-
\***************************************************/
|
|
424
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
425
|
-
|
|
426
|
-
"use strict";
|
|
427
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles),\n/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles),\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),\n/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"]),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners),\n/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip),\n/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide),\n/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow)\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/createPopper.js\");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ \"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js\");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ \"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js\");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js\");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ \"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js\");\n/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ \"./node_modules/@popperjs/core/lib/modifiers/offset.js\");\n/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ \"./node_modules/@popperjs/core/lib/modifiers/flip.js\");\n/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ \"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js\");\n/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ \"./node_modules/@popperjs/core/lib/modifiers/arrow.js\");\n/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ \"./node_modules/@popperjs/core/lib/modifiers/hide.js\");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ \"./node_modules/@popperjs/core/lib/popper-lite.js\");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ \"./node_modules/@popperjs/core/lib/modifiers/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/popper.js?");
|
|
428
|
-
|
|
429
|
-
/***/ }),
|
|
430
|
-
|
|
431
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js":
|
|
432
|
-
/*!***********************************************************************!*\
|
|
433
|
-
!*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***!
|
|
434
|
-
\***********************************************************************/
|
|
435
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
436
|
-
|
|
437
|
-
"use strict";
|
|
438
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ computeAutoPlacement)\n/* harmony export */ });\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n\n\n\n\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;\n var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement);\n var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {\n return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) === variation;\n }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js?");
|
|
439
|
-
|
|
440
|
-
/***/ }),
|
|
441
|
-
|
|
442
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js":
|
|
443
|
-
/*!*****************************************************************!*\
|
|
444
|
-
!*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***!
|
|
445
|
-
\*****************************************************************/
|
|
446
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
447
|
-
|
|
448
|
-
"use strict";
|
|
449
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ computeOffsets)\n/* harmony export */ });\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n\n\n\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement) : null;\n var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/computeOffsets.js?");
|
|
450
|
-
|
|
451
|
-
/***/ }),
|
|
452
|
-
|
|
453
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js":
|
|
454
|
-
/*!***********************************************************!*\
|
|
455
|
-
!*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***!
|
|
456
|
-
\***********************************************************/
|
|
457
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
458
|
-
|
|
459
|
-
"use strict";
|
|
460
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ debounce)\n/* harmony export */ });\nfunction debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/debounce.js?");
|
|
461
|
-
|
|
462
|
-
/***/ }),
|
|
463
|
-
|
|
464
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js":
|
|
465
|
-
/*!*****************************************************************!*\
|
|
466
|
-
!*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***!
|
|
467
|
-
\*****************************************************************/
|
|
468
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
469
|
-
|
|
470
|
-
"use strict";
|
|
471
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ detectOverflow)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js\");\n/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ \"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ \"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js\");\n/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ \"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js\");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));\n var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.elements.reference);\n var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/detectOverflow.js?");
|
|
472
|
-
|
|
473
|
-
/***/ }),
|
|
474
|
-
|
|
475
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js":
|
|
476
|
-
/*!******************************************************************!*\
|
|
477
|
-
!*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***!
|
|
478
|
-
\******************************************************************/
|
|
479
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
480
|
-
|
|
481
|
-
"use strict";
|
|
482
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ expandToHashMap)\n/* harmony export */ });\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js?");
|
|
483
|
-
|
|
484
|
-
/***/ }),
|
|
485
|
-
|
|
486
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js":
|
|
487
|
-
/*!*************************************************************!*\
|
|
488
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***!
|
|
489
|
-
\*************************************************************/
|
|
490
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
491
|
-
|
|
492
|
-
"use strict";
|
|
493
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getAltAxis)\n/* harmony export */ });\nfunction getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getAltAxis.js?");
|
|
494
|
-
|
|
495
|
-
/***/ }),
|
|
496
|
-
|
|
497
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js":
|
|
498
|
-
/*!*******************************************************************!*\
|
|
499
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***!
|
|
500
|
-
\*******************************************************************/
|
|
501
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
502
|
-
|
|
503
|
-
"use strict";
|
|
504
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getBasePlacement)\n/* harmony export */ });\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js?");
|
|
505
|
-
|
|
506
|
-
/***/ }),
|
|
507
|
-
|
|
508
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js":
|
|
509
|
-
/*!*********************************************************************!*\
|
|
510
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***!
|
|
511
|
-
\*********************************************************************/
|
|
512
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
513
|
-
|
|
514
|
-
"use strict";
|
|
515
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getFreshSideObject)\n/* harmony export */ });\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js?");
|
|
516
|
-
|
|
517
|
-
/***/ }),
|
|
518
|
-
|
|
519
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js":
|
|
520
|
-
/*!***************************************************************************!*\
|
|
521
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***!
|
|
522
|
-
\***************************************************************************/
|
|
523
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
524
|
-
|
|
525
|
-
"use strict";
|
|
526
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getMainAxisFromPlacement)\n/* harmony export */ });\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js?");
|
|
527
|
-
|
|
528
|
-
/***/ }),
|
|
529
|
-
|
|
530
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js":
|
|
531
|
-
/*!***********************************************************************!*\
|
|
532
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***!
|
|
533
|
-
\***********************************************************************/
|
|
534
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
535
|
-
|
|
536
|
-
"use strict";
|
|
537
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getOppositePlacement)\n/* harmony export */ });\nvar hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js?");
|
|
538
|
-
|
|
539
|
-
/***/ }),
|
|
540
|
-
|
|
541
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js":
|
|
542
|
-
/*!********************************************************************************!*\
|
|
543
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***!
|
|
544
|
-
\********************************************************************************/
|
|
545
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
546
|
-
|
|
547
|
-
"use strict";
|
|
548
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getOppositeVariationPlacement)\n/* harmony export */ });\nvar hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js?");
|
|
549
|
-
|
|
550
|
-
/***/ }),
|
|
551
|
-
|
|
552
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js":
|
|
553
|
-
/*!***************************************************************!*\
|
|
554
|
-
!*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***!
|
|
555
|
-
\***************************************************************/
|
|
556
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
557
|
-
|
|
558
|
-
"use strict";
|
|
559
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getVariation)\n/* harmony export */ });\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/getVariation.js?");
|
|
560
|
-
|
|
561
|
-
/***/ }),
|
|
562
|
-
|
|
563
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/math.js":
|
|
564
|
-
/*!*******************************************************!*\
|
|
565
|
-
!*** ./node_modules/@popperjs/core/lib/utils/math.js ***!
|
|
566
|
-
\*******************************************************/
|
|
567
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
568
|
-
|
|
569
|
-
"use strict";
|
|
570
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ max: () => (/* binding */ max),\n/* harmony export */ min: () => (/* binding */ min),\n/* harmony export */ round: () => (/* binding */ round)\n/* harmony export */ });\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/math.js?");
|
|
571
|
-
|
|
572
|
-
/***/ }),
|
|
573
|
-
|
|
574
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js":
|
|
575
|
-
/*!**************************************************************!*\
|
|
576
|
-
!*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***!
|
|
577
|
-
\**************************************************************/
|
|
578
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
579
|
-
|
|
580
|
-
"use strict";
|
|
581
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ mergeByName)\n/* harmony export */ });\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/mergeByName.js?");
|
|
582
|
-
|
|
583
|
-
/***/ }),
|
|
584
|
-
|
|
585
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js":
|
|
586
|
-
/*!*********************************************************************!*\
|
|
587
|
-
!*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***!
|
|
588
|
-
\*********************************************************************/
|
|
589
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
590
|
-
|
|
591
|
-
"use strict";
|
|
592
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ mergePaddingObject)\n/* harmony export */ });\n/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ \"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js\");\n\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(), paddingObject);\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js?");
|
|
593
|
-
|
|
594
|
-
/***/ }),
|
|
595
|
-
|
|
596
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js":
|
|
597
|
-
/*!*****************************************************************!*\
|
|
598
|
-
!*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***!
|
|
599
|
-
\*****************************************************************/
|
|
600
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
601
|
-
|
|
602
|
-
"use strict";
|
|
603
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ orderModifiers)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/orderModifiers.js?");
|
|
604
|
-
|
|
605
|
-
/***/ }),
|
|
606
|
-
|
|
607
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js":
|
|
608
|
-
/*!*******************************************************************!*\
|
|
609
|
-
!*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***!
|
|
610
|
-
\*******************************************************************/
|
|
611
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
612
|
-
|
|
613
|
-
"use strict";
|
|
614
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rectToClientRect)\n/* harmony export */ });\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js?");
|
|
615
|
-
|
|
616
|
-
/***/ }),
|
|
617
|
-
|
|
618
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js":
|
|
619
|
-
/*!************************************************************!*\
|
|
620
|
-
!*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***!
|
|
621
|
-
\************************************************************/
|
|
622
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
623
|
-
|
|
624
|
-
"use strict";
|
|
625
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getUAString)\n/* harmony export */ });\nfunction getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/userAgent.js?");
|
|
626
|
-
|
|
627
|
-
/***/ }),
|
|
628
|
-
|
|
629
|
-
/***/ "./node_modules/@popperjs/core/lib/utils/within.js":
|
|
630
|
-
/*!*********************************************************!*\
|
|
631
|
-
!*** ./node_modules/@popperjs/core/lib/utils/within.js ***!
|
|
632
|
-
\*********************************************************/
|
|
633
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
634
|
-
|
|
635
|
-
"use strict";
|
|
636
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ within: () => (/* binding */ within),\n/* harmony export */ withinMaxClamp: () => (/* binding */ withinMaxClamp)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\nfunction within(min, value, max) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));\n}\nfunction withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}\n\n//# sourceURL=webpack://PhyloIO/./node_modules/@popperjs/core/lib/utils/within.js?");
|
|
637
|
-
|
|
638
|
-
/***/ }),
|
|
639
|
-
|
|
640
13
|
/***/ "./node_modules/asn1.js/lib/asn1.js":
|
|
641
14
|
/*!******************************************!*\
|
|
642
15
|
!*** ./node_modules/asn1.js/lib/asn1.js ***!
|
|
@@ -852,17 +225,6 @@ eval("/* module decorator */ module = __webpack_require__.nmd(module);\n(functio
|
|
|
852
225
|
|
|
853
226
|
/***/ }),
|
|
854
227
|
|
|
855
|
-
/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js":
|
|
856
|
-
/*!*********************************************************!*\
|
|
857
|
-
!*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***!
|
|
858
|
-
\*********************************************************/
|
|
859
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
860
|
-
|
|
861
|
-
"use strict";
|
|
862
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Alert: () => (/* binding */ Alert),\n/* harmony export */ Button: () => (/* binding */ Button),\n/* harmony export */ Carousel: () => (/* binding */ Carousel),\n/* harmony export */ Collapse: () => (/* binding */ Collapse),\n/* harmony export */ Dropdown: () => (/* binding */ Dropdown),\n/* harmony export */ Modal: () => (/* binding */ Modal),\n/* harmony export */ Offcanvas: () => (/* binding */ Offcanvas),\n/* harmony export */ Popover: () => (/* binding */ Popover),\n/* harmony export */ ScrollSpy: () => (/* binding */ ScrollSpy),\n/* harmony export */ Tab: () => (/* binding */ Tab),\n/* harmony export */ Toast: () => (/* binding */ Toast),\n/* harmony export */ Tooltip: () => (/* binding */ Tooltip)\n/* harmony export */ });\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/index.js\");\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/popper.js\");\n/*!\n * Bootstrap v5.1.2 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = `#${hrefAttr.split('#')[1]}`;\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = obj => {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (typeof obj.jquery !== 'undefined') {\n obj = obj[0];\n }\n\n return typeof obj.nodeType !== 'undefined';\n};\n\nconst getElement = obj => {\n if (isElement(obj)) {\n // it's a jQuery object or a node element\n return obj.jquery ? obj[0] : obj;\n }\n\n if (typeof obj === 'string' && obj.length > 0) {\n return document.querySelector(obj);\n }\n\n return null;\n};\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = value && isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n });\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n return getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n};\n\nconst getjQuery = () => {\n const {\n jQuery\n } = window;\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n DOMContentLoadedCallbacks.forEach(callback => callback());\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];\n }\n\n const listLength = list.length;\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst customEventsRegex = /^(mouseenter|mouseleave)/i;\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target;\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n } // To please ESLint\n\n\n return null;\n };\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events);\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]];\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event;\n }\n }\n\n return null;\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string';\n const originalHandler = delegation ? delegationFn : handler;\n let typeEvent = getTypeEvent(originalTypeEvent);\n const isNative = nativeEvents.has(typeEvent);\n\n if (!isNative) {\n typeEvent = originalTypeEvent;\n }\n\n return [delegation, originalHandler, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n if (!handler) {\n handler = delegationFn;\n delegationFn = null;\n } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n\n if (customEventsRegex.test(originalTypeEvent)) {\n const wrapFn = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n if (delegationFn) {\n delegationFn = wrapFn(delegationFn);\n } else {\n handler = wrapFn(handler);\n }\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n const events = getEvent(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff;\n return;\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n fn.delegationSelector = delegation ? handler : null;\n fn.originalHandler = originalHandler;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, delegation);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false);\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getEvent(element);\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return;\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n return;\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n });\n }\n\n const storeElementEvent = events[typeEvent] || {};\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n }\n });\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n const isNative = nativeEvents.has(typeEvent);\n let jQueryEvent;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n let evt = null;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent(typeEvent, bubbles, true);\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n });\n } // merge custom information in our event\n\n\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key];\n }\n\n });\n });\n }\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.2';\n\nclass BaseComponent {\n constructor(element) {\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n Object.getOwnPropertyNames(this).forEach(propertyName => {\n this[propertyName] = null;\n });\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n /** Static */\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$d = 'alert';\nconst DATA_KEY$c = 'bs.alert';\nconst EVENT_KEY$c = `.${DATA_KEY$c}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$c}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$c}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$c = 'button';\nconst DATA_KEY$b = 'bs.button';\nconst EVENT_KEY$b = `.${DATA_KEY$b}`;\nconst DATA_API_KEY$7 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(val) {\n if (val === 'true') {\n return true;\n }\n\n if (val === 'false') {\n return false;\n }\n\n if (val === Number(val).toString()) {\n return Number(val);\n }\n\n if (val === '' || val === 'null') {\n return null;\n }\n\n return val;\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n });\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect();\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n };\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n };\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst NODE_TEXT = 3;\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode;\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor);\n }\n\n ancestor = ancestor.parentNode;\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$b = 'carousel';\nconst DATA_KEY$a = 'bs.carousel';\nconst EVENT_KEY$a = `.${DATA_KEY$a}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst SWIPE_THRESHOLD = 40;\nconst Default$a = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n};\nconst DefaultType$a = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n};\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n};\nconst EVENT_SLIDE = `slide${EVENT_KEY$a}`;\nconst EVENT_SLID = `slid${EVENT_KEY$a}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SELECTOR_ACTIVE$1 = '.active';\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_INDICATOR = '[data-bs-target]';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval();\n\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n const activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, this._items[index]);\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default$a,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n };\n typeCheckConfig(NAME$b, config, DefaultType$a);\n return config;\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0;\n\n if (!direction) {\n return;\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n const hasPointerPenTouch = event => {\n return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n };\n\n const start = event => {\n if (hasPointerPenTouch(event)) {\n this.touchStartX = event.clientX;\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX;\n }\n };\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;\n };\n\n const end = event => {\n if (hasPointerPenTouch(event)) {\n this.touchDeltaX = event.clientX - this.touchStartX;\n }\n\n this._handleSwipe();\n\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n }\n };\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());\n });\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(direction);\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];\n return this._items.indexOf(element);\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT;\n return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget);\n\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE$2);\n indicators[i].setAttribute('aria-current', 'true');\n break;\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder);\n\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n const activeElementIndex = this._getItemIndex(activeElement);\n\n const nextElement = element || this._getItemByOrder(order, activeElement);\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const isCycling = Boolean(this._interval);\n const isNext = order === ORDER_NEXT;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n const eventDirectionName = this._orderToDirection(order);\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n\n if (this._isSliding) {\n return;\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n this._activeElement = nextElement;\n\n const triggerSlidEvent = () => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n };\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n setTimeout(triggerSlidEvent, 0);\n };\n\n this._queueCallback(completeCallBack, activeElement, true);\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n triggerSlidEvent();\n }\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction;\n }\n\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order;\n }\n\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static carouselInterface(element, config) {\n const data = Carousel.getOrCreateInstance(element, config);\n let {\n _config\n } = data;\n\n if (typeof config === 'object') {\n _config = { ..._config,\n ...config\n };\n }\n\n const action = typeof config === 'string' ? config : _config.slide;\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`);\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config);\n });\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n const config = { ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n };\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel.carouselInterface(target, config);\n\n if (slideIndex) {\n Carousel.getInstance(target).to(slideIndex);\n }\n\n event.preventDefault();\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));\n }\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$a = 'collapse';\nconst DATA_KEY$9 = 'bs.collapse';\nconst EVENT_KEY$9 = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst Default$9 = {\n toggle: true,\n parent: null\n};\nconst DefaultType$9 = {\n toggle: 'boolean',\n parent: '(null|element)'\n};\nconst EVENT_SHOW$5 = `show${EVENT_KEY$9}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._isTransitioning = false;\n this._config = this._getConfig(config);\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i];\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);\n\n if (selector !== null && filterElement.length) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let actives = [];\n let activesData;\n\n if (this._config.parent) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n }\n\n const container = SelectorEngine.findOne(this._selector);\n\n if (actives.length) {\n const tempActiveData = actives.find(elem => container !== elem);\n activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.getOrCreateInstance(elemActive, {\n toggle: false\n }).hide();\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY$9, null);\n }\n });\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$5);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n const triggerArrayLength = this._triggerArray.length;\n\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i];\n const elem = getElementFromSelector(trigger);\n\n if (elem && !this._isShown(elem)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$5);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default$9,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n };\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n typeCheckConfig(NAME$a, config, DefaultType$9);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n });\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED);\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED);\n }\n\n elem.setAttribute('aria-expanded', isOpen);\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n selectorElements.forEach(element => {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n });\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$9 = 'dropdown';\nconst DATA_KEY$8 = 'bs.dropdown';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst SPACE_KEY = 'Space';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$8}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_NAVBAR = 'navbar';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]';\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst Default$8 = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null,\n autoClose: true\n};\nconst DefaultType$8 = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)',\n autoClose: '(boolean|string)'\n};\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown(this._menu)) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar\n\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none');\n } else {\n this._createPopper(parent);\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown(this._menu)) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);\n }\n\n _getConfig(config) {\n config = { ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n };\n typeCheckConfig(NAME$9, config, this.constructor.DefaultType);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$9.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper(parent) {\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);\n this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig);\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static');\n }\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0];\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {\n return;\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Dropdown.getInstance(toggles[i]);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n if (!context._isShown()) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event) {\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode;\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n return;\n }\n\n const isActive = this.classList.contains(CLASS_NAME_SHOW$6);\n\n if (!isActive && event.key === ESCAPE_KEY$2) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (isDisabled(this)) {\n return;\n }\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (event.key === ESCAPE_KEY$2) {\n instance.hide();\n return;\n }\n\n if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n if (!isActive) {\n instance.show();\n }\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus();\n }\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);\n }\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProp);\n\n const calculatedValue = window.getComputedStyle(element)[styleProp];\n element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, 'paddingRight');\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n }\n\n _saveInitialAttribute(element, styleProp) {\n const actualValue = element.style[styleProp];\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProp, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProp) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProp);\n\n if (typeof value === 'undefined') {\n element.style.removeProperty(styleProp);\n } else {\n Manipulator.removeDataAttribute(element, styleProp);\n element.style[styleProp] = value;\n }\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n } else {\n SelectorEngine.find(selector, this._element).forEach(callBack);\n }\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst Default$7 = {\n className: 'modal-backdrop',\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n isAnimated: false,\n rootElement: 'body',\n // give the choice to place backdrop under different elements\n clickCallback: null\n};\nconst DefaultType$7 = {\n className: 'string',\n isVisible: 'boolean',\n isAnimated: 'boolean',\n rootElement: '(element|string)',\n clickCallback: '(function|null)'\n};\nconst NAME$8 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;\n\nclass Backdrop {\n constructor(config) {\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n if (this._config.isAnimated) {\n reflow(this._getElement());\n }\n\n this._getElement().classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _getConfig(config) {\n config = { ...Default$7,\n ...(typeof config === 'object' ? config : {})\n }; // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n\n config.rootElement = getElement(config.rootElement);\n typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n this._config.rootElement.append(this._getElement());\n\n EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst Default$6 = {\n trapElement: null,\n // The element to trap focus inside of\n autofocus: true\n};\nconst DefaultType$6 = {\n trapElement: 'element',\n autofocus: 'boolean'\n};\nconst NAME$7 = 'focustrap';\nconst DATA_KEY$7 = 'bs.focustrap';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\n\nclass FocusTrap {\n constructor(config) {\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n activate() {\n const {\n trapElement,\n autofocus\n } = this._config;\n\n if (this._isActive) {\n return;\n }\n\n if (autofocus) {\n trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$7);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n target\n } = event;\n const {\n trapElement\n } = this._config;\n\n if (target === document || target === trapElement || trapElement.contains(target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n _getConfig(config) {\n config = { ...Default$6,\n ...(typeof config === 'object' ? config : {})\n };\n typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$6 = 'modal';\nconst DATA_KEY$6 = 'bs.modal';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n focus: true\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n};\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$3 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$6}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._config = this._getConfig(config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n if (this._isAnimated()) {\n this._isTransitioning = true;\n }\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n\n const isAnimated = this._isAnimated();\n\n if (isAnimated) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS);\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n this._queueCallback(() => this._hideModal(), this._element, isAnimated);\n }\n\n dispose() {\n [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _getConfig(config) {\n config = { ...Default$5,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n };\n typeCheckConfig(NAME$6, config, DefaultType$5);\n return config;\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated();\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n if (isAnimated) {\n reflow(this._element);\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, isAnimated);\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY$1) {\n event.preventDefault();\n this.hide();\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {\n this._triggerBackdropTransition();\n }\n });\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());\n } else {\n EventHandler.off(window, EVENT_RESIZE);\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n });\n }\n\n _showBackdrop(callback) {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (this._config.backdrop === true) {\n this.hide();\n } else if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n }\n });\n\n this._backdrop.show(callback);\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const {\n classList,\n scrollHeight,\n style\n } = this._element;\n const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed\n\n if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n style.overflowY = 'hidden';\n }\n\n classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n this._queueCallback(() => {\n style.overflowY = '';\n }, this._dialog);\n }\n }, this._dialog);\n\n this._element.focus();\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {\n this._element.style.paddingLeft = `${scrollbarWidth}px`;\n }\n\n if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {\n this._element.style.paddingRight = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$3, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking moddal toggler while another one is open\n\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (allReadyOpen) {\n Modal.getInstance(allReadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$5 = 'offcanvas';\nconst DATA_KEY$5 = 'bs.offcanvas';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;\nconst ESCAPE_KEY = 'Escape';\nconst Default$4 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$4 = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$2 = `show${EVENT_KEY$5}`;\nconst EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;\nconst EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;\nconst EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._config = this._getConfig(config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get NAME() {\n return NAME$5;\n }\n\n static get Default() {\n return Default$4;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._element.style.visibility = 'visible';\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n const completeCallBack = () => {\n if (!this._config.scroll) {\n this._focustrap.activate();\n }\n\n EventHandler.trigger(this._element, EVENT_SHOWN$2, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.remove(CLASS_NAME_SHOW$3);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._element.style.visibility = 'hidden';\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$2);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default$4,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n };\n typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n }\n\n _initializeBackDrop() {\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible: this._config.backdrop,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: () => this.hide()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide();\n }\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$2, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (allReadyOpen && allReadyOpen !== target) {\n Offcanvas.getInstance(allReadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));\nenableDismissTrigger(Offcanvas);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n }\n\n const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute.\n\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attributeName)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const element = elements[i];\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n attributeList.forEach(attribute => {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n });\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$4 = 'tooltip';\nconst DATA_KEY$4 = 'bs.tooltip';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst CLASS_PREFIX$1 = 'bs-tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n};\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n};\nconst Event$2 = {\n HIDE: `hide${EVENT_KEY$4}`,\n HIDDEN: `hidden${EVENT_KEY$4}`,\n SHOW: `show${EVENT_KEY$4}`,\n SHOWN: `shown${EVENT_KEY$4}`,\n INSERTED: `inserted${EVENT_KEY$4}`,\n CLICK: `click${EVENT_KEY$4}`,\n FOCUSIN: `focusin${EVENT_KEY$4}`,\n FOCUSOUT: `focusout${EVENT_KEY$4}`,\n MOUSEENTER: `mouseenter${EVENT_KEY$4}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY$4}`\n};\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst HOVER_STATE_SHOW = 'show';\nconst HOVER_STATE_OUT = 'out';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element); // private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this._config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get NAME() {\n return NAME$4;\n }\n\n static get Event() {\n return Event$2;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this.tip) {\n this.tip.remove();\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n // This will be removed later in favor of a `setContent` method\n\n\n if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n this._disposePopper();\n\n this.tip.remove();\n this.tip = null;\n }\n\n const tip = this.getTipElement();\n const tipId = getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n\n this._element.setAttribute('aria-describedby', tipId);\n\n if (this._config.animation) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n\n const attachment = this._getAttachment(placement);\n\n this._addAttachmentClass(attachment);\n\n const {\n container\n } = this._config;\n Data.set(tip, this.constructor.DATA_KEY, this);\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED);\n }\n\n if (this._popper) {\n this._popper.update();\n } else {\n this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n const customClass = this._resolvePossibleFunction(this._config.customClass);\n\n if (customClass) {\n tip.classList.add(...customClass.split(' '));\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop);\n });\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState;\n this._hoverState = null;\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this);\n }\n };\n\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n this._queueCallback(complete, this.tip, isAnimated);\n }\n\n hide() {\n if (!this._popper) {\n return;\n }\n\n const tip = this.getTipElement();\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW) {\n tip.remove();\n }\n\n this._cleanTipClass();\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);\n\n this._disposePopper();\n };\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n this._queueCallback(complete, this.tip, isAnimated);\n\n this._hoverState = '';\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update();\n }\n } // Protected\n\n\n isWithContent() {\n return Boolean(this.getTitle());\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip;\n }\n\n const element = document.createElement('div');\n element.innerHTML = this._config.template;\n const tip = element.children[0];\n this.setContent(tip);\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n this.tip = tip;\n return this.tip;\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);\n }\n\n _sanitizeAndSetContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!content && templateElement) {\n templateElement.remove();\n return;\n } // we use append for html objects to maintain js events\n\n\n this.setElementContent(templateElement, content);\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return;\n }\n\n if (isElement(content)) {\n content = getElement(content); // content is a DOM node or a jQuery\n\n if (this._config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = '';\n element.append(content);\n }\n } else {\n element.textContent = content.textContent;\n }\n\n return;\n }\n\n if (this._config.html) {\n if (this._config.sanitize) {\n content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);\n }\n\n element.innerHTML = content;\n } else {\n element.textContent = content;\n }\n }\n\n getTitle() {\n const title = this._element.getAttribute('data-bs-original-title') || this._config.title;\n\n return this._resolvePossibleFunction(title);\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end';\n }\n\n if (attachment === 'left') {\n return 'start';\n }\n\n return attachment;\n } // Private\n\n\n _initializeOnDelegatedTarget(event, context) {\n return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(content) {\n return typeof content === 'function' ? content.call(this._element) : content;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data);\n }\n }\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;\n EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));\n EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));\n }\n });\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._config.selector) {\n this._config = { ...this._config,\n trigger: 'manual',\n selector: ''\n };\n } else {\n this._fixTitle();\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '');\n\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('title', '');\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context);\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context._config.delay || !context._config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context._config.delay.show);\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context);\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context._config.delay || !context._config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context._config.delay.hide);\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr];\n }\n });\n config = { ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n } // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n\n return config;\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement();\n const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g');\n const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);\n\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));\n }\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX$1;\n }\n\n _handlePopperPlacementChange(popperData) {\n const {\n state\n } = popperData;\n\n if (!state) {\n return;\n }\n\n this.tip = state.elements.popper;\n\n this._cleanTipClass();\n\n this._addAttachmentClass(this._getAttachment(state.placement));\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$3 = 'popover';\nconst DATA_KEY$3 = 'bs.popover';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst CLASS_PREFIX = 'bs-popover';\nconst Default$2 = { ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(string|element|function)'\n};\nconst Event$1 = {\n HIDE: `hide${EVENT_KEY$3}`,\n HIDDEN: `hidden${EVENT_KEY$3}`,\n SHOW: `show${EVENT_KEY$3}`,\n SHOWN: `shown${EVENT_KEY$3}`,\n INSERTED: `inserted${EVENT_KEY$3}`,\n CLICK: `click${EVENT_KEY$3}`,\n FOCUSIN: `focusin${EVENT_KEY$3}`,\n FOCUSOUT: `focusout${EVENT_KEY$3}`,\n MOUSEENTER: `mouseenter${EVENT_KEY$3}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY$3}`\n};\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get NAME() {\n return NAME$3;\n }\n\n static get Event() {\n return Event$1;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n } // Overrides\n\n\n isWithContent() {\n return this.getTitle() || this._getContent();\n }\n\n setContent(tip) {\n this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);\n\n this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);\n } // Private\n\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n _getBasicClassPrefix() {\n return CLASS_PREFIX;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n};\nconst DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n};\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_SCROLL = `scroll${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;\nconst SELECTOR_DROPDOWN$1 = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst METHOD_OFFSET = 'offset';\nconst METHOD_POSITION = 'position';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;\n this._config = this._getConfig(config);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());\n this.refresh();\n\n this._process();\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element);\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;\n\n if (target) {\n const targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {\n this._offsets.push(item[0]);\n\n this._targets.push(item[1]);\n });\n }\n\n dispose() {\n EventHandler.off(this._scrollElement, EVENT_KEY$2);\n super.dispose();\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default$1,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n };\n config.target = getElement(config.target) || document.documentElement;\n typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n }\n\n _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset;\n\n const scrollHeight = this._getScrollHeight();\n\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`);\n const link = SelectorEngine.findOne(queries.join(','), this._config.target);\n link.classList.add(CLASS_NAME_ACTIVE$1);\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);\n } else {\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item\n\n SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {\n SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));\n });\n });\n }\n\n EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _clear() {\n SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active';\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$1;\n } // Public\n\n\n show() {\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n return;\n }\n\n let previous;\n const target = getElementFromSelector(this._element);\n\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = SelectorEngine.find(itemSelector, listElement);\n previous = previous[previous.length - 1];\n }\n\n const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {\n relatedTarget: this._element\n }) : null;\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {\n relatedTarget: previous\n });\n\n if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {\n return;\n }\n\n this._activate(this._element, listElement);\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN$1, {\n relatedTarget: this._element\n });\n EventHandler.trigger(this._element, EVENT_SHOWN$1, {\n relatedTarget: previous\n });\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n } // Private\n\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);\n const active = activeElements[0];\n const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);\n\n const complete = () => this._transitionComplete(element, active, callback);\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW$1);\n\n this._queueCallback(complete, element, true);\n } else {\n complete();\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE);\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$1)) {\n element.classList.add(CLASS_NAME_SHOW$1);\n }\n\n let parent = element.parentNode;\n\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const data = Tab.getOrCreateInstance(this);\n data.show();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.2): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element);\n this._config = this._getConfig(config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n\n this._setListeners();\n } // Getters\n\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get Default() {\n return Default;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n this._element.classList.remove(CLASS_NAME_SHOW);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n } // Private\n\n\n _getConfig(config) {\n config = { ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' && config ? config : {})\n };\n typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n }\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n this._hasMouseInteraction = isInteracting;\n break;\n\n case 'focusin':\n case 'focusout':\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n\n if (isInteracting) {\n this._clearTimeout();\n\n return;\n }\n\n const nextElement = event.relatedTarget;\n\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n\n}\n\nenableDismissTrigger(Toast);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast);\n\n\n//# sourceMappingURL=bootstrap.esm.js.map\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/bootstrap/dist/js/bootstrap.esm.js?");
|
|
863
|
-
|
|
864
|
-
/***/ }),
|
|
865
|
-
|
|
866
228
|
/***/ "./node_modules/brorand/index.js":
|
|
867
229
|
/*!***************************************!*\
|
|
868
230
|
!*** ./node_modules/brorand/index.js ***!
|
|
@@ -1218,83 +580,6 @@ eval("\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = export
|
|
|
1218
580
|
|
|
1219
581
|
/***/ }),
|
|
1220
582
|
|
|
1221
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/bootstrap/dist/css/bootstrap.css":
|
|
1222
|
-
/*!*********************************************************************************************!*\
|
|
1223
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/bootstrap/dist/css/bootstrap.css ***!
|
|
1224
|
-
\*********************************************************************************************/
|
|
1225
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1226
|
-
|
|
1227
|
-
"use strict";
|
|
1228
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\n/*!\\n * Bootstrap v5.1.2 (https://getbootstrap.com/)\\n * Copyright 2011-2021 The Bootstrap Authors\\n * Copyright 2011-2021 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\\n */\\n:root {\\n --bs-blue: #0d6efd;\\n --bs-indigo: #6610f2;\\n --bs-purple: #6f42c1;\\n --bs-pink: #d63384;\\n --bs-red: #dc3545;\\n --bs-orange: #fd7e14;\\n --bs-yellow: #ffc107;\\n --bs-green: #198754;\\n --bs-teal: #20c997;\\n --bs-cyan: #0dcaf0;\\n --bs-white: #fff;\\n --bs-gray: #6c757d;\\n --bs-gray-dark: #343a40;\\n --bs-gray-100: #f8f9fa;\\n --bs-gray-200: #e9ecef;\\n --bs-gray-300: #dee2e6;\\n --bs-gray-400: #ced4da;\\n --bs-gray-500: #adb5bd;\\n --bs-gray-600: #6c757d;\\n --bs-gray-700: #495057;\\n --bs-gray-800: #343a40;\\n --bs-gray-900: #212529;\\n --bs-primary: #0d6efd;\\n --bs-secondary: #6c757d;\\n --bs-success: #198754;\\n --bs-info: #0dcaf0;\\n --bs-warning: #ffc107;\\n --bs-danger: #dc3545;\\n --bs-light: #f8f9fa;\\n --bs-dark: #212529;\\n --bs-primary-rgb: 13, 110, 253;\\n --bs-secondary-rgb: 108, 117, 125;\\n --bs-success-rgb: 25, 135, 84;\\n --bs-info-rgb: 13, 202, 240;\\n --bs-warning-rgb: 255, 193, 7;\\n --bs-danger-rgb: 220, 53, 69;\\n --bs-light-rgb: 248, 249, 250;\\n --bs-dark-rgb: 33, 37, 41;\\n --bs-white-rgb: 255, 255, 255;\\n --bs-black-rgb: 0, 0, 0;\\n --bs-body-color-rgb: 33, 37, 41;\\n --bs-body-bg-rgb: 255, 255, 255;\\n --bs-font-sans-serif: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, \\\"Noto Sans\\\", \\\"Liberation Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";\\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace;\\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\\n --bs-body-font-family: var(--bs-font-sans-serif);\\n --bs-body-font-size: 1rem;\\n --bs-body-font-weight: 400;\\n --bs-body-line-height: 1.5;\\n --bs-body-color: #212529;\\n --bs-body-bg: #fff;\\n}\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box;\\n}\\n\\n@media (prefers-reduced-motion: no-preference) {\\n :root {\\n scroll-behavior: smooth;\\n }\\n}\\n\\nbody {\\n margin: 0;\\n font-family: var(--bs-body-font-family);\\n font-size: var(--bs-body-font-size);\\n font-weight: var(--bs-body-font-weight);\\n line-height: var(--bs-body-line-height);\\n color: var(--bs-body-color);\\n text-align: var(--bs-body-text-align);\\n background-color: var(--bs-body-bg);\\n -webkit-text-size-adjust: 100%;\\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\n}\\n\\nhr {\\n margin: 1rem 0;\\n color: inherit;\\n background-color: currentColor;\\n border: 0;\\n opacity: 0.25;\\n}\\n\\nhr:not([size]) {\\n height: 1px;\\n}\\n\\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\\n margin-top: 0;\\n margin-bottom: 0.5rem;\\n font-weight: 500;\\n line-height: 1.2;\\n}\\n\\nh1, .h1 {\\n font-size: calc(1.375rem + 1.5vw);\\n}\\n@media (min-width: 1200px) {\\n h1, .h1 {\\n font-size: 2.5rem;\\n }\\n}\\n\\nh2, .h2 {\\n font-size: calc(1.325rem + 0.9vw);\\n}\\n@media (min-width: 1200px) {\\n h2, .h2 {\\n font-size: 2rem;\\n }\\n}\\n\\nh3, .h3 {\\n font-size: calc(1.3rem + 0.6vw);\\n}\\n@media (min-width: 1200px) {\\n h3, .h3 {\\n font-size: 1.75rem;\\n }\\n}\\n\\nh4, .h4 {\\n font-size: calc(1.275rem + 0.3vw);\\n}\\n@media (min-width: 1200px) {\\n h4, .h4 {\\n font-size: 1.5rem;\\n }\\n}\\n\\nh5, .h5 {\\n font-size: 1.25rem;\\n}\\n\\nh6, .h6 {\\n font-size: 1rem;\\n}\\n\\np {\\n margin-top: 0;\\n margin-bottom: 1rem;\\n}\\n\\nabbr[title],\\nabbr[data-bs-original-title] {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n cursor: help;\\n -webkit-text-decoration-skip-ink: none;\\n text-decoration-skip-ink: none;\\n}\\n\\naddress {\\n margin-bottom: 1rem;\\n font-style: normal;\\n line-height: inherit;\\n}\\n\\nol,\\nul {\\n padding-left: 2rem;\\n}\\n\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 1rem;\\n}\\n\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\n\\ndt {\\n font-weight: 700;\\n}\\n\\ndd {\\n margin-bottom: 0.5rem;\\n margin-left: 0;\\n}\\n\\nblockquote {\\n margin: 0 0 1rem;\\n}\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\nsmall, .small {\\n font-size: 0.875em;\\n}\\n\\nmark, .mark {\\n padding: 0.2em;\\n background-color: #fcf8e3;\\n}\\n\\nsub,\\nsup {\\n position: relative;\\n font-size: 0.75em;\\n line-height: 0;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\na {\\n color: #0d6efd;\\n text-decoration: underline;\\n}\\na:hover {\\n color: #0a58ca;\\n}\\n\\na:not([href]):not([class]), a:not([href]):not([class]):hover {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-family: var(--bs-font-monospace);\\n font-size: 1em;\\n direction: ltr /* rtl:ignore */;\\n unicode-bidi: bidi-override;\\n}\\n\\npre {\\n display: block;\\n margin-top: 0;\\n margin-bottom: 1rem;\\n overflow: auto;\\n font-size: 0.875em;\\n}\\npre code {\\n font-size: inherit;\\n color: inherit;\\n word-break: normal;\\n}\\n\\ncode {\\n font-size: 0.875em;\\n color: #d63384;\\n word-wrap: break-word;\\n}\\na > code {\\n color: inherit;\\n}\\n\\nkbd {\\n padding: 0.2rem 0.4rem;\\n font-size: 0.875em;\\n color: #fff;\\n background-color: #212529;\\n border-radius: 0.2rem;\\n}\\nkbd kbd {\\n padding: 0;\\n font-size: 1em;\\n font-weight: 700;\\n}\\n\\nfigure {\\n margin: 0 0 1rem;\\n}\\n\\nimg,\\nsvg {\\n vertical-align: middle;\\n}\\n\\ntable {\\n caption-side: bottom;\\n border-collapse: collapse;\\n}\\n\\ncaption {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n color: #6c757d;\\n text-align: left;\\n}\\n\\nth {\\n text-align: inherit;\\n text-align: -webkit-match-parent;\\n}\\n\\nthead,\\ntbody,\\ntfoot,\\ntr,\\ntd,\\nth {\\n border-color: inherit;\\n border-style: solid;\\n border-width: 0;\\n}\\n\\nlabel {\\n display: inline-block;\\n}\\n\\nbutton {\\n border-radius: 0;\\n}\\n\\nbutton:focus:not(:focus-visible) {\\n outline: 0;\\n}\\n\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0;\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\n[role=button] {\\n cursor: pointer;\\n}\\n\\nselect {\\n word-wrap: normal;\\n}\\nselect:disabled {\\n opacity: 1;\\n}\\n\\n[list]::-webkit-calendar-picker-indicator {\\n display: none;\\n}\\n\\nbutton,\\n[type=button],\\n[type=reset],\\n[type=submit] {\\n -webkit-appearance: button;\\n}\\nbutton:not(:disabled),\\n[type=button]:not(:disabled),\\n[type=reset]:not(:disabled),\\n[type=submit]:not(:disabled) {\\n cursor: pointer;\\n}\\n\\n::-moz-focus-inner {\\n padding: 0;\\n border-style: none;\\n}\\n\\ntextarea {\\n resize: vertical;\\n}\\n\\nfieldset {\\n min-width: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n}\\n\\nlegend {\\n float: left;\\n width: 100%;\\n padding: 0;\\n margin-bottom: 0.5rem;\\n font-size: calc(1.275rem + 0.3vw);\\n line-height: inherit;\\n}\\n@media (min-width: 1200px) {\\n legend {\\n font-size: 1.5rem;\\n }\\n}\\nlegend + * {\\n clear: left;\\n}\\n\\n::-webkit-datetime-edit-fields-wrapper,\\n::-webkit-datetime-edit-text,\\n::-webkit-datetime-edit-minute,\\n::-webkit-datetime-edit-hour-field,\\n::-webkit-datetime-edit-day-field,\\n::-webkit-datetime-edit-month-field,\\n::-webkit-datetime-edit-year-field {\\n padding: 0;\\n}\\n\\n::-webkit-inner-spin-button {\\n height: auto;\\n}\\n\\n[type=search] {\\n outline-offset: -2px;\\n -webkit-appearance: textfield;\\n}\\n\\n/* rtl:raw:\\n[type=\\\"tel\\\"],\\n[type=\\\"url\\\"],\\n[type=\\\"email\\\"],\\n[type=\\\"number\\\"] {\\n direction: ltr;\\n}\\n*/\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n::-webkit-color-swatch-wrapper {\\n padding: 0;\\n}\\n\\n::-webkit-file-upload-button {\\n font: inherit;\\n}\\n\\n::file-selector-button {\\n font: inherit;\\n}\\n\\n::-webkit-file-upload-button {\\n font: inherit;\\n -webkit-appearance: button;\\n}\\n\\noutput {\\n display: inline-block;\\n}\\n\\niframe {\\n border: 0;\\n}\\n\\nsummary {\\n display: list-item;\\n cursor: pointer;\\n}\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n[hidden] {\\n display: none !important;\\n}\\n\\n.lead {\\n font-size: 1.25rem;\\n font-weight: 300;\\n}\\n\\n.display-1 {\\n font-size: calc(1.625rem + 4.5vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-1 {\\n font-size: 5rem;\\n }\\n}\\n\\n.display-2 {\\n font-size: calc(1.575rem + 3.9vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-2 {\\n font-size: 4.5rem;\\n }\\n}\\n\\n.display-3 {\\n font-size: calc(1.525rem + 3.3vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-3 {\\n font-size: 4rem;\\n }\\n}\\n\\n.display-4 {\\n font-size: calc(1.475rem + 2.7vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-4 {\\n font-size: 3.5rem;\\n }\\n}\\n\\n.display-5 {\\n font-size: calc(1.425rem + 2.1vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-5 {\\n font-size: 3rem;\\n }\\n}\\n\\n.display-6 {\\n font-size: calc(1.375rem + 1.5vw);\\n font-weight: 300;\\n line-height: 1.2;\\n}\\n@media (min-width: 1200px) {\\n .display-6 {\\n font-size: 2.5rem;\\n }\\n}\\n\\n.list-unstyled {\\n padding-left: 0;\\n list-style: none;\\n}\\n\\n.list-inline {\\n padding-left: 0;\\n list-style: none;\\n}\\n\\n.list-inline-item {\\n display: inline-block;\\n}\\n.list-inline-item:not(:last-child) {\\n margin-right: 0.5rem;\\n}\\n\\n.initialism {\\n font-size: 0.875em;\\n text-transform: uppercase;\\n}\\n\\n.blockquote {\\n margin-bottom: 1rem;\\n font-size: 1.25rem;\\n}\\n.blockquote > :last-child {\\n margin-bottom: 0;\\n}\\n\\n.blockquote-footer {\\n margin-top: -1rem;\\n margin-bottom: 1rem;\\n font-size: 0.875em;\\n color: #6c757d;\\n}\\n.blockquote-footer::before {\\n content: \\\"— \\\";\\n}\\n\\n.img-fluid {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n.img-thumbnail {\\n padding: 0.25rem;\\n background-color: #fff;\\n border: 1px solid #dee2e6;\\n border-radius: 0.25rem;\\n max-width: 100%;\\n height: auto;\\n}\\n\\n.figure {\\n display: inline-block;\\n}\\n\\n.figure-img {\\n margin-bottom: 0.5rem;\\n line-height: 1;\\n}\\n\\n.figure-caption {\\n font-size: 0.875em;\\n color: #6c757d;\\n}\\n\\n.container,\\n.container-fluid,\\n.container-xxl,\\n.container-xl,\\n.container-lg,\\n.container-md,\\n.container-sm {\\n width: 100%;\\n padding-right: var(--bs-gutter-x, 0.75rem);\\n padding-left: var(--bs-gutter-x, 0.75rem);\\n margin-right: auto;\\n margin-left: auto;\\n}\\n\\n@media (min-width: 576px) {\\n .container-sm, .container {\\n max-width: 540px;\\n }\\n}\\n@media (min-width: 768px) {\\n .container-md, .container-sm, .container {\\n max-width: 720px;\\n }\\n}\\n@media (min-width: 992px) {\\n .container-lg, .container-md, .container-sm, .container {\\n max-width: 960px;\\n }\\n}\\n@media (min-width: 1200px) {\\n .container-xl, .container-lg, .container-md, .container-sm, .container {\\n max-width: 1140px;\\n }\\n}\\n@media (min-width: 1400px) {\\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\\n max-width: 1320px;\\n }\\n}\\n.row {\\n --bs-gutter-x: 1.5rem;\\n --bs-gutter-y: 0;\\n display: flex;\\n flex-wrap: wrap;\\n margin-top: calc(-1 * var(--bs-gutter-y));\\n margin-right: calc(-0.5 * var(--bs-gutter-x));\\n margin-left: calc(-0.5 * var(--bs-gutter-x));\\n}\\n.row > * {\\n flex-shrink: 0;\\n width: 100%;\\n max-width: 100%;\\n padding-right: calc(var(--bs-gutter-x) * 0.5);\\n padding-left: calc(var(--bs-gutter-x) * 0.5);\\n margin-top: var(--bs-gutter-y);\\n}\\n\\n.col {\\n flex: 1 0 0%;\\n}\\n\\n.row-cols-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n}\\n\\n.row-cols-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n}\\n\\n.row-cols-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n}\\n\\n.row-cols-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n}\\n\\n.row-cols-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n}\\n\\n.row-cols-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n}\\n\\n.row-cols-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n}\\n\\n.col-auto {\\n flex: 0 0 auto;\\n width: auto;\\n}\\n\\n.col-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n}\\n\\n.col-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n}\\n\\n.col-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n}\\n\\n.col-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n}\\n\\n.col-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n}\\n\\n.col-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n}\\n\\n.col-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n}\\n\\n.col-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n}\\n\\n.col-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n}\\n\\n.col-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n}\\n\\n.col-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n}\\n\\n.col-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n}\\n\\n.offset-1 {\\n margin-left: 8.33333333%;\\n}\\n\\n.offset-2 {\\n margin-left: 16.66666667%;\\n}\\n\\n.offset-3 {\\n margin-left: 25%;\\n}\\n\\n.offset-4 {\\n margin-left: 33.33333333%;\\n}\\n\\n.offset-5 {\\n margin-left: 41.66666667%;\\n}\\n\\n.offset-6 {\\n margin-left: 50%;\\n}\\n\\n.offset-7 {\\n margin-left: 58.33333333%;\\n}\\n\\n.offset-8 {\\n margin-left: 66.66666667%;\\n}\\n\\n.offset-9 {\\n margin-left: 75%;\\n}\\n\\n.offset-10 {\\n margin-left: 83.33333333%;\\n}\\n\\n.offset-11 {\\n margin-left: 91.66666667%;\\n}\\n\\n.g-0,\\n.gx-0 {\\n --bs-gutter-x: 0;\\n}\\n\\n.g-0,\\n.gy-0 {\\n --bs-gutter-y: 0;\\n}\\n\\n.g-1,\\n.gx-1 {\\n --bs-gutter-x: 0.25rem;\\n}\\n\\n.g-1,\\n.gy-1 {\\n --bs-gutter-y: 0.25rem;\\n}\\n\\n.g-2,\\n.gx-2 {\\n --bs-gutter-x: 0.5rem;\\n}\\n\\n.g-2,\\n.gy-2 {\\n --bs-gutter-y: 0.5rem;\\n}\\n\\n.g-3,\\n.gx-3 {\\n --bs-gutter-x: 1rem;\\n}\\n\\n.g-3,\\n.gy-3 {\\n --bs-gutter-y: 1rem;\\n}\\n\\n.g-4,\\n.gx-4 {\\n --bs-gutter-x: 1.5rem;\\n}\\n\\n.g-4,\\n.gy-4 {\\n --bs-gutter-y: 1.5rem;\\n}\\n\\n.g-5,\\n.gx-5 {\\n --bs-gutter-x: 3rem;\\n}\\n\\n.g-5,\\n.gy-5 {\\n --bs-gutter-y: 3rem;\\n}\\n\\n@media (min-width: 576px) {\\n .col-sm {\\n flex: 1 0 0%;\\n }\\n\\n .row-cols-sm-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .row-cols-sm-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .row-cols-sm-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .row-cols-sm-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n }\\n\\n .row-cols-sm-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .row-cols-sm-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n }\\n\\n .row-cols-sm-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n }\\n\\n .col-sm-auto {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .col-sm-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n }\\n\\n .col-sm-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n }\\n\\n .col-sm-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .col-sm-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n }\\n\\n .col-sm-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n }\\n\\n .col-sm-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .col-sm-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n }\\n\\n .col-sm-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n }\\n\\n .col-sm-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n }\\n\\n .col-sm-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n }\\n\\n .col-sm-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n }\\n\\n .col-sm-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .offset-sm-0 {\\n margin-left: 0;\\n }\\n\\n .offset-sm-1 {\\n margin-left: 8.33333333%;\\n }\\n\\n .offset-sm-2 {\\n margin-left: 16.66666667%;\\n }\\n\\n .offset-sm-3 {\\n margin-left: 25%;\\n }\\n\\n .offset-sm-4 {\\n margin-left: 33.33333333%;\\n }\\n\\n .offset-sm-5 {\\n margin-left: 41.66666667%;\\n }\\n\\n .offset-sm-6 {\\n margin-left: 50%;\\n }\\n\\n .offset-sm-7 {\\n margin-left: 58.33333333%;\\n }\\n\\n .offset-sm-8 {\\n margin-left: 66.66666667%;\\n }\\n\\n .offset-sm-9 {\\n margin-left: 75%;\\n }\\n\\n .offset-sm-10 {\\n margin-left: 83.33333333%;\\n }\\n\\n .offset-sm-11 {\\n margin-left: 91.66666667%;\\n }\\n\\n .g-sm-0,\\n.gx-sm-0 {\\n --bs-gutter-x: 0;\\n }\\n\\n .g-sm-0,\\n.gy-sm-0 {\\n --bs-gutter-y: 0;\\n }\\n\\n .g-sm-1,\\n.gx-sm-1 {\\n --bs-gutter-x: 0.25rem;\\n }\\n\\n .g-sm-1,\\n.gy-sm-1 {\\n --bs-gutter-y: 0.25rem;\\n }\\n\\n .g-sm-2,\\n.gx-sm-2 {\\n --bs-gutter-x: 0.5rem;\\n }\\n\\n .g-sm-2,\\n.gy-sm-2 {\\n --bs-gutter-y: 0.5rem;\\n }\\n\\n .g-sm-3,\\n.gx-sm-3 {\\n --bs-gutter-x: 1rem;\\n }\\n\\n .g-sm-3,\\n.gy-sm-3 {\\n --bs-gutter-y: 1rem;\\n }\\n\\n .g-sm-4,\\n.gx-sm-4 {\\n --bs-gutter-x: 1.5rem;\\n }\\n\\n .g-sm-4,\\n.gy-sm-4 {\\n --bs-gutter-y: 1.5rem;\\n }\\n\\n .g-sm-5,\\n.gx-sm-5 {\\n --bs-gutter-x: 3rem;\\n }\\n\\n .g-sm-5,\\n.gy-sm-5 {\\n --bs-gutter-y: 3rem;\\n }\\n}\\n@media (min-width: 768px) {\\n .col-md {\\n flex: 1 0 0%;\\n }\\n\\n .row-cols-md-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .row-cols-md-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .row-cols-md-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .row-cols-md-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n }\\n\\n .row-cols-md-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .row-cols-md-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n }\\n\\n .row-cols-md-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n }\\n\\n .col-md-auto {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .col-md-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n }\\n\\n .col-md-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n }\\n\\n .col-md-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .col-md-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n }\\n\\n .col-md-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n }\\n\\n .col-md-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .col-md-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n }\\n\\n .col-md-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n }\\n\\n .col-md-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n }\\n\\n .col-md-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n }\\n\\n .col-md-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n }\\n\\n .col-md-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .offset-md-0 {\\n margin-left: 0;\\n }\\n\\n .offset-md-1 {\\n margin-left: 8.33333333%;\\n }\\n\\n .offset-md-2 {\\n margin-left: 16.66666667%;\\n }\\n\\n .offset-md-3 {\\n margin-left: 25%;\\n }\\n\\n .offset-md-4 {\\n margin-left: 33.33333333%;\\n }\\n\\n .offset-md-5 {\\n margin-left: 41.66666667%;\\n }\\n\\n .offset-md-6 {\\n margin-left: 50%;\\n }\\n\\n .offset-md-7 {\\n margin-left: 58.33333333%;\\n }\\n\\n .offset-md-8 {\\n margin-left: 66.66666667%;\\n }\\n\\n .offset-md-9 {\\n margin-left: 75%;\\n }\\n\\n .offset-md-10 {\\n margin-left: 83.33333333%;\\n }\\n\\n .offset-md-11 {\\n margin-left: 91.66666667%;\\n }\\n\\n .g-md-0,\\n.gx-md-0 {\\n --bs-gutter-x: 0;\\n }\\n\\n .g-md-0,\\n.gy-md-0 {\\n --bs-gutter-y: 0;\\n }\\n\\n .g-md-1,\\n.gx-md-1 {\\n --bs-gutter-x: 0.25rem;\\n }\\n\\n .g-md-1,\\n.gy-md-1 {\\n --bs-gutter-y: 0.25rem;\\n }\\n\\n .g-md-2,\\n.gx-md-2 {\\n --bs-gutter-x: 0.5rem;\\n }\\n\\n .g-md-2,\\n.gy-md-2 {\\n --bs-gutter-y: 0.5rem;\\n }\\n\\n .g-md-3,\\n.gx-md-3 {\\n --bs-gutter-x: 1rem;\\n }\\n\\n .g-md-3,\\n.gy-md-3 {\\n --bs-gutter-y: 1rem;\\n }\\n\\n .g-md-4,\\n.gx-md-4 {\\n --bs-gutter-x: 1.5rem;\\n }\\n\\n .g-md-4,\\n.gy-md-4 {\\n --bs-gutter-y: 1.5rem;\\n }\\n\\n .g-md-5,\\n.gx-md-5 {\\n --bs-gutter-x: 3rem;\\n }\\n\\n .g-md-5,\\n.gy-md-5 {\\n --bs-gutter-y: 3rem;\\n }\\n}\\n@media (min-width: 992px) {\\n .col-lg {\\n flex: 1 0 0%;\\n }\\n\\n .row-cols-lg-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .row-cols-lg-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .row-cols-lg-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .row-cols-lg-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n }\\n\\n .row-cols-lg-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .row-cols-lg-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n }\\n\\n .row-cols-lg-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n }\\n\\n .col-lg-auto {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .col-lg-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n }\\n\\n .col-lg-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n }\\n\\n .col-lg-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .col-lg-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n }\\n\\n .col-lg-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n }\\n\\n .col-lg-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .col-lg-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n }\\n\\n .col-lg-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n }\\n\\n .col-lg-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n }\\n\\n .col-lg-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n }\\n\\n .col-lg-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n }\\n\\n .col-lg-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .offset-lg-0 {\\n margin-left: 0;\\n }\\n\\n .offset-lg-1 {\\n margin-left: 8.33333333%;\\n }\\n\\n .offset-lg-2 {\\n margin-left: 16.66666667%;\\n }\\n\\n .offset-lg-3 {\\n margin-left: 25%;\\n }\\n\\n .offset-lg-4 {\\n margin-left: 33.33333333%;\\n }\\n\\n .offset-lg-5 {\\n margin-left: 41.66666667%;\\n }\\n\\n .offset-lg-6 {\\n margin-left: 50%;\\n }\\n\\n .offset-lg-7 {\\n margin-left: 58.33333333%;\\n }\\n\\n .offset-lg-8 {\\n margin-left: 66.66666667%;\\n }\\n\\n .offset-lg-9 {\\n margin-left: 75%;\\n }\\n\\n .offset-lg-10 {\\n margin-left: 83.33333333%;\\n }\\n\\n .offset-lg-11 {\\n margin-left: 91.66666667%;\\n }\\n\\n .g-lg-0,\\n.gx-lg-0 {\\n --bs-gutter-x: 0;\\n }\\n\\n .g-lg-0,\\n.gy-lg-0 {\\n --bs-gutter-y: 0;\\n }\\n\\n .g-lg-1,\\n.gx-lg-1 {\\n --bs-gutter-x: 0.25rem;\\n }\\n\\n .g-lg-1,\\n.gy-lg-1 {\\n --bs-gutter-y: 0.25rem;\\n }\\n\\n .g-lg-2,\\n.gx-lg-2 {\\n --bs-gutter-x: 0.5rem;\\n }\\n\\n .g-lg-2,\\n.gy-lg-2 {\\n --bs-gutter-y: 0.5rem;\\n }\\n\\n .g-lg-3,\\n.gx-lg-3 {\\n --bs-gutter-x: 1rem;\\n }\\n\\n .g-lg-3,\\n.gy-lg-3 {\\n --bs-gutter-y: 1rem;\\n }\\n\\n .g-lg-4,\\n.gx-lg-4 {\\n --bs-gutter-x: 1.5rem;\\n }\\n\\n .g-lg-4,\\n.gy-lg-4 {\\n --bs-gutter-y: 1.5rem;\\n }\\n\\n .g-lg-5,\\n.gx-lg-5 {\\n --bs-gutter-x: 3rem;\\n }\\n\\n .g-lg-5,\\n.gy-lg-5 {\\n --bs-gutter-y: 3rem;\\n }\\n}\\n@media (min-width: 1200px) {\\n .col-xl {\\n flex: 1 0 0%;\\n }\\n\\n .row-cols-xl-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .row-cols-xl-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .row-cols-xl-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .row-cols-xl-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n }\\n\\n .row-cols-xl-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .row-cols-xl-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n }\\n\\n .row-cols-xl-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n }\\n\\n .col-xl-auto {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .col-xl-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n }\\n\\n .col-xl-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n }\\n\\n .col-xl-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .col-xl-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n }\\n\\n .col-xl-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n }\\n\\n .col-xl-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .col-xl-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n }\\n\\n .col-xl-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n }\\n\\n .col-xl-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n }\\n\\n .col-xl-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n }\\n\\n .col-xl-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n }\\n\\n .col-xl-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .offset-xl-0 {\\n margin-left: 0;\\n }\\n\\n .offset-xl-1 {\\n margin-left: 8.33333333%;\\n }\\n\\n .offset-xl-2 {\\n margin-left: 16.66666667%;\\n }\\n\\n .offset-xl-3 {\\n margin-left: 25%;\\n }\\n\\n .offset-xl-4 {\\n margin-left: 33.33333333%;\\n }\\n\\n .offset-xl-5 {\\n margin-left: 41.66666667%;\\n }\\n\\n .offset-xl-6 {\\n margin-left: 50%;\\n }\\n\\n .offset-xl-7 {\\n margin-left: 58.33333333%;\\n }\\n\\n .offset-xl-8 {\\n margin-left: 66.66666667%;\\n }\\n\\n .offset-xl-9 {\\n margin-left: 75%;\\n }\\n\\n .offset-xl-10 {\\n margin-left: 83.33333333%;\\n }\\n\\n .offset-xl-11 {\\n margin-left: 91.66666667%;\\n }\\n\\n .g-xl-0,\\n.gx-xl-0 {\\n --bs-gutter-x: 0;\\n }\\n\\n .g-xl-0,\\n.gy-xl-0 {\\n --bs-gutter-y: 0;\\n }\\n\\n .g-xl-1,\\n.gx-xl-1 {\\n --bs-gutter-x: 0.25rem;\\n }\\n\\n .g-xl-1,\\n.gy-xl-1 {\\n --bs-gutter-y: 0.25rem;\\n }\\n\\n .g-xl-2,\\n.gx-xl-2 {\\n --bs-gutter-x: 0.5rem;\\n }\\n\\n .g-xl-2,\\n.gy-xl-2 {\\n --bs-gutter-y: 0.5rem;\\n }\\n\\n .g-xl-3,\\n.gx-xl-3 {\\n --bs-gutter-x: 1rem;\\n }\\n\\n .g-xl-3,\\n.gy-xl-3 {\\n --bs-gutter-y: 1rem;\\n }\\n\\n .g-xl-4,\\n.gx-xl-4 {\\n --bs-gutter-x: 1.5rem;\\n }\\n\\n .g-xl-4,\\n.gy-xl-4 {\\n --bs-gutter-y: 1.5rem;\\n }\\n\\n .g-xl-5,\\n.gx-xl-5 {\\n --bs-gutter-x: 3rem;\\n }\\n\\n .g-xl-5,\\n.gy-xl-5 {\\n --bs-gutter-y: 3rem;\\n }\\n}\\n@media (min-width: 1400px) {\\n .col-xxl {\\n flex: 1 0 0%;\\n }\\n\\n .row-cols-xxl-auto > * {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .row-cols-xxl-1 > * {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .row-cols-xxl-2 > * {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .row-cols-xxl-3 > * {\\n flex: 0 0 auto;\\n width: 33.3333333333%;\\n }\\n\\n .row-cols-xxl-4 > * {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .row-cols-xxl-5 > * {\\n flex: 0 0 auto;\\n width: 20%;\\n }\\n\\n .row-cols-xxl-6 > * {\\n flex: 0 0 auto;\\n width: 16.6666666667%;\\n }\\n\\n .col-xxl-auto {\\n flex: 0 0 auto;\\n width: auto;\\n }\\n\\n .col-xxl-1 {\\n flex: 0 0 auto;\\n width: 8.33333333%;\\n }\\n\\n .col-xxl-2 {\\n flex: 0 0 auto;\\n width: 16.66666667%;\\n }\\n\\n .col-xxl-3 {\\n flex: 0 0 auto;\\n width: 25%;\\n }\\n\\n .col-xxl-4 {\\n flex: 0 0 auto;\\n width: 33.33333333%;\\n }\\n\\n .col-xxl-5 {\\n flex: 0 0 auto;\\n width: 41.66666667%;\\n }\\n\\n .col-xxl-6 {\\n flex: 0 0 auto;\\n width: 50%;\\n }\\n\\n .col-xxl-7 {\\n flex: 0 0 auto;\\n width: 58.33333333%;\\n }\\n\\n .col-xxl-8 {\\n flex: 0 0 auto;\\n width: 66.66666667%;\\n }\\n\\n .col-xxl-9 {\\n flex: 0 0 auto;\\n width: 75%;\\n }\\n\\n .col-xxl-10 {\\n flex: 0 0 auto;\\n width: 83.33333333%;\\n }\\n\\n .col-xxl-11 {\\n flex: 0 0 auto;\\n width: 91.66666667%;\\n }\\n\\n .col-xxl-12 {\\n flex: 0 0 auto;\\n width: 100%;\\n }\\n\\n .offset-xxl-0 {\\n margin-left: 0;\\n }\\n\\n .offset-xxl-1 {\\n margin-left: 8.33333333%;\\n }\\n\\n .offset-xxl-2 {\\n margin-left: 16.66666667%;\\n }\\n\\n .offset-xxl-3 {\\n margin-left: 25%;\\n }\\n\\n .offset-xxl-4 {\\n margin-left: 33.33333333%;\\n }\\n\\n .offset-xxl-5 {\\n margin-left: 41.66666667%;\\n }\\n\\n .offset-xxl-6 {\\n margin-left: 50%;\\n }\\n\\n .offset-xxl-7 {\\n margin-left: 58.33333333%;\\n }\\n\\n .offset-xxl-8 {\\n margin-left: 66.66666667%;\\n }\\n\\n .offset-xxl-9 {\\n margin-left: 75%;\\n }\\n\\n .offset-xxl-10 {\\n margin-left: 83.33333333%;\\n }\\n\\n .offset-xxl-11 {\\n margin-left: 91.66666667%;\\n }\\n\\n .g-xxl-0,\\n.gx-xxl-0 {\\n --bs-gutter-x: 0;\\n }\\n\\n .g-xxl-0,\\n.gy-xxl-0 {\\n --bs-gutter-y: 0;\\n }\\n\\n .g-xxl-1,\\n.gx-xxl-1 {\\n --bs-gutter-x: 0.25rem;\\n }\\n\\n .g-xxl-1,\\n.gy-xxl-1 {\\n --bs-gutter-y: 0.25rem;\\n }\\n\\n .g-xxl-2,\\n.gx-xxl-2 {\\n --bs-gutter-x: 0.5rem;\\n }\\n\\n .g-xxl-2,\\n.gy-xxl-2 {\\n --bs-gutter-y: 0.5rem;\\n }\\n\\n .g-xxl-3,\\n.gx-xxl-3 {\\n --bs-gutter-x: 1rem;\\n }\\n\\n .g-xxl-3,\\n.gy-xxl-3 {\\n --bs-gutter-y: 1rem;\\n }\\n\\n .g-xxl-4,\\n.gx-xxl-4 {\\n --bs-gutter-x: 1.5rem;\\n }\\n\\n .g-xxl-4,\\n.gy-xxl-4 {\\n --bs-gutter-y: 1.5rem;\\n }\\n\\n .g-xxl-5,\\n.gx-xxl-5 {\\n --bs-gutter-x: 3rem;\\n }\\n\\n .g-xxl-5,\\n.gy-xxl-5 {\\n --bs-gutter-y: 3rem;\\n }\\n}\\n.table {\\n --bs-table-bg: transparent;\\n --bs-table-accent-bg: transparent;\\n --bs-table-striped-color: #212529;\\n --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\\n --bs-table-active-color: #212529;\\n --bs-table-active-bg: rgba(0, 0, 0, 0.1);\\n --bs-table-hover-color: #212529;\\n --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\\n width: 100%;\\n margin-bottom: 1rem;\\n color: #212529;\\n vertical-align: top;\\n border-color: #dee2e6;\\n}\\n.table > :not(caption) > * > * {\\n padding: 0.5rem 0.5rem;\\n background-color: var(--bs-table-bg);\\n border-bottom-width: 1px;\\n box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\\n}\\n.table > tbody {\\n vertical-align: inherit;\\n}\\n.table > thead {\\n vertical-align: bottom;\\n}\\n.table > :not(:first-child) {\\n border-top: 2px solid currentColor;\\n}\\n\\n.caption-top {\\n caption-side: top;\\n}\\n\\n.table-sm > :not(caption) > * > * {\\n padding: 0.25rem 0.25rem;\\n}\\n\\n.table-bordered > :not(caption) > * {\\n border-width: 1px 0;\\n}\\n.table-bordered > :not(caption) > * > * {\\n border-width: 0 1px;\\n}\\n\\n.table-borderless > :not(caption) > * > * {\\n border-bottom-width: 0;\\n}\\n.table-borderless > :not(:first-child) {\\n border-top-width: 0;\\n}\\n\\n.table-striped > tbody > tr:nth-of-type(odd) > * {\\n --bs-table-accent-bg: var(--bs-table-striped-bg);\\n color: var(--bs-table-striped-color);\\n}\\n\\n.table-active {\\n --bs-table-accent-bg: var(--bs-table-active-bg);\\n color: var(--bs-table-active-color);\\n}\\n\\n.table-hover > tbody > tr:hover > * {\\n --bs-table-accent-bg: var(--bs-table-hover-bg);\\n color: var(--bs-table-hover-color);\\n}\\n\\n.table-primary {\\n --bs-table-bg: #cfe2ff;\\n --bs-table-striped-bg: #c5d7f2;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #bacbe6;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #bfd1ec;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #bacbe6;\\n}\\n\\n.table-secondary {\\n --bs-table-bg: #e2e3e5;\\n --bs-table-striped-bg: #d7d8da;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #cbccce;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #d1d2d4;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #cbccce;\\n}\\n\\n.table-success {\\n --bs-table-bg: #d1e7dd;\\n --bs-table-striped-bg: #c7dbd2;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #bcd0c7;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #c1d6cc;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #bcd0c7;\\n}\\n\\n.table-info {\\n --bs-table-bg: #cff4fc;\\n --bs-table-striped-bg: #c5e8ef;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #badce3;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #bfe2e9;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #badce3;\\n}\\n\\n.table-warning {\\n --bs-table-bg: #fff3cd;\\n --bs-table-striped-bg: #f2e7c3;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #e6dbb9;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #ece1be;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #e6dbb9;\\n}\\n\\n.table-danger {\\n --bs-table-bg: #f8d7da;\\n --bs-table-striped-bg: #eccccf;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #dfc2c4;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #e5c7ca;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #dfc2c4;\\n}\\n\\n.table-light {\\n --bs-table-bg: #f8f9fa;\\n --bs-table-striped-bg: #ecedee;\\n --bs-table-striped-color: #000;\\n --bs-table-active-bg: #dfe0e1;\\n --bs-table-active-color: #000;\\n --bs-table-hover-bg: #e5e6e7;\\n --bs-table-hover-color: #000;\\n color: #000;\\n border-color: #dfe0e1;\\n}\\n\\n.table-dark {\\n --bs-table-bg: #212529;\\n --bs-table-striped-bg: #2c3034;\\n --bs-table-striped-color: #fff;\\n --bs-table-active-bg: #373b3e;\\n --bs-table-active-color: #fff;\\n --bs-table-hover-bg: #323539;\\n --bs-table-hover-color: #fff;\\n color: #fff;\\n border-color: #373b3e;\\n}\\n\\n.table-responsive {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n}\\n\\n@media (max-width: 575.98px) {\\n .table-responsive-sm {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n }\\n}\\n@media (max-width: 767.98px) {\\n .table-responsive-md {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n }\\n}\\n@media (max-width: 991.98px) {\\n .table-responsive-lg {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n }\\n}\\n@media (max-width: 1199.98px) {\\n .table-responsive-xl {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n }\\n}\\n@media (max-width: 1399.98px) {\\n .table-responsive-xxl {\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n }\\n}\\n.form-label {\\n margin-bottom: 0.5rem;\\n}\\n\\n.col-form-label {\\n padding-top: calc(0.375rem + 1px);\\n padding-bottom: calc(0.375rem + 1px);\\n margin-bottom: 0;\\n font-size: inherit;\\n line-height: 1.5;\\n}\\n\\n.col-form-label-lg {\\n padding-top: calc(0.5rem + 1px);\\n padding-bottom: calc(0.5rem + 1px);\\n font-size: 1.25rem;\\n}\\n\\n.col-form-label-sm {\\n padding-top: calc(0.25rem + 1px);\\n padding-bottom: calc(0.25rem + 1px);\\n font-size: 0.875rem;\\n}\\n\\n.form-text {\\n margin-top: 0.25rem;\\n font-size: 0.875em;\\n color: #6c757d;\\n}\\n\\n.form-control {\\n display: block;\\n width: 100%;\\n padding: 0.375rem 0.75rem;\\n font-size: 1rem;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #212529;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid #ced4da;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n border-radius: 0.25rem;\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-control {\\n transition: none;\\n }\\n}\\n.form-control[type=file] {\\n overflow: hidden;\\n}\\n.form-control[type=file]:not(:disabled):not([readonly]) {\\n cursor: pointer;\\n}\\n.form-control:focus {\\n color: #212529;\\n background-color: #fff;\\n border-color: #86b7fe;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.form-control::-webkit-date-and-time-value {\\n height: 1.5em;\\n}\\n.form-control::-moz-placeholder {\\n color: #6c757d;\\n opacity: 1;\\n}\\n.form-control::placeholder {\\n color: #6c757d;\\n opacity: 1;\\n}\\n.form-control:disabled, .form-control[readonly] {\\n background-color: #e9ecef;\\n opacity: 1;\\n}\\n.form-control::-webkit-file-upload-button {\\n padding: 0.375rem 0.75rem;\\n margin: -0.375rem -0.75rem;\\n -webkit-margin-end: 0.75rem;\\n margin-inline-end: 0.75rem;\\n color: #212529;\\n background-color: #e9ecef;\\n pointer-events: none;\\n border-color: inherit;\\n border-style: solid;\\n border-width: 0;\\n border-inline-end-width: 1px;\\n border-radius: 0;\\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n.form-control::file-selector-button {\\n padding: 0.375rem 0.75rem;\\n margin: -0.375rem -0.75rem;\\n -webkit-margin-end: 0.75rem;\\n margin-inline-end: 0.75rem;\\n color: #212529;\\n background-color: #e9ecef;\\n pointer-events: none;\\n border-color: inherit;\\n border-style: solid;\\n border-width: 0;\\n border-inline-end-width: 1px;\\n border-radius: 0;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-control::-webkit-file-upload-button {\\n -webkit-transition: none;\\n transition: none;\\n }\\n .form-control::file-selector-button {\\n transition: none;\\n }\\n}\\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\\n background-color: #dde0e3;\\n}\\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\\n background-color: #dde0e3;\\n}\\n.form-control::-webkit-file-upload-button {\\n padding: 0.375rem 0.75rem;\\n margin: -0.375rem -0.75rem;\\n -webkit-margin-end: 0.75rem;\\n margin-inline-end: 0.75rem;\\n color: #212529;\\n background-color: #e9ecef;\\n pointer-events: none;\\n border-color: inherit;\\n border-style: solid;\\n border-width: 0;\\n border-inline-end-width: 1px;\\n border-radius: 0;\\n -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-control::-webkit-file-upload-button {\\n -webkit-transition: none;\\n transition: none;\\n }\\n}\\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\\n background-color: #dde0e3;\\n}\\n\\n.form-control-plaintext {\\n display: block;\\n width: 100%;\\n padding: 0.375rem 0;\\n margin-bottom: 0;\\n line-height: 1.5;\\n color: #212529;\\n background-color: transparent;\\n border: solid transparent;\\n border-width: 1px 0;\\n}\\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n\\n.form-control-sm {\\n min-height: calc(1.5em + 0.5rem + 2px);\\n padding: 0.25rem 0.5rem;\\n font-size: 0.875rem;\\n border-radius: 0.2rem;\\n}\\n.form-control-sm::-webkit-file-upload-button {\\n padding: 0.25rem 0.5rem;\\n margin: -0.25rem -0.5rem;\\n -webkit-margin-end: 0.5rem;\\n margin-inline-end: 0.5rem;\\n}\\n.form-control-sm::file-selector-button {\\n padding: 0.25rem 0.5rem;\\n margin: -0.25rem -0.5rem;\\n -webkit-margin-end: 0.5rem;\\n margin-inline-end: 0.5rem;\\n}\\n.form-control-sm::-webkit-file-upload-button {\\n padding: 0.25rem 0.5rem;\\n margin: -0.25rem -0.5rem;\\n -webkit-margin-end: 0.5rem;\\n margin-inline-end: 0.5rem;\\n}\\n\\n.form-control-lg {\\n min-height: calc(1.5em + 1rem + 2px);\\n padding: 0.5rem 1rem;\\n font-size: 1.25rem;\\n border-radius: 0.3rem;\\n}\\n.form-control-lg::-webkit-file-upload-button {\\n padding: 0.5rem 1rem;\\n margin: -0.5rem -1rem;\\n -webkit-margin-end: 1rem;\\n margin-inline-end: 1rem;\\n}\\n.form-control-lg::file-selector-button {\\n padding: 0.5rem 1rem;\\n margin: -0.5rem -1rem;\\n -webkit-margin-end: 1rem;\\n margin-inline-end: 1rem;\\n}\\n.form-control-lg::-webkit-file-upload-button {\\n padding: 0.5rem 1rem;\\n margin: -0.5rem -1rem;\\n -webkit-margin-end: 1rem;\\n margin-inline-end: 1rem;\\n}\\n\\ntextarea.form-control {\\n min-height: calc(1.5em + 0.75rem + 2px);\\n}\\ntextarea.form-control-sm {\\n min-height: calc(1.5em + 0.5rem + 2px);\\n}\\ntextarea.form-control-lg {\\n min-height: calc(1.5em + 1rem + 2px);\\n}\\n\\n.form-control-color {\\n width: 3rem;\\n height: auto;\\n padding: 0.375rem;\\n}\\n.form-control-color:not(:disabled):not([readonly]) {\\n cursor: pointer;\\n}\\n.form-control-color::-moz-color-swatch {\\n height: 1.5em;\\n border-radius: 0.25rem;\\n}\\n.form-control-color::-webkit-color-swatch {\\n height: 1.5em;\\n border-radius: 0.25rem;\\n}\\n\\n.form-select {\\n display: block;\\n width: 100%;\\n padding: 0.375rem 2.25rem 0.375rem 0.75rem;\\n -moz-padding-start: calc(0.75rem - 3px);\\n font-size: 1rem;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #212529;\\n background-color: #fff;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\\\");\\n background-repeat: no-repeat;\\n background-position: right 0.75rem center;\\n background-size: 16px 12px;\\n border: 1px solid #ced4da;\\n border-radius: 0.25rem;\\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-select {\\n transition: none;\\n }\\n}\\n.form-select:focus {\\n border-color: #86b7fe;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.form-select[multiple], .form-select[size]:not([size=\\\"1\\\"]) {\\n padding-right: 0.75rem;\\n background-image: none;\\n}\\n.form-select:disabled {\\n background-color: #e9ecef;\\n}\\n.form-select:-moz-focusring {\\n color: transparent;\\n text-shadow: 0 0 0 #212529;\\n}\\n\\n.form-select-sm {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n padding-left: 0.5rem;\\n font-size: 0.875rem;\\n border-radius: 0.2rem;\\n}\\n\\n.form-select-lg {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n padding-left: 1rem;\\n font-size: 1.25rem;\\n border-radius: 0.3rem;\\n}\\n\\n.form-check {\\n display: block;\\n min-height: 1.5rem;\\n padding-left: 1.5em;\\n margin-bottom: 0.125rem;\\n}\\n.form-check .form-check-input {\\n float: left;\\n margin-left: -1.5em;\\n}\\n\\n.form-check-input {\\n width: 1em;\\n height: 1em;\\n margin-top: 0.25em;\\n vertical-align: top;\\n background-color: #fff;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: contain;\\n border: 1px solid rgba(0, 0, 0, 0.25);\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n -webkit-print-color-adjust: exact;\\n color-adjust: exact;\\n}\\n.form-check-input[type=checkbox] {\\n border-radius: 0.25em;\\n}\\n.form-check-input[type=radio] {\\n border-radius: 50%;\\n}\\n.form-check-input:active {\\n filter: brightness(90%);\\n}\\n.form-check-input:focus {\\n border-color: #86b7fe;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.form-check-input:checked {\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.form-check-input:checked[type=checkbox] {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\\\");\\n}\\n.form-check-input:checked[type=radio] {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\\\");\\n}\\n.form-check-input[type=checkbox]:indeterminate {\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\\\");\\n}\\n.form-check-input:disabled {\\n pointer-events: none;\\n filter: none;\\n opacity: 0.5;\\n}\\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\\n opacity: 0.5;\\n}\\n\\n.form-switch {\\n padding-left: 2.5em;\\n}\\n.form-switch .form-check-input {\\n width: 2em;\\n margin-left: -2.5em;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\\\");\\n background-position: left center;\\n border-radius: 2em;\\n transition: background-position 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-switch .form-check-input {\\n transition: none;\\n }\\n}\\n.form-switch .form-check-input:focus {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\\\");\\n}\\n.form-switch .form-check-input:checked {\\n background-position: right center;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\\\");\\n}\\n\\n.form-check-inline {\\n display: inline-block;\\n margin-right: 1rem;\\n}\\n\\n.btn-check {\\n position: absolute;\\n clip: rect(0, 0, 0, 0);\\n pointer-events: none;\\n}\\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\\n pointer-events: none;\\n filter: none;\\n opacity: 0.65;\\n}\\n\\n.form-range {\\n width: 100%;\\n height: 1.5rem;\\n padding: 0;\\n background-color: transparent;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n.form-range:focus {\\n outline: 0;\\n}\\n.form-range:focus::-webkit-slider-thumb {\\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.form-range:focus::-moz-range-thumb {\\n box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.form-range::-moz-focus-outer {\\n border: 0;\\n}\\n.form-range::-webkit-slider-thumb {\\n width: 1rem;\\n height: 1rem;\\n margin-top: -0.25rem;\\n background-color: #0d6efd;\\n border: 0;\\n border-radius: 1rem;\\n -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n -webkit-appearance: none;\\n appearance: none;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-range::-webkit-slider-thumb {\\n -webkit-transition: none;\\n transition: none;\\n }\\n}\\n.form-range::-webkit-slider-thumb:active {\\n background-color: #b6d4fe;\\n}\\n.form-range::-webkit-slider-runnable-track {\\n width: 100%;\\n height: 0.5rem;\\n color: transparent;\\n cursor: pointer;\\n background-color: #dee2e6;\\n border-color: transparent;\\n border-radius: 1rem;\\n}\\n.form-range::-moz-range-thumb {\\n width: 1rem;\\n height: 1rem;\\n background-color: #0d6efd;\\n border: 0;\\n border-radius: 1rem;\\n -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-range::-moz-range-thumb {\\n -moz-transition: none;\\n transition: none;\\n }\\n}\\n.form-range::-moz-range-thumb:active {\\n background-color: #b6d4fe;\\n}\\n.form-range::-moz-range-track {\\n width: 100%;\\n height: 0.5rem;\\n color: transparent;\\n cursor: pointer;\\n background-color: #dee2e6;\\n border-color: transparent;\\n border-radius: 1rem;\\n}\\n.form-range:disabled {\\n pointer-events: none;\\n}\\n.form-range:disabled::-webkit-slider-thumb {\\n background-color: #adb5bd;\\n}\\n.form-range:disabled::-moz-range-thumb {\\n background-color: #adb5bd;\\n}\\n\\n.form-floating {\\n position: relative;\\n}\\n.form-floating > .form-control,\\n.form-floating > .form-select {\\n height: calc(3.5rem + 2px);\\n line-height: 1.25;\\n}\\n.form-floating > label {\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n padding: 1rem 0.75rem;\\n pointer-events: none;\\n border: 1px solid transparent;\\n transform-origin: 0 0;\\n transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .form-floating > label {\\n transition: none;\\n }\\n}\\n.form-floating > .form-control {\\n padding: 1rem 0.75rem;\\n}\\n.form-floating > .form-control::-moz-placeholder {\\n color: transparent;\\n}\\n.form-floating > .form-control::placeholder {\\n color: transparent;\\n}\\n.form-floating > .form-control:not(:-moz-placeholder-shown) {\\n padding-top: 1.625rem;\\n padding-bottom: 0.625rem;\\n}\\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\\n padding-top: 1.625rem;\\n padding-bottom: 0.625rem;\\n}\\n.form-floating > .form-control:-webkit-autofill {\\n padding-top: 1.625rem;\\n padding-bottom: 0.625rem;\\n}\\n.form-floating > .form-select {\\n padding-top: 1.625rem;\\n padding-bottom: 0.625rem;\\n}\\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\\n opacity: 0.65;\\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\\n}\\n.form-floating > .form-control:focus ~ label,\\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\\n.form-floating > .form-select ~ label {\\n opacity: 0.65;\\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\\n}\\n.form-floating > .form-control:-webkit-autofill ~ label {\\n opacity: 0.65;\\n transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\\n}\\n\\n.input-group {\\n position: relative;\\n display: flex;\\n flex-wrap: wrap;\\n align-items: stretch;\\n width: 100%;\\n}\\n.input-group > .form-control,\\n.input-group > .form-select {\\n position: relative;\\n flex: 1 1 auto;\\n width: 1%;\\n min-width: 0;\\n}\\n.input-group > .form-control:focus,\\n.input-group > .form-select:focus {\\n z-index: 3;\\n}\\n.input-group .btn {\\n position: relative;\\n z-index: 2;\\n}\\n.input-group .btn:focus {\\n z-index: 3;\\n}\\n\\n.input-group-text {\\n display: flex;\\n align-items: center;\\n padding: 0.375rem 0.75rem;\\n font-size: 1rem;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #212529;\\n text-align: center;\\n white-space: nowrap;\\n background-color: #e9ecef;\\n border: 1px solid #ced4da;\\n border-radius: 0.25rem;\\n}\\n\\n.input-group-lg > .form-control,\\n.input-group-lg > .form-select,\\n.input-group-lg > .input-group-text,\\n.input-group-lg > .btn {\\n padding: 0.5rem 1rem;\\n font-size: 1.25rem;\\n border-radius: 0.3rem;\\n}\\n\\n.input-group-sm > .form-control,\\n.input-group-sm > .form-select,\\n.input-group-sm > .input-group-text,\\n.input-group-sm > .btn {\\n padding: 0.25rem 0.5rem;\\n font-size: 0.875rem;\\n border-radius: 0.2rem;\\n}\\n\\n.input-group-lg > .form-select,\\n.input-group-sm > .form-select {\\n padding-right: 3rem;\\n}\\n\\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\\n margin-left: -1px;\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n\\n.valid-feedback {\\n display: none;\\n width: 100%;\\n margin-top: 0.25rem;\\n font-size: 0.875em;\\n color: #198754;\\n}\\n\\n.valid-tooltip {\\n position: absolute;\\n top: 100%;\\n z-index: 5;\\n display: none;\\n max-width: 100%;\\n padding: 0.25rem 0.5rem;\\n margin-top: 0.1rem;\\n font-size: 0.875rem;\\n color: #fff;\\n background-color: rgba(25, 135, 84, 0.9);\\n border-radius: 0.25rem;\\n}\\n\\n.was-validated :valid ~ .valid-feedback,\\n.was-validated :valid ~ .valid-tooltip,\\n.is-valid ~ .valid-feedback,\\n.is-valid ~ .valid-tooltip {\\n display: block;\\n}\\n\\n.was-validated .form-control:valid, .form-control.is-valid {\\n border-color: #198754;\\n padding-right: calc(1.5em + 0.75rem);\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");\\n background-repeat: no-repeat;\\n background-position: right calc(0.375em + 0.1875rem) center;\\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\\n}\\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\\n border-color: #198754;\\n box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\\n}\\n\\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\\n padding-right: calc(1.5em + 0.75rem);\\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\\n}\\n\\n.was-validated .form-select:valid, .form-select.is-valid {\\n border-color: #198754;\\n}\\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\\\"1\\\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\\\"1\\\"] {\\n padding-right: 4.125rem;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\\\"), url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");\\n background-position: right 0.75rem center, center right 2.25rem;\\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\\n}\\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\\n border-color: #198754;\\n box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\\n}\\n\\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\\n border-color: #198754;\\n}\\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\\n background-color: #198754;\\n}\\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\\n box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\\n}\\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\\n color: #198754;\\n}\\n\\n.form-check-inline .form-check-input ~ .valid-feedback {\\n margin-left: 0.5em;\\n}\\n\\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\\n.was-validated .input-group .form-select:valid,\\n.input-group .form-select.is-valid {\\n z-index: 1;\\n}\\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\\n.was-validated .input-group .form-select:valid:focus,\\n.input-group .form-select.is-valid:focus {\\n z-index: 3;\\n}\\n\\n.invalid-feedback {\\n display: none;\\n width: 100%;\\n margin-top: 0.25rem;\\n font-size: 0.875em;\\n color: #dc3545;\\n}\\n\\n.invalid-tooltip {\\n position: absolute;\\n top: 100%;\\n z-index: 5;\\n display: none;\\n max-width: 100%;\\n padding: 0.25rem 0.5rem;\\n margin-top: 0.1rem;\\n font-size: 0.875rem;\\n color: #fff;\\n background-color: rgba(220, 53, 69, 0.9);\\n border-radius: 0.25rem;\\n}\\n\\n.was-validated :invalid ~ .invalid-feedback,\\n.was-validated :invalid ~ .invalid-tooltip,\\n.is-invalid ~ .invalid-feedback,\\n.is-invalid ~ .invalid-tooltip {\\n display: block;\\n}\\n\\n.was-validated .form-control:invalid, .form-control.is-invalid {\\n border-color: #dc3545;\\n padding-right: calc(1.5em + 0.75rem);\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\\\");\\n background-repeat: no-repeat;\\n background-position: right calc(0.375em + 0.1875rem) center;\\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\\n}\\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\\n border-color: #dc3545;\\n box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\\n}\\n\\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\\n padding-right: calc(1.5em + 0.75rem);\\n background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\\n}\\n\\n.was-validated .form-select:invalid, .form-select.is-invalid {\\n border-color: #dc3545;\\n}\\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\\\"1\\\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\\\"1\\\"] {\\n padding-right: 4.125rem;\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\\\"), url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\\\");\\n background-position: right 0.75rem center, center right 2.25rem;\\n background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\\n}\\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\\n border-color: #dc3545;\\n box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\\n}\\n\\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\\n border-color: #dc3545;\\n}\\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\\n background-color: #dc3545;\\n}\\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\\n box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\\n}\\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\\n color: #dc3545;\\n}\\n\\n.form-check-inline .form-check-input ~ .invalid-feedback {\\n margin-left: 0.5em;\\n}\\n\\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\\n.was-validated .input-group .form-select:invalid,\\n.input-group .form-select.is-invalid {\\n z-index: 2;\\n}\\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\\n.was-validated .input-group .form-select:invalid:focus,\\n.input-group .form-select.is-invalid:focus {\\n z-index: 3;\\n}\\n\\n.btn {\\n display: inline-block;\\n align-self: center;\\n font-weight: 400;\\n line-height: 1.5;\\n color: #212529;\\n text-align: center;\\n text-decoration: none;\\n vertical-align: middle;\\n cursor: pointer;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n background-color: transparent;\\n border: 1px solid transparent;\\n padding: 0.375rem 0.75rem;\\n font-size: 1rem;\\n border-radius: 0.25rem;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .btn {\\n transition: none;\\n }\\n}\\n.btn:hover {\\n color: #212529;\\n}\\n.btn-check:focus + .btn, .btn:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\\n pointer-events: none;\\n opacity: 0.65;\\n}\\n\\n.btn-primary {\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.btn-primary:hover {\\n color: #fff;\\n background-color: #0b5ed7;\\n border-color: #0a58ca;\\n}\\n.btn-check:focus + .btn-primary, .btn-primary:focus {\\n color: #fff;\\n background-color: #0b5ed7;\\n border-color: #0a58ca;\\n box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\\n}\\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\\n color: #fff;\\n background-color: #0a58ca;\\n border-color: #0a53be;\\n}\\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\\n}\\n.btn-primary:disabled, .btn-primary.disabled {\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n\\n.btn-secondary {\\n color: #fff;\\n background-color: #6c757d;\\n border-color: #6c757d;\\n}\\n.btn-secondary:hover {\\n color: #fff;\\n background-color: #5c636a;\\n border-color: #565e64;\\n}\\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\\n color: #fff;\\n background-color: #5c636a;\\n border-color: #565e64;\\n box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\\n}\\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\\n color: #fff;\\n background-color: #565e64;\\n border-color: #51585e;\\n}\\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\\n}\\n.btn-secondary:disabled, .btn-secondary.disabled {\\n color: #fff;\\n background-color: #6c757d;\\n border-color: #6c757d;\\n}\\n\\n.btn-success {\\n color: #fff;\\n background-color: #198754;\\n border-color: #198754;\\n}\\n.btn-success:hover {\\n color: #fff;\\n background-color: #157347;\\n border-color: #146c43;\\n}\\n.btn-check:focus + .btn-success, .btn-success:focus {\\n color: #fff;\\n background-color: #157347;\\n border-color: #146c43;\\n box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\\n}\\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\\n color: #fff;\\n background-color: #146c43;\\n border-color: #13653f;\\n}\\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\\n}\\n.btn-success:disabled, .btn-success.disabled {\\n color: #fff;\\n background-color: #198754;\\n border-color: #198754;\\n}\\n\\n.btn-info {\\n color: #000;\\n background-color: #0dcaf0;\\n border-color: #0dcaf0;\\n}\\n.btn-info:hover {\\n color: #000;\\n background-color: #31d2f2;\\n border-color: #25cff2;\\n}\\n.btn-check:focus + .btn-info, .btn-info:focus {\\n color: #000;\\n background-color: #31d2f2;\\n border-color: #25cff2;\\n box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\\n}\\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\\n color: #000;\\n background-color: #3dd5f3;\\n border-color: #25cff2;\\n}\\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\\n}\\n.btn-info:disabled, .btn-info.disabled {\\n color: #000;\\n background-color: #0dcaf0;\\n border-color: #0dcaf0;\\n}\\n\\n.btn-warning {\\n color: #000;\\n background-color: #ffc107;\\n border-color: #ffc107;\\n}\\n.btn-warning:hover {\\n color: #000;\\n background-color: #ffca2c;\\n border-color: #ffc720;\\n}\\n.btn-check:focus + .btn-warning, .btn-warning:focus {\\n color: #000;\\n background-color: #ffca2c;\\n border-color: #ffc720;\\n box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\\n}\\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\\n color: #000;\\n background-color: #ffcd39;\\n border-color: #ffc720;\\n}\\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\\n}\\n.btn-warning:disabled, .btn-warning.disabled {\\n color: #000;\\n background-color: #ffc107;\\n border-color: #ffc107;\\n}\\n\\n.btn-danger {\\n color: #fff;\\n background-color: #dc3545;\\n border-color: #dc3545;\\n}\\n.btn-danger:hover {\\n color: #fff;\\n background-color: #bb2d3b;\\n border-color: #b02a37;\\n}\\n.btn-check:focus + .btn-danger, .btn-danger:focus {\\n color: #fff;\\n background-color: #bb2d3b;\\n border-color: #b02a37;\\n box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\\n}\\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\\n color: #fff;\\n background-color: #b02a37;\\n border-color: #a52834;\\n}\\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\\n}\\n.btn-danger:disabled, .btn-danger.disabled {\\n color: #fff;\\n background-color: #dc3545;\\n border-color: #dc3545;\\n}\\n\\n.btn-light {\\n color: #000;\\n background-color: #f8f9fa;\\n border-color: #f8f9fa;\\n}\\n.btn-light:hover {\\n color: #000;\\n background-color: #f9fafb;\\n border-color: #f9fafb;\\n}\\n.btn-check:focus + .btn-light, .btn-light:focus {\\n color: #000;\\n background-color: #f9fafb;\\n border-color: #f9fafb;\\n box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\\n}\\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\\n color: #000;\\n background-color: #f9fafb;\\n border-color: #f9fafb;\\n}\\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\\n}\\n.btn-light:disabled, .btn-light.disabled {\\n color: #000;\\n background-color: #f8f9fa;\\n border-color: #f8f9fa;\\n}\\n\\n.btn-dark {\\n color: #fff;\\n background-color: #212529;\\n border-color: #212529;\\n}\\n.btn-dark:hover {\\n color: #fff;\\n background-color: #1c1f23;\\n border-color: #1a1e21;\\n}\\n.btn-check:focus + .btn-dark, .btn-dark:focus {\\n color: #fff;\\n background-color: #1c1f23;\\n border-color: #1a1e21;\\n box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\\n}\\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\\n color: #fff;\\n background-color: #1a1e21;\\n border-color: #191c1f;\\n}\\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\\n box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\\n}\\n.btn-dark:disabled, .btn-dark.disabled {\\n color: #fff;\\n background-color: #212529;\\n border-color: #212529;\\n}\\n\\n.btn-outline-primary {\\n color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.btn-outline-primary:hover {\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\\n}\\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\\n}\\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\\n color: #0d6efd;\\n background-color: transparent;\\n}\\n\\n.btn-outline-secondary {\\n color: #6c757d;\\n border-color: #6c757d;\\n}\\n.btn-outline-secondary:hover {\\n color: #fff;\\n background-color: #6c757d;\\n border-color: #6c757d;\\n}\\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\\n box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\\n}\\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\\n color: #fff;\\n background-color: #6c757d;\\n border-color: #6c757d;\\n}\\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\\n}\\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\\n color: #6c757d;\\n background-color: transparent;\\n}\\n\\n.btn-outline-success {\\n color: #198754;\\n border-color: #198754;\\n}\\n.btn-outline-success:hover {\\n color: #fff;\\n background-color: #198754;\\n border-color: #198754;\\n}\\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\\n box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\\n}\\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\\n color: #fff;\\n background-color: #198754;\\n border-color: #198754;\\n}\\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\\n}\\n.btn-outline-success:disabled, .btn-outline-success.disabled {\\n color: #198754;\\n background-color: transparent;\\n}\\n\\n.btn-outline-info {\\n color: #0dcaf0;\\n border-color: #0dcaf0;\\n}\\n.btn-outline-info:hover {\\n color: #000;\\n background-color: #0dcaf0;\\n border-color: #0dcaf0;\\n}\\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\\n box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\\n}\\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\\n color: #000;\\n background-color: #0dcaf0;\\n border-color: #0dcaf0;\\n}\\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\\n}\\n.btn-outline-info:disabled, .btn-outline-info.disabled {\\n color: #0dcaf0;\\n background-color: transparent;\\n}\\n\\n.btn-outline-warning {\\n color: #ffc107;\\n border-color: #ffc107;\\n}\\n.btn-outline-warning:hover {\\n color: #000;\\n background-color: #ffc107;\\n border-color: #ffc107;\\n}\\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\\n box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\\n}\\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\\n color: #000;\\n background-color: #ffc107;\\n border-color: #ffc107;\\n}\\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\\n}\\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\\n color: #ffc107;\\n background-color: transparent;\\n}\\n\\n.btn-outline-danger {\\n color: #dc3545;\\n border-color: #dc3545;\\n}\\n.btn-outline-danger:hover {\\n color: #fff;\\n background-color: #dc3545;\\n border-color: #dc3545;\\n}\\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\\n box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\\n}\\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\\n color: #fff;\\n background-color: #dc3545;\\n border-color: #dc3545;\\n}\\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\\n}\\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\\n color: #dc3545;\\n background-color: transparent;\\n}\\n\\n.btn-outline-light {\\n color: #f8f9fa;\\n border-color: #f8f9fa;\\n}\\n.btn-outline-light:hover {\\n color: #000;\\n background-color: #f8f9fa;\\n border-color: #f8f9fa;\\n}\\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\\n box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\\n}\\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\\n color: #000;\\n background-color: #f8f9fa;\\n border-color: #f8f9fa;\\n}\\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\\n}\\n.btn-outline-light:disabled, .btn-outline-light.disabled {\\n color: #f8f9fa;\\n background-color: transparent;\\n}\\n\\n.btn-outline-dark {\\n color: #212529;\\n border-color: #212529;\\n}\\n.btn-outline-dark:hover {\\n color: #fff;\\n background-color: #212529;\\n border-color: #212529;\\n}\\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\\n box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\\n}\\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\\n color: #fff;\\n background-color: #212529;\\n border-color: #212529;\\n}\\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\\n box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\\n}\\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\\n color: #212529;\\n background-color: transparent;\\n}\\n\\n.btn-link {\\n font-weight: 400;\\n color: #0d6efd;\\n text-decoration: underline;\\n}\\n.btn-link:hover {\\n color: #0a58ca;\\n}\\n.btn-link:disabled, .btn-link.disabled {\\n color: #6c757d;\\n}\\n\\n.btn-lg, .btn-group-lg > .btn {\\n padding: 0.5rem 1rem;\\n font-size: 1.25rem;\\n border-radius: 0.3rem;\\n}\\n\\n.btn-sm, .btn-group-sm > .btn {\\n padding: 0.25rem 0.5rem;\\n font-size: 0.875rem;\\n border-radius: 0.2rem;\\n}\\n\\n.fade {\\n transition: opacity 0.15s linear;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .fade {\\n transition: none;\\n }\\n}\\n.fade:not(.show) {\\n opacity: 0;\\n}\\n\\n.collapse:not(.show) {\\n display: none;\\n}\\n\\n.collapsing {\\n height: 0;\\n overflow: hidden;\\n transition: height 0.35s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .collapsing {\\n transition: none;\\n }\\n}\\n.collapsing.collapse-horizontal {\\n width: 0;\\n height: auto;\\n transition: width 0.35s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .collapsing.collapse-horizontal {\\n transition: none;\\n }\\n}\\n\\n.dropup,\\n.dropend,\\n.dropdown,\\n.dropstart {\\n position: relative;\\n}\\n\\n.dropdown-toggle {\\n white-space: nowrap;\\n}\\n.dropdown-toggle::after {\\n display: inline-block;\\n margin-left: 0.255em;\\n vertical-align: 0.255em;\\n content: \\\"\\\";\\n border-top: 0.3em solid;\\n border-right: 0.3em solid transparent;\\n border-bottom: 0;\\n border-left: 0.3em solid transparent;\\n}\\n.dropdown-toggle:empty::after {\\n margin-left: 0;\\n}\\n\\n.dropdown-menu {\\n position: absolute;\\n z-index: 1000;\\n display: none;\\n min-width: 10rem;\\n padding: 0.5rem 0;\\n margin: 0;\\n font-size: 1rem;\\n color: #212529;\\n text-align: left;\\n list-style: none;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid rgba(0, 0, 0, 0.15);\\n border-radius: 0.25rem;\\n}\\n.dropdown-menu[data-bs-popper] {\\n top: 100%;\\n left: 0;\\n margin-top: 0.125rem;\\n}\\n\\n.dropdown-menu-start {\\n --bs-position: start;\\n}\\n.dropdown-menu-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n}\\n\\n.dropdown-menu-end {\\n --bs-position: end;\\n}\\n.dropdown-menu-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n}\\n\\n@media (min-width: 576px) {\\n .dropdown-menu-sm-start {\\n --bs-position: start;\\n }\\n .dropdown-menu-sm-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu-sm-end {\\n --bs-position: end;\\n }\\n .dropdown-menu-sm-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n }\\n}\\n@media (min-width: 768px) {\\n .dropdown-menu-md-start {\\n --bs-position: start;\\n }\\n .dropdown-menu-md-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu-md-end {\\n --bs-position: end;\\n }\\n .dropdown-menu-md-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n }\\n}\\n@media (min-width: 992px) {\\n .dropdown-menu-lg-start {\\n --bs-position: start;\\n }\\n .dropdown-menu-lg-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu-lg-end {\\n --bs-position: end;\\n }\\n .dropdown-menu-lg-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n }\\n}\\n@media (min-width: 1200px) {\\n .dropdown-menu-xl-start {\\n --bs-position: start;\\n }\\n .dropdown-menu-xl-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu-xl-end {\\n --bs-position: end;\\n }\\n .dropdown-menu-xl-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n }\\n}\\n@media (min-width: 1400px) {\\n .dropdown-menu-xxl-start {\\n --bs-position: start;\\n }\\n .dropdown-menu-xxl-start[data-bs-popper] {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu-xxl-end {\\n --bs-position: end;\\n }\\n .dropdown-menu-xxl-end[data-bs-popper] {\\n right: 0;\\n left: auto;\\n }\\n}\\n.dropup .dropdown-menu[data-bs-popper] {\\n top: auto;\\n bottom: 100%;\\n margin-top: 0;\\n margin-bottom: 0.125rem;\\n}\\n.dropup .dropdown-toggle::after {\\n display: inline-block;\\n margin-left: 0.255em;\\n vertical-align: 0.255em;\\n content: \\\"\\\";\\n border-top: 0;\\n border-right: 0.3em solid transparent;\\n border-bottom: 0.3em solid;\\n border-left: 0.3em solid transparent;\\n}\\n.dropup .dropdown-toggle:empty::after {\\n margin-left: 0;\\n}\\n\\n.dropend .dropdown-menu[data-bs-popper] {\\n top: 0;\\n right: auto;\\n left: 100%;\\n margin-top: 0;\\n margin-left: 0.125rem;\\n}\\n.dropend .dropdown-toggle::after {\\n display: inline-block;\\n margin-left: 0.255em;\\n vertical-align: 0.255em;\\n content: \\\"\\\";\\n border-top: 0.3em solid transparent;\\n border-right: 0;\\n border-bottom: 0.3em solid transparent;\\n border-left: 0.3em solid;\\n}\\n.dropend .dropdown-toggle:empty::after {\\n margin-left: 0;\\n}\\n.dropend .dropdown-toggle::after {\\n vertical-align: 0;\\n}\\n\\n.dropstart .dropdown-menu[data-bs-popper] {\\n top: 0;\\n right: 100%;\\n left: auto;\\n margin-top: 0;\\n margin-right: 0.125rem;\\n}\\n.dropstart .dropdown-toggle::after {\\n display: inline-block;\\n margin-left: 0.255em;\\n vertical-align: 0.255em;\\n content: \\\"\\\";\\n}\\n.dropstart .dropdown-toggle::after {\\n display: none;\\n}\\n.dropstart .dropdown-toggle::before {\\n display: inline-block;\\n margin-right: 0.255em;\\n vertical-align: 0.255em;\\n content: \\\"\\\";\\n border-top: 0.3em solid transparent;\\n border-right: 0.3em solid;\\n border-bottom: 0.3em solid transparent;\\n}\\n.dropstart .dropdown-toggle:empty::after {\\n margin-left: 0;\\n}\\n.dropstart .dropdown-toggle::before {\\n vertical-align: 0;\\n}\\n\\n.dropdown-divider {\\n height: 0;\\n margin: 0.5rem 0;\\n overflow: hidden;\\n border-top: 1px solid rgba(0, 0, 0, 0.15);\\n}\\n\\n.dropdown-item {\\n display: block;\\n width: 100%;\\n padding: 0.25rem 1rem;\\n clear: both;\\n font-weight: 400;\\n color: #212529;\\n text-align: inherit;\\n text-decoration: none;\\n white-space: nowrap;\\n background-color: transparent;\\n border: 0;\\n}\\n.dropdown-item:hover, .dropdown-item:focus {\\n color: #1e2125;\\n background-color: #e9ecef;\\n}\\n.dropdown-item.active, .dropdown-item:active {\\n color: #fff;\\n text-decoration: none;\\n background-color: #0d6efd;\\n}\\n.dropdown-item.disabled, .dropdown-item:disabled {\\n color: #adb5bd;\\n pointer-events: none;\\n background-color: transparent;\\n}\\n\\n.dropdown-menu.show {\\n display: block;\\n}\\n\\n.dropdown-header {\\n display: block;\\n padding: 0.5rem 1rem;\\n margin-bottom: 0;\\n font-size: 0.875rem;\\n color: #6c757d;\\n white-space: nowrap;\\n}\\n\\n.dropdown-item-text {\\n display: block;\\n padding: 0.25rem 1rem;\\n color: #212529;\\n}\\n\\n.dropdown-menu-dark {\\n color: #dee2e6;\\n background-color: #343a40;\\n border-color: rgba(0, 0, 0, 0.15);\\n}\\n.dropdown-menu-dark .dropdown-item {\\n color: #dee2e6;\\n}\\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\\n color: #fff;\\n background-color: rgba(255, 255, 255, 0.15);\\n}\\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\\n color: #fff;\\n background-color: #0d6efd;\\n}\\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\\n color: #adb5bd;\\n}\\n.dropdown-menu-dark .dropdown-divider {\\n border-color: rgba(0, 0, 0, 0.15);\\n}\\n.dropdown-menu-dark .dropdown-item-text {\\n color: #dee2e6;\\n}\\n.dropdown-menu-dark .dropdown-header {\\n color: #adb5bd;\\n}\\n\\n.btn-group,\\n.btn-group-vertical {\\n position: relative;\\n display: inline-flex;\\n vertical-align: middle;\\n}\\n.btn-group > .btn,\\n.btn-group-vertical > .btn {\\n position: relative;\\n flex: 1 1 auto;\\n}\\n.btn-group > .btn-check:checked + .btn,\\n.btn-group > .btn-check:focus + .btn,\\n.btn-group > .btn:hover,\\n.btn-group > .btn:focus,\\n.btn-group > .btn:active,\\n.btn-group > .btn.active,\\n.btn-group-vertical > .btn-check:checked + .btn,\\n.btn-group-vertical > .btn-check:focus + .btn,\\n.btn-group-vertical > .btn:hover,\\n.btn-group-vertical > .btn:focus,\\n.btn-group-vertical > .btn:active,\\n.btn-group-vertical > .btn.active {\\n z-index: 1;\\n}\\n\\n.btn-toolbar {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start;\\n}\\n.btn-toolbar .input-group {\\n width: auto;\\n}\\n\\n.btn-group > .btn:not(:first-child),\\n.btn-group > .btn-group:not(:first-child) {\\n margin-left: -1px;\\n}\\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\\n.btn-group > .btn-group:not(:last-child) > .btn {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n.btn-group > .btn:nth-child(n+3),\\n.btn-group > :not(.btn-check) + .btn,\\n.btn-group > .btn-group:not(:first-child) > .btn {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n\\n.dropdown-toggle-split {\\n padding-right: 0.5625rem;\\n padding-left: 0.5625rem;\\n}\\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\\n margin-left: 0;\\n}\\n.dropstart .dropdown-toggle-split::before {\\n margin-right: 0;\\n}\\n\\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\\n padding-right: 0.375rem;\\n padding-left: 0.375rem;\\n}\\n\\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\\n padding-right: 0.75rem;\\n padding-left: 0.75rem;\\n}\\n\\n.btn-group-vertical {\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n}\\n.btn-group-vertical > .btn,\\n.btn-group-vertical > .btn-group {\\n width: 100%;\\n}\\n.btn-group-vertical > .btn:not(:first-child),\\n.btn-group-vertical > .btn-group:not(:first-child) {\\n margin-top: -1px;\\n}\\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\\n border-bottom-right-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n.btn-group-vertical > .btn ~ .btn,\\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.nav {\\n display: flex;\\n flex-wrap: wrap;\\n padding-left: 0;\\n margin-bottom: 0;\\n list-style: none;\\n}\\n\\n.nav-link {\\n display: block;\\n padding: 0.5rem 1rem;\\n color: #0d6efd;\\n text-decoration: none;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .nav-link {\\n transition: none;\\n }\\n}\\n.nav-link:hover, .nav-link:focus {\\n color: #0a58ca;\\n}\\n.nav-link.disabled {\\n color: #6c757d;\\n pointer-events: none;\\n cursor: default;\\n}\\n\\n.nav-tabs {\\n border-bottom: 1px solid #dee2e6;\\n}\\n.nav-tabs .nav-link {\\n margin-bottom: -1px;\\n background: none;\\n border: 1px solid transparent;\\n border-top-left-radius: 0.25rem;\\n border-top-right-radius: 0.25rem;\\n}\\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\\n border-color: #e9ecef #e9ecef #dee2e6;\\n isolation: isolate;\\n}\\n.nav-tabs .nav-link.disabled {\\n color: #6c757d;\\n background-color: transparent;\\n border-color: transparent;\\n}\\n.nav-tabs .nav-link.active,\\n.nav-tabs .nav-item.show .nav-link {\\n color: #495057;\\n background-color: #fff;\\n border-color: #dee2e6 #dee2e6 #fff;\\n}\\n.nav-tabs .dropdown-menu {\\n margin-top: -1px;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0;\\n}\\n\\n.nav-pills .nav-link {\\n background: none;\\n border: 0;\\n border-radius: 0.25rem;\\n}\\n.nav-pills .nav-link.active,\\n.nav-pills .show > .nav-link {\\n color: #fff;\\n background-color: #0d6efd;\\n}\\n\\n.nav-fill > .nav-link,\\n.nav-fill .nav-item {\\n flex: 1 1 auto;\\n text-align: center;\\n}\\n\\n.nav-justified > .nav-link,\\n.nav-justified .nav-item {\\n flex-basis: 0;\\n flex-grow: 1;\\n text-align: center;\\n}\\n\\n.nav-fill .nav-item .nav-link,\\n.nav-justified .nav-item .nav-link {\\n width: 100%;\\n}\\n\\n.tab-content > .tab-pane {\\n display: none;\\n}\\n.tab-content > .active {\\n display: block;\\n}\\n\\n.navbar {\\n position: relative;\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: space-between;\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n.navbar > .container,\\n.navbar > .container-fluid,\\n.navbar > .container-sm,\\n.navbar > .container-md,\\n.navbar > .container-lg,\\n.navbar > .container-xl,\\n.navbar > .container-xxl {\\n display: flex;\\n flex-wrap: inherit;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.navbar-brand {\\n padding-top: 0.3125rem;\\n padding-bottom: 0.3125rem;\\n margin-right: 1rem;\\n font-size: 1.25rem;\\n text-decoration: none;\\n white-space: nowrap;\\n}\\n.navbar-nav {\\n display: flex;\\n flex-direction: column;\\n padding-left: 0;\\n margin-bottom: 0;\\n list-style: none;\\n}\\n.navbar-nav .nav-link {\\n padding-right: 0;\\n padding-left: 0;\\n}\\n.navbar-nav .dropdown-menu {\\n position: static;\\n}\\n\\n.navbar-text {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n\\n.navbar-collapse {\\n flex-basis: 100%;\\n flex-grow: 1;\\n align-items: center;\\n}\\n\\n.navbar-toggler {\\n padding: 0.25rem 0.75rem;\\n font-size: 1.25rem;\\n line-height: 1;\\n background-color: transparent;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n transition: box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .navbar-toggler {\\n transition: none;\\n }\\n}\\n.navbar-toggler:hover {\\n text-decoration: none;\\n}\\n.navbar-toggler:focus {\\n text-decoration: none;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem;\\n}\\n\\n.navbar-toggler-icon {\\n display: inline-block;\\n width: 1.5em;\\n height: 1.5em;\\n vertical-align: middle;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 100%;\\n}\\n\\n.navbar-nav-scroll {\\n max-height: var(--bs-scroll-height, 75vh);\\n overflow-y: auto;\\n}\\n\\n@media (min-width: 576px) {\\n .navbar-expand-sm {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n }\\n .navbar-expand-sm .navbar-nav {\\n flex-direction: row;\\n }\\n .navbar-expand-sm .navbar-nav .dropdown-menu {\\n position: absolute;\\n }\\n .navbar-expand-sm .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n }\\n .navbar-expand-sm .navbar-nav-scroll {\\n overflow: visible;\\n }\\n .navbar-expand-sm .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n }\\n .navbar-expand-sm .navbar-toggler {\\n display: none;\\n }\\n .navbar-expand-sm .offcanvas-header {\\n display: none;\\n }\\n .navbar-expand-sm .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n }\\n .navbar-expand-sm .offcanvas-top,\\n.navbar-expand-sm .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n }\\n .navbar-expand-sm .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n }\\n}\\n@media (min-width: 768px) {\\n .navbar-expand-md {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n }\\n .navbar-expand-md .navbar-nav {\\n flex-direction: row;\\n }\\n .navbar-expand-md .navbar-nav .dropdown-menu {\\n position: absolute;\\n }\\n .navbar-expand-md .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n }\\n .navbar-expand-md .navbar-nav-scroll {\\n overflow: visible;\\n }\\n .navbar-expand-md .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n }\\n .navbar-expand-md .navbar-toggler {\\n display: none;\\n }\\n .navbar-expand-md .offcanvas-header {\\n display: none;\\n }\\n .navbar-expand-md .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n }\\n .navbar-expand-md .offcanvas-top,\\n.navbar-expand-md .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n }\\n .navbar-expand-md .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n }\\n}\\n@media (min-width: 992px) {\\n .navbar-expand-lg {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n }\\n .navbar-expand-lg .navbar-nav {\\n flex-direction: row;\\n }\\n .navbar-expand-lg .navbar-nav .dropdown-menu {\\n position: absolute;\\n }\\n .navbar-expand-lg .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n }\\n .navbar-expand-lg .navbar-nav-scroll {\\n overflow: visible;\\n }\\n .navbar-expand-lg .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n }\\n .navbar-expand-lg .navbar-toggler {\\n display: none;\\n }\\n .navbar-expand-lg .offcanvas-header {\\n display: none;\\n }\\n .navbar-expand-lg .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n }\\n .navbar-expand-lg .offcanvas-top,\\n.navbar-expand-lg .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n }\\n .navbar-expand-lg .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n }\\n}\\n@media (min-width: 1200px) {\\n .navbar-expand-xl {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n }\\n .navbar-expand-xl .navbar-nav {\\n flex-direction: row;\\n }\\n .navbar-expand-xl .navbar-nav .dropdown-menu {\\n position: absolute;\\n }\\n .navbar-expand-xl .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n }\\n .navbar-expand-xl .navbar-nav-scroll {\\n overflow: visible;\\n }\\n .navbar-expand-xl .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n }\\n .navbar-expand-xl .navbar-toggler {\\n display: none;\\n }\\n .navbar-expand-xl .offcanvas-header {\\n display: none;\\n }\\n .navbar-expand-xl .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n }\\n .navbar-expand-xl .offcanvas-top,\\n.navbar-expand-xl .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n }\\n .navbar-expand-xl .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n }\\n}\\n@media (min-width: 1400px) {\\n .navbar-expand-xxl {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n }\\n .navbar-expand-xxl .navbar-nav {\\n flex-direction: row;\\n }\\n .navbar-expand-xxl .navbar-nav .dropdown-menu {\\n position: absolute;\\n }\\n .navbar-expand-xxl .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n }\\n .navbar-expand-xxl .navbar-nav-scroll {\\n overflow: visible;\\n }\\n .navbar-expand-xxl .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n }\\n .navbar-expand-xxl .navbar-toggler {\\n display: none;\\n }\\n .navbar-expand-xxl .offcanvas-header {\\n display: none;\\n }\\n .navbar-expand-xxl .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n }\\n .navbar-expand-xxl .offcanvas-top,\\n.navbar-expand-xxl .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n }\\n .navbar-expand-xxl .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n }\\n}\\n.navbar-expand {\\n flex-wrap: nowrap;\\n justify-content: flex-start;\\n}\\n.navbar-expand .navbar-nav {\\n flex-direction: row;\\n}\\n.navbar-expand .navbar-nav .dropdown-menu {\\n position: absolute;\\n}\\n.navbar-expand .navbar-nav .nav-link {\\n padding-right: 0.5rem;\\n padding-left: 0.5rem;\\n}\\n.navbar-expand .navbar-nav-scroll {\\n overflow: visible;\\n}\\n.navbar-expand .navbar-collapse {\\n display: flex !important;\\n flex-basis: auto;\\n}\\n.navbar-expand .navbar-toggler {\\n display: none;\\n}\\n.navbar-expand .offcanvas-header {\\n display: none;\\n}\\n.navbar-expand .offcanvas {\\n position: inherit;\\n bottom: 0;\\n z-index: 1000;\\n flex-grow: 1;\\n visibility: visible !important;\\n background-color: transparent;\\n border-right: 0;\\n border-left: 0;\\n transition: none;\\n transform: none;\\n}\\n.navbar-expand .offcanvas-top,\\n.navbar-expand .offcanvas-bottom {\\n height: auto;\\n border-top: 0;\\n border-bottom: 0;\\n}\\n.navbar-expand .offcanvas-body {\\n display: flex;\\n flex-grow: 0;\\n padding: 0;\\n overflow-y: visible;\\n}\\n\\n.navbar-light .navbar-brand {\\n color: rgba(0, 0, 0, 0.9);\\n}\\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\\n color: rgba(0, 0, 0, 0.9);\\n}\\n.navbar-light .navbar-nav .nav-link {\\n color: rgba(0, 0, 0, 0.55);\\n}\\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\\n color: rgba(0, 0, 0, 0.7);\\n}\\n.navbar-light .navbar-nav .nav-link.disabled {\\n color: rgba(0, 0, 0, 0.3);\\n}\\n.navbar-light .navbar-nav .show > .nav-link,\\n.navbar-light .navbar-nav .nav-link.active {\\n color: rgba(0, 0, 0, 0.9);\\n}\\n.navbar-light .navbar-toggler {\\n color: rgba(0, 0, 0, 0.55);\\n border-color: rgba(0, 0, 0, 0.1);\\n}\\n.navbar-light .navbar-toggler-icon {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\");\\n}\\n.navbar-light .navbar-text {\\n color: rgba(0, 0, 0, 0.55);\\n}\\n.navbar-light .navbar-text a,\\n.navbar-light .navbar-text a:hover,\\n.navbar-light .navbar-text a:focus {\\n color: rgba(0, 0, 0, 0.9);\\n}\\n\\n.navbar-dark .navbar-brand {\\n color: #fff;\\n}\\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\\n color: #fff;\\n}\\n.navbar-dark .navbar-nav .nav-link {\\n color: rgba(255, 255, 255, 0.55);\\n}\\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\\n color: rgba(255, 255, 255, 0.75);\\n}\\n.navbar-dark .navbar-nav .nav-link.disabled {\\n color: rgba(255, 255, 255, 0.25);\\n}\\n.navbar-dark .navbar-nav .show > .nav-link,\\n.navbar-dark .navbar-nav .nav-link.active {\\n color: #fff;\\n}\\n.navbar-dark .navbar-toggler {\\n color: rgba(255, 255, 255, 0.55);\\n border-color: rgba(255, 255, 255, 0.1);\\n}\\n.navbar-dark .navbar-toggler-icon {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\");\\n}\\n.navbar-dark .navbar-text {\\n color: rgba(255, 255, 255, 0.55);\\n}\\n.navbar-dark .navbar-text a,\\n.navbar-dark .navbar-text a:hover,\\n.navbar-dark .navbar-text a:focus {\\n color: #fff;\\n}\\n\\n.card {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n min-width: 0;\\n word-wrap: break-word;\\n background-color: #fff;\\n background-clip: border-box;\\n border: 1px solid rgba(0, 0, 0, 0.125);\\n border-radius: 0.25rem;\\n}\\n.card > hr {\\n margin-right: 0;\\n margin-left: 0;\\n}\\n.card > .list-group {\\n border-top: inherit;\\n border-bottom: inherit;\\n}\\n.card > .list-group:first-child {\\n border-top-width: 0;\\n border-top-left-radius: calc(0.25rem - 1px);\\n border-top-right-radius: calc(0.25rem - 1px);\\n}\\n.card > .list-group:last-child {\\n border-bottom-width: 0;\\n border-bottom-right-radius: calc(0.25rem - 1px);\\n border-bottom-left-radius: calc(0.25rem - 1px);\\n}\\n.card > .card-header + .list-group,\\n.card > .list-group + .card-footer {\\n border-top: 0;\\n}\\n\\n.card-body {\\n flex: 1 1 auto;\\n padding: 1rem 1rem;\\n}\\n\\n.card-title {\\n margin-bottom: 0.5rem;\\n}\\n\\n.card-subtitle {\\n margin-top: -0.25rem;\\n margin-bottom: 0;\\n}\\n\\n.card-text:last-child {\\n margin-bottom: 0;\\n}\\n\\n.card-link + .card-link {\\n margin-left: 1rem;\\n}\\n\\n.card-header {\\n padding: 0.5rem 1rem;\\n margin-bottom: 0;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\\n}\\n.card-header:first-child {\\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\\n}\\n\\n.card-footer {\\n padding: 0.5rem 1rem;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-top: 1px solid rgba(0, 0, 0, 0.125);\\n}\\n.card-footer:last-child {\\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\\n}\\n\\n.card-header-tabs {\\n margin-right: -0.5rem;\\n margin-bottom: -0.5rem;\\n margin-left: -0.5rem;\\n border-bottom: 0;\\n}\\n\\n.card-header-pills {\\n margin-right: -0.5rem;\\n margin-left: -0.5rem;\\n}\\n\\n.card-img-overlay {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n padding: 1rem;\\n border-radius: calc(0.25rem - 1px);\\n}\\n\\n.card-img,\\n.card-img-top,\\n.card-img-bottom {\\n width: 100%;\\n}\\n\\n.card-img,\\n.card-img-top {\\n border-top-left-radius: calc(0.25rem - 1px);\\n border-top-right-radius: calc(0.25rem - 1px);\\n}\\n\\n.card-img,\\n.card-img-bottom {\\n border-bottom-right-radius: calc(0.25rem - 1px);\\n border-bottom-left-radius: calc(0.25rem - 1px);\\n}\\n\\n.card-group > .card {\\n margin-bottom: 0.75rem;\\n}\\n@media (min-width: 576px) {\\n .card-group {\\n display: flex;\\n flex-flow: row wrap;\\n }\\n .card-group > .card {\\n flex: 1 0 0%;\\n margin-bottom: 0;\\n }\\n .card-group > .card + .card {\\n margin-left: 0;\\n border-left: 0;\\n }\\n .card-group > .card:not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n .card-group > .card:not(:last-child) .card-img-top,\\n.card-group > .card:not(:last-child) .card-header {\\n border-top-right-radius: 0;\\n }\\n .card-group > .card:not(:last-child) .card-img-bottom,\\n.card-group > .card:not(:last-child) .card-footer {\\n border-bottom-right-radius: 0;\\n }\\n .card-group > .card:not(:first-child) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n }\\n .card-group > .card:not(:first-child) .card-img-top,\\n.card-group > .card:not(:first-child) .card-header {\\n border-top-left-radius: 0;\\n }\\n .card-group > .card:not(:first-child) .card-img-bottom,\\n.card-group > .card:not(:first-child) .card-footer {\\n border-bottom-left-radius: 0;\\n }\\n}\\n\\n.accordion-button {\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n padding: 1rem 1.25rem;\\n font-size: 1rem;\\n color: #212529;\\n text-align: left;\\n background-color: #fff;\\n border: 0;\\n border-radius: 0;\\n overflow-anchor: none;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .accordion-button {\\n transition: none;\\n }\\n}\\n.accordion-button:not(.collapsed) {\\n color: #0c63e4;\\n background-color: #e7f1ff;\\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\\n}\\n.accordion-button:not(.collapsed)::after {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\\\");\\n transform: rotate(-180deg);\\n}\\n.accordion-button::after {\\n flex-shrink: 0;\\n width: 1.25rem;\\n height: 1.25rem;\\n margin-left: auto;\\n content: \\\"\\\";\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\\\");\\n background-repeat: no-repeat;\\n background-size: 1.25rem;\\n transition: transform 0.2s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .accordion-button::after {\\n transition: none;\\n }\\n}\\n.accordion-button:hover {\\n z-index: 2;\\n}\\n.accordion-button:focus {\\n z-index: 3;\\n border-color: #86b7fe;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n\\n.accordion-header {\\n margin-bottom: 0;\\n}\\n\\n.accordion-item {\\n background-color: #fff;\\n border: 1px solid rgba(0, 0, 0, 0.125);\\n}\\n.accordion-item:first-of-type {\\n border-top-left-radius: 0.25rem;\\n border-top-right-radius: 0.25rem;\\n}\\n.accordion-item:first-of-type .accordion-button {\\n border-top-left-radius: calc(0.25rem - 1px);\\n border-top-right-radius: calc(0.25rem - 1px);\\n}\\n.accordion-item:not(:first-of-type) {\\n border-top: 0;\\n}\\n.accordion-item:last-of-type {\\n border-bottom-right-radius: 0.25rem;\\n border-bottom-left-radius: 0.25rem;\\n}\\n.accordion-item:last-of-type .accordion-button.collapsed {\\n border-bottom-right-radius: calc(0.25rem - 1px);\\n border-bottom-left-radius: calc(0.25rem - 1px);\\n}\\n.accordion-item:last-of-type .accordion-collapse {\\n border-bottom-right-radius: 0.25rem;\\n border-bottom-left-radius: 0.25rem;\\n}\\n\\n.accordion-body {\\n padding: 1rem 1.25rem;\\n}\\n\\n.accordion-flush .accordion-collapse {\\n border-width: 0;\\n}\\n.accordion-flush .accordion-item {\\n border-right: 0;\\n border-left: 0;\\n border-radius: 0;\\n}\\n.accordion-flush .accordion-item:first-child {\\n border-top: 0;\\n}\\n.accordion-flush .accordion-item:last-child {\\n border-bottom: 0;\\n}\\n.accordion-flush .accordion-item .accordion-button {\\n border-radius: 0;\\n}\\n\\n.breadcrumb {\\n display: flex;\\n flex-wrap: wrap;\\n padding: 0 0;\\n margin-bottom: 1rem;\\n list-style: none;\\n}\\n\\n.breadcrumb-item + .breadcrumb-item {\\n padding-left: 0.5rem;\\n}\\n.breadcrumb-item + .breadcrumb-item::before {\\n float: left;\\n padding-right: 0.5rem;\\n color: #6c757d;\\n content: var(--bs-breadcrumb-divider, \\\"/\\\") /* rtl: var(--bs-breadcrumb-divider, \\\"/\\\") */;\\n}\\n.breadcrumb-item.active {\\n color: #6c757d;\\n}\\n\\n.pagination {\\n display: flex;\\n padding-left: 0;\\n list-style: none;\\n}\\n\\n.page-link {\\n position: relative;\\n display: block;\\n color: #0d6efd;\\n text-decoration: none;\\n background-color: #fff;\\n border: 1px solid #dee2e6;\\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .page-link {\\n transition: none;\\n }\\n}\\n.page-link:hover {\\n z-index: 2;\\n color: #0a58ca;\\n background-color: #e9ecef;\\n border-color: #dee2e6;\\n}\\n.page-link:focus {\\n z-index: 3;\\n color: #0a58ca;\\n background-color: #e9ecef;\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n}\\n\\n.page-item:not(:first-child) .page-link {\\n margin-left: -1px;\\n}\\n.page-item.active .page-link {\\n z-index: 3;\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.page-item.disabled .page-link {\\n color: #6c757d;\\n pointer-events: none;\\n background-color: #fff;\\n border-color: #dee2e6;\\n}\\n\\n.page-link {\\n padding: 0.375rem 0.75rem;\\n}\\n\\n.page-item:first-child .page-link {\\n border-top-left-radius: 0.25rem;\\n border-bottom-left-radius: 0.25rem;\\n}\\n.page-item:last-child .page-link {\\n border-top-right-radius: 0.25rem;\\n border-bottom-right-radius: 0.25rem;\\n}\\n\\n.pagination-lg .page-link {\\n padding: 0.75rem 1.5rem;\\n font-size: 1.25rem;\\n}\\n.pagination-lg .page-item:first-child .page-link {\\n border-top-left-radius: 0.3rem;\\n border-bottom-left-radius: 0.3rem;\\n}\\n.pagination-lg .page-item:last-child .page-link {\\n border-top-right-radius: 0.3rem;\\n border-bottom-right-radius: 0.3rem;\\n}\\n\\n.pagination-sm .page-link {\\n padding: 0.25rem 0.5rem;\\n font-size: 0.875rem;\\n}\\n.pagination-sm .page-item:first-child .page-link {\\n border-top-left-radius: 0.2rem;\\n border-bottom-left-radius: 0.2rem;\\n}\\n.pagination-sm .page-item:last-child .page-link {\\n border-top-right-radius: 0.2rem;\\n border-bottom-right-radius: 0.2rem;\\n}\\n\\n.badge {\\n display: inline-block;\\n padding: 0.35em 0.65em;\\n font-size: 0.75em;\\n font-weight: 700;\\n line-height: 1;\\n color: #fff;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: baseline;\\n border-radius: 0.25rem;\\n}\\n.badge:empty {\\n display: none;\\n}\\n\\n.btn .badge {\\n position: relative;\\n top: -1px;\\n}\\n\\n.alert {\\n position: relative;\\n padding: 1rem 1rem;\\n margin-bottom: 1rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n}\\n\\n.alert-heading {\\n color: inherit;\\n}\\n\\n.alert-link {\\n font-weight: 700;\\n}\\n\\n.alert-dismissible {\\n padding-right: 3rem;\\n}\\n.alert-dismissible .btn-close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 2;\\n padding: 1.25rem 1rem;\\n}\\n\\n.alert-primary {\\n color: #084298;\\n background-color: #cfe2ff;\\n border-color: #b6d4fe;\\n}\\n.alert-primary .alert-link {\\n color: #06357a;\\n}\\n\\n.alert-secondary {\\n color: #41464b;\\n background-color: #e2e3e5;\\n border-color: #d3d6d8;\\n}\\n.alert-secondary .alert-link {\\n color: #34383c;\\n}\\n\\n.alert-success {\\n color: #0f5132;\\n background-color: #d1e7dd;\\n border-color: #badbcc;\\n}\\n.alert-success .alert-link {\\n color: #0c4128;\\n}\\n\\n.alert-info {\\n color: #055160;\\n background-color: #cff4fc;\\n border-color: #b6effb;\\n}\\n.alert-info .alert-link {\\n color: #04414d;\\n}\\n\\n.alert-warning {\\n color: #664d03;\\n background-color: #fff3cd;\\n border-color: #ffecb5;\\n}\\n.alert-warning .alert-link {\\n color: #523e02;\\n}\\n\\n.alert-danger {\\n color: #842029;\\n background-color: #f8d7da;\\n border-color: #f5c2c7;\\n}\\n.alert-danger .alert-link {\\n color: #6a1a21;\\n}\\n\\n.alert-light {\\n color: #636464;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n}\\n.alert-light .alert-link {\\n color: #4f5050;\\n}\\n\\n.alert-dark {\\n color: #141619;\\n background-color: #d3d3d4;\\n border-color: #bcbebf;\\n}\\n.alert-dark .alert-link {\\n color: #101214;\\n}\\n\\n@-webkit-keyframes progress-bar-stripes {\\n 0% {\\n background-position-x: 1rem;\\n }\\n}\\n\\n@keyframes progress-bar-stripes {\\n 0% {\\n background-position-x: 1rem;\\n }\\n}\\n.progress {\\n display: flex;\\n height: 1rem;\\n overflow: hidden;\\n font-size: 0.75rem;\\n background-color: #e9ecef;\\n border-radius: 0.25rem;\\n}\\n\\n.progress-bar {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n overflow: hidden;\\n color: #fff;\\n text-align: center;\\n white-space: nowrap;\\n background-color: #0d6efd;\\n transition: width 0.6s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .progress-bar {\\n transition: none;\\n }\\n}\\n\\n.progress-bar-striped {\\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\\n background-size: 1rem 1rem;\\n}\\n\\n.progress-bar-animated {\\n -webkit-animation: 1s linear infinite progress-bar-stripes;\\n animation: 1s linear infinite progress-bar-stripes;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .progress-bar-animated {\\n -webkit-animation: none;\\n animation: none;\\n }\\n}\\n\\n.list-group {\\n display: flex;\\n flex-direction: column;\\n padding-left: 0;\\n margin-bottom: 0;\\n border-radius: 0.25rem;\\n}\\n\\n.list-group-numbered {\\n list-style-type: none;\\n counter-reset: section;\\n}\\n.list-group-numbered > li::before {\\n content: counters(section, \\\".\\\") \\\". \\\";\\n counter-increment: section;\\n}\\n\\n.list-group-item-action {\\n width: 100%;\\n color: #495057;\\n text-align: inherit;\\n}\\n.list-group-item-action:hover, .list-group-item-action:focus {\\n z-index: 1;\\n color: #495057;\\n text-decoration: none;\\n background-color: #f8f9fa;\\n}\\n.list-group-item-action:active {\\n color: #212529;\\n background-color: #e9ecef;\\n}\\n\\n.list-group-item {\\n position: relative;\\n display: block;\\n padding: 0.5rem 1rem;\\n color: #212529;\\n text-decoration: none;\\n background-color: #fff;\\n border: 1px solid rgba(0, 0, 0, 0.125);\\n}\\n.list-group-item:first-child {\\n border-top-left-radius: inherit;\\n border-top-right-radius: inherit;\\n}\\n.list-group-item:last-child {\\n border-bottom-right-radius: inherit;\\n border-bottom-left-radius: inherit;\\n}\\n.list-group-item.disabled, .list-group-item:disabled {\\n color: #6c757d;\\n pointer-events: none;\\n background-color: #fff;\\n}\\n.list-group-item.active {\\n z-index: 2;\\n color: #fff;\\n background-color: #0d6efd;\\n border-color: #0d6efd;\\n}\\n.list-group-item + .list-group-item {\\n border-top-width: 0;\\n}\\n.list-group-item + .list-group-item.active {\\n margin-top: -1px;\\n border-top-width: 1px;\\n}\\n\\n.list-group-horizontal {\\n flex-direction: row;\\n}\\n.list-group-horizontal > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n}\\n.list-group-horizontal > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n}\\n.list-group-horizontal > .list-group-item.active {\\n margin-top: 0;\\n}\\n.list-group-horizontal > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n}\\n.list-group-horizontal > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n}\\n\\n@media (min-width: 576px) {\\n .list-group-horizontal-sm {\\n flex-direction: row;\\n }\\n .list-group-horizontal-sm > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n }\\n .list-group-horizontal-sm > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n }\\n .list-group-horizontal-sm > .list-group-item.active {\\n margin-top: 0;\\n }\\n .list-group-horizontal-sm > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n }\\n .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n }\\n}\\n@media (min-width: 768px) {\\n .list-group-horizontal-md {\\n flex-direction: row;\\n }\\n .list-group-horizontal-md > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n }\\n .list-group-horizontal-md > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n }\\n .list-group-horizontal-md > .list-group-item.active {\\n margin-top: 0;\\n }\\n .list-group-horizontal-md > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n }\\n .list-group-horizontal-md > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n }\\n}\\n@media (min-width: 992px) {\\n .list-group-horizontal-lg {\\n flex-direction: row;\\n }\\n .list-group-horizontal-lg > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n }\\n .list-group-horizontal-lg > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n }\\n .list-group-horizontal-lg > .list-group-item.active {\\n margin-top: 0;\\n }\\n .list-group-horizontal-lg > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n }\\n .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n }\\n}\\n@media (min-width: 1200px) {\\n .list-group-horizontal-xl {\\n flex-direction: row;\\n }\\n .list-group-horizontal-xl > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n }\\n .list-group-horizontal-xl > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n }\\n .list-group-horizontal-xl > .list-group-item.active {\\n margin-top: 0;\\n }\\n .list-group-horizontal-xl > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n }\\n .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n }\\n}\\n@media (min-width: 1400px) {\\n .list-group-horizontal-xxl {\\n flex-direction: row;\\n }\\n .list-group-horizontal-xxl > .list-group-item:first-child {\\n border-bottom-left-radius: 0.25rem;\\n border-top-right-radius: 0;\\n }\\n .list-group-horizontal-xxl > .list-group-item:last-child {\\n border-top-right-radius: 0.25rem;\\n border-bottom-left-radius: 0;\\n }\\n .list-group-horizontal-xxl > .list-group-item.active {\\n margin-top: 0;\\n }\\n .list-group-horizontal-xxl > .list-group-item + .list-group-item {\\n border-top-width: 1px;\\n border-left-width: 0;\\n }\\n .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\\n margin-left: -1px;\\n border-left-width: 1px;\\n }\\n}\\n.list-group-flush {\\n border-radius: 0;\\n}\\n.list-group-flush > .list-group-item {\\n border-width: 0 0 1px;\\n}\\n.list-group-flush > .list-group-item:last-child {\\n border-bottom-width: 0;\\n}\\n\\n.list-group-item-primary {\\n color: #084298;\\n background-color: #cfe2ff;\\n}\\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\\n color: #084298;\\n background-color: #bacbe6;\\n}\\n.list-group-item-primary.list-group-item-action.active {\\n color: #fff;\\n background-color: #084298;\\n border-color: #084298;\\n}\\n\\n.list-group-item-secondary {\\n color: #41464b;\\n background-color: #e2e3e5;\\n}\\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\\n color: #41464b;\\n background-color: #cbccce;\\n}\\n.list-group-item-secondary.list-group-item-action.active {\\n color: #fff;\\n background-color: #41464b;\\n border-color: #41464b;\\n}\\n\\n.list-group-item-success {\\n color: #0f5132;\\n background-color: #d1e7dd;\\n}\\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\\n color: #0f5132;\\n background-color: #bcd0c7;\\n}\\n.list-group-item-success.list-group-item-action.active {\\n color: #fff;\\n background-color: #0f5132;\\n border-color: #0f5132;\\n}\\n\\n.list-group-item-info {\\n color: #055160;\\n background-color: #cff4fc;\\n}\\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\\n color: #055160;\\n background-color: #badce3;\\n}\\n.list-group-item-info.list-group-item-action.active {\\n color: #fff;\\n background-color: #055160;\\n border-color: #055160;\\n}\\n\\n.list-group-item-warning {\\n color: #664d03;\\n background-color: #fff3cd;\\n}\\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\\n color: #664d03;\\n background-color: #e6dbb9;\\n}\\n.list-group-item-warning.list-group-item-action.active {\\n color: #fff;\\n background-color: #664d03;\\n border-color: #664d03;\\n}\\n\\n.list-group-item-danger {\\n color: #842029;\\n background-color: #f8d7da;\\n}\\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\\n color: #842029;\\n background-color: #dfc2c4;\\n}\\n.list-group-item-danger.list-group-item-action.active {\\n color: #fff;\\n background-color: #842029;\\n border-color: #842029;\\n}\\n\\n.list-group-item-light {\\n color: #636464;\\n background-color: #fefefe;\\n}\\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\\n color: #636464;\\n background-color: #e5e5e5;\\n}\\n.list-group-item-light.list-group-item-action.active {\\n color: #fff;\\n background-color: #636464;\\n border-color: #636464;\\n}\\n\\n.list-group-item-dark {\\n color: #141619;\\n background-color: #d3d3d4;\\n}\\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\\n color: #141619;\\n background-color: #bebebf;\\n}\\n.list-group-item-dark.list-group-item-action.active {\\n color: #fff;\\n background-color: #141619;\\n border-color: #141619;\\n}\\n\\n.btn-close {\\n box-sizing: content-box;\\n width: 1em;\\n height: 1em;\\n padding: 0.25em 0.25em;\\n color: #000;\\n background: transparent url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\\\") center/1em auto no-repeat;\\n border: 0;\\n border-radius: 0.25rem;\\n opacity: 0.5;\\n}\\n.btn-close:hover {\\n color: #000;\\n text-decoration: none;\\n opacity: 0.75;\\n}\\n.btn-close:focus {\\n outline: 0;\\n box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\\n opacity: 1;\\n}\\n.btn-close:disabled, .btn-close.disabled {\\n pointer-events: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n opacity: 0.25;\\n}\\n\\n.btn-close-white {\\n filter: invert(1) grayscale(100%) brightness(200%);\\n}\\n\\n.toast {\\n width: 350px;\\n max-width: 100%;\\n font-size: 0.875rem;\\n pointer-events: auto;\\n background-color: rgba(255, 255, 255, 0.85);\\n background-clip: padding-box;\\n border: 1px solid rgba(0, 0, 0, 0.1);\\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\\n border-radius: 0.25rem;\\n}\\n.toast.showing {\\n opacity: 0;\\n}\\n.toast:not(.show) {\\n display: none;\\n}\\n\\n.toast-container {\\n width: -webkit-max-content;\\n width: -moz-max-content;\\n width: max-content;\\n max-width: 100%;\\n pointer-events: none;\\n}\\n.toast-container > :not(:last-child) {\\n margin-bottom: 0.75rem;\\n}\\n\\n.toast-header {\\n display: flex;\\n align-items: center;\\n padding: 0.5rem 0.75rem;\\n color: #6c757d;\\n background-color: rgba(255, 255, 255, 0.85);\\n background-clip: padding-box;\\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\\n border-top-left-radius: calc(0.25rem - 1px);\\n border-top-right-radius: calc(0.25rem - 1px);\\n}\\n.toast-header .btn-close {\\n margin-right: -0.375rem;\\n margin-left: 0.75rem;\\n}\\n\\n.toast-body {\\n padding: 0.75rem;\\n word-wrap: break-word;\\n}\\n\\n.modal {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 1055;\\n display: none;\\n width: 100%;\\n height: 100%;\\n overflow-x: hidden;\\n overflow-y: auto;\\n outline: 0;\\n}\\n\\n.modal-dialog {\\n position: relative;\\n width: auto;\\n margin: 0.5rem;\\n pointer-events: none;\\n}\\n.modal.fade .modal-dialog {\\n transition: transform 0.3s ease-out;\\n transform: translate(0, -50px);\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .modal.fade .modal-dialog {\\n transition: none;\\n }\\n}\\n.modal.show .modal-dialog {\\n transform: none;\\n}\\n.modal.modal-static .modal-dialog {\\n transform: scale(1.02);\\n}\\n\\n.modal-dialog-scrollable {\\n height: calc(100% - 1rem);\\n}\\n.modal-dialog-scrollable .modal-content {\\n max-height: 100%;\\n overflow: hidden;\\n}\\n.modal-dialog-scrollable .modal-body {\\n overflow-y: auto;\\n}\\n\\n.modal-dialog-centered {\\n display: flex;\\n align-items: center;\\n min-height: calc(100% - 1rem);\\n}\\n\\n.modal-content {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n pointer-events: auto;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid rgba(0, 0, 0, 0.2);\\n border-radius: 0.3rem;\\n outline: 0;\\n}\\n\\n.modal-backdrop {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 1050;\\n width: 100vw;\\n height: 100vh;\\n background-color: #000;\\n}\\n.modal-backdrop.fade {\\n opacity: 0;\\n}\\n.modal-backdrop.show {\\n opacity: 0.5;\\n}\\n\\n.modal-header {\\n display: flex;\\n flex-shrink: 0;\\n align-items: center;\\n justify-content: space-between;\\n padding: 1rem 1rem;\\n border-bottom: 1px solid #dee2e6;\\n border-top-left-radius: calc(0.3rem - 1px);\\n border-top-right-radius: calc(0.3rem - 1px);\\n}\\n.modal-header .btn-close {\\n padding: 0.5rem 0.5rem;\\n margin: -0.5rem -0.5rem -0.5rem auto;\\n}\\n\\n.modal-title {\\n margin-bottom: 0;\\n line-height: 1.5;\\n}\\n\\n.modal-body {\\n position: relative;\\n flex: 1 1 auto;\\n padding: 1rem;\\n}\\n\\n.modal-footer {\\n display: flex;\\n flex-wrap: wrap;\\n flex-shrink: 0;\\n align-items: center;\\n justify-content: flex-end;\\n padding: 0.75rem;\\n border-top: 1px solid #dee2e6;\\n border-bottom-right-radius: calc(0.3rem - 1px);\\n border-bottom-left-radius: calc(0.3rem - 1px);\\n}\\n.modal-footer > * {\\n margin: 0.25rem;\\n}\\n\\n@media (min-width: 576px) {\\n .modal-dialog {\\n max-width: 500px;\\n margin: 1.75rem auto;\\n }\\n\\n .modal-dialog-scrollable {\\n height: calc(100% - 3.5rem);\\n }\\n\\n .modal-dialog-centered {\\n min-height: calc(100% - 3.5rem);\\n }\\n\\n .modal-sm {\\n max-width: 300px;\\n }\\n}\\n@media (min-width: 992px) {\\n .modal-lg,\\n.modal-xl {\\n max-width: 800px;\\n }\\n}\\n@media (min-width: 1200px) {\\n .modal-xl {\\n max-width: 1140px;\\n }\\n}\\n.modal-fullscreen {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n}\\n.modal-fullscreen .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n}\\n.modal-fullscreen .modal-header {\\n border-radius: 0;\\n}\\n.modal-fullscreen .modal-body {\\n overflow-y: auto;\\n}\\n.modal-fullscreen .modal-footer {\\n border-radius: 0;\\n}\\n\\n@media (max-width: 575.98px) {\\n .modal-fullscreen-sm-down {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n }\\n .modal-fullscreen-sm-down .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n }\\n .modal-fullscreen-sm-down .modal-header {\\n border-radius: 0;\\n }\\n .modal-fullscreen-sm-down .modal-body {\\n overflow-y: auto;\\n }\\n .modal-fullscreen-sm-down .modal-footer {\\n border-radius: 0;\\n }\\n}\\n@media (max-width: 767.98px) {\\n .modal-fullscreen-md-down {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n }\\n .modal-fullscreen-md-down .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n }\\n .modal-fullscreen-md-down .modal-header {\\n border-radius: 0;\\n }\\n .modal-fullscreen-md-down .modal-body {\\n overflow-y: auto;\\n }\\n .modal-fullscreen-md-down .modal-footer {\\n border-radius: 0;\\n }\\n}\\n@media (max-width: 991.98px) {\\n .modal-fullscreen-lg-down {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n }\\n .modal-fullscreen-lg-down .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n }\\n .modal-fullscreen-lg-down .modal-header {\\n border-radius: 0;\\n }\\n .modal-fullscreen-lg-down .modal-body {\\n overflow-y: auto;\\n }\\n .modal-fullscreen-lg-down .modal-footer {\\n border-radius: 0;\\n }\\n}\\n@media (max-width: 1199.98px) {\\n .modal-fullscreen-xl-down {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n }\\n .modal-fullscreen-xl-down .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n }\\n .modal-fullscreen-xl-down .modal-header {\\n border-radius: 0;\\n }\\n .modal-fullscreen-xl-down .modal-body {\\n overflow-y: auto;\\n }\\n .modal-fullscreen-xl-down .modal-footer {\\n border-radius: 0;\\n }\\n}\\n@media (max-width: 1399.98px) {\\n .modal-fullscreen-xxl-down {\\n width: 100vw;\\n max-width: none;\\n height: 100%;\\n margin: 0;\\n }\\n .modal-fullscreen-xxl-down .modal-content {\\n height: 100%;\\n border: 0;\\n border-radius: 0;\\n }\\n .modal-fullscreen-xxl-down .modal-header {\\n border-radius: 0;\\n }\\n .modal-fullscreen-xxl-down .modal-body {\\n overflow-y: auto;\\n }\\n .modal-fullscreen-xxl-down .modal-footer {\\n border-radius: 0;\\n }\\n}\\n.tooltip {\\n position: absolute;\\n z-index: 1080;\\n display: block;\\n margin: 0;\\n font-family: var(--bs-font-sans-serif);\\n font-style: normal;\\n font-weight: 400;\\n line-height: 1.5;\\n text-align: left;\\n text-align: start;\\n text-decoration: none;\\n text-shadow: none;\\n text-transform: none;\\n letter-spacing: normal;\\n word-break: normal;\\n word-spacing: normal;\\n white-space: normal;\\n line-break: auto;\\n font-size: 0.875rem;\\n word-wrap: break-word;\\n opacity: 0;\\n}\\n.tooltip.show {\\n opacity: 0.9;\\n}\\n.tooltip .tooltip-arrow {\\n position: absolute;\\n display: block;\\n width: 0.8rem;\\n height: 0.4rem;\\n}\\n.tooltip .tooltip-arrow::before {\\n position: absolute;\\n content: \\\"\\\";\\n border-color: transparent;\\n border-style: solid;\\n}\\n\\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\\n padding: 0.4rem 0;\\n}\\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\\n bottom: 0;\\n}\\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\\n top: -1px;\\n border-width: 0.4rem 0.4rem 0;\\n border-top-color: #000;\\n}\\n\\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\\n padding: 0 0.4rem;\\n}\\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\\n left: 0;\\n width: 0.4rem;\\n height: 0.8rem;\\n}\\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\\n right: -1px;\\n border-width: 0.4rem 0.4rem 0.4rem 0;\\n border-right-color: #000;\\n}\\n\\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\\n padding: 0.4rem 0;\\n}\\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\\n top: 0;\\n}\\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\\n bottom: -1px;\\n border-width: 0 0.4rem 0.4rem;\\n border-bottom-color: #000;\\n}\\n\\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\\n padding: 0 0.4rem;\\n}\\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\\n right: 0;\\n width: 0.4rem;\\n height: 0.8rem;\\n}\\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\\n left: -1px;\\n border-width: 0.4rem 0 0.4rem 0.4rem;\\n border-left-color: #000;\\n}\\n\\n.tooltip-inner {\\n max-width: 200px;\\n padding: 0.25rem 0.5rem;\\n color: #fff;\\n text-align: center;\\n background-color: #000;\\n border-radius: 0.25rem;\\n}\\n\\n.popover {\\n position: absolute;\\n top: 0;\\n left: 0 /* rtl:ignore */;\\n z-index: 1070;\\n display: block;\\n max-width: 276px;\\n font-family: var(--bs-font-sans-serif);\\n font-style: normal;\\n font-weight: 400;\\n line-height: 1.5;\\n text-align: left;\\n text-align: start;\\n text-decoration: none;\\n text-shadow: none;\\n text-transform: none;\\n letter-spacing: normal;\\n word-break: normal;\\n word-spacing: normal;\\n white-space: normal;\\n line-break: auto;\\n font-size: 0.875rem;\\n word-wrap: break-word;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 1px solid rgba(0, 0, 0, 0.2);\\n border-radius: 0.3rem;\\n}\\n.popover .popover-arrow {\\n position: absolute;\\n display: block;\\n width: 1rem;\\n height: 0.5rem;\\n}\\n.popover .popover-arrow::before, .popover .popover-arrow::after {\\n position: absolute;\\n display: block;\\n content: \\\"\\\";\\n border-color: transparent;\\n border-style: solid;\\n}\\n\\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\\n bottom: calc(-0.5rem - 1px);\\n}\\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\\n bottom: 0;\\n border-width: 0.5rem 0.5rem 0;\\n border-top-color: rgba(0, 0, 0, 0.25);\\n}\\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\\n bottom: 1px;\\n border-width: 0.5rem 0.5rem 0;\\n border-top-color: #fff;\\n}\\n\\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\\n left: calc(-0.5rem - 1px);\\n width: 0.5rem;\\n height: 1rem;\\n}\\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\\n left: 0;\\n border-width: 0.5rem 0.5rem 0.5rem 0;\\n border-right-color: rgba(0, 0, 0, 0.25);\\n}\\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\\n left: 1px;\\n border-width: 0.5rem 0.5rem 0.5rem 0;\\n border-right-color: #fff;\\n}\\n\\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\\n top: calc(-0.5rem - 1px);\\n}\\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\\n top: 0;\\n border-width: 0 0.5rem 0.5rem 0.5rem;\\n border-bottom-color: rgba(0, 0, 0, 0.25);\\n}\\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\\n top: 1px;\\n border-width: 0 0.5rem 0.5rem 0.5rem;\\n border-bottom-color: #fff;\\n}\\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n display: block;\\n width: 1rem;\\n margin-left: -0.5rem;\\n content: \\\"\\\";\\n border-bottom: 1px solid #f0f0f0;\\n}\\n\\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\\n right: calc(-0.5rem - 1px);\\n width: 0.5rem;\\n height: 1rem;\\n}\\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\\n right: 0;\\n border-width: 0.5rem 0 0.5rem 0.5rem;\\n border-left-color: rgba(0, 0, 0, 0.25);\\n}\\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\\n right: 1px;\\n border-width: 0.5rem 0 0.5rem 0.5rem;\\n border-left-color: #fff;\\n}\\n\\n.popover-header {\\n padding: 0.5rem 1rem;\\n margin-bottom: 0;\\n font-size: 1rem;\\n background-color: #f0f0f0;\\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\\n border-top-left-radius: calc(0.3rem - 1px);\\n border-top-right-radius: calc(0.3rem - 1px);\\n}\\n.popover-header:empty {\\n display: none;\\n}\\n\\n.popover-body {\\n padding: 1rem 1rem;\\n color: #212529;\\n}\\n\\n.carousel {\\n position: relative;\\n}\\n\\n.carousel.pointer-event {\\n touch-action: pan-y;\\n}\\n\\n.carousel-inner {\\n position: relative;\\n width: 100%;\\n overflow: hidden;\\n}\\n.carousel-inner::after {\\n display: block;\\n clear: both;\\n content: \\\"\\\";\\n}\\n\\n.carousel-item {\\n position: relative;\\n display: none;\\n float: left;\\n width: 100%;\\n margin-right: -100%;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n transition: transform 0.6s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .carousel-item {\\n transition: none;\\n }\\n}\\n\\n.carousel-item.active,\\n.carousel-item-next,\\n.carousel-item-prev {\\n display: block;\\n}\\n\\n/* rtl:begin:ignore */\\n.carousel-item-next:not(.carousel-item-start),\\n.active.carousel-item-end {\\n transform: translateX(100%);\\n}\\n\\n.carousel-item-prev:not(.carousel-item-end),\\n.active.carousel-item-start {\\n transform: translateX(-100%);\\n}\\n\\n/* rtl:end:ignore */\\n.carousel-fade .carousel-item {\\n opacity: 0;\\n transition-property: opacity;\\n transform: none;\\n}\\n.carousel-fade .carousel-item.active,\\n.carousel-fade .carousel-item-next.carousel-item-start,\\n.carousel-fade .carousel-item-prev.carousel-item-end {\\n z-index: 1;\\n opacity: 1;\\n}\\n.carousel-fade .active.carousel-item-start,\\n.carousel-fade .active.carousel-item-end {\\n z-index: 0;\\n opacity: 0;\\n transition: opacity 0s 0.6s;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .carousel-fade .active.carousel-item-start,\\n.carousel-fade .active.carousel-item-end {\\n transition: none;\\n }\\n}\\n\\n.carousel-control-prev,\\n.carousel-control-next {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n z-index: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: 15%;\\n padding: 0;\\n color: #fff;\\n text-align: center;\\n background: none;\\n border: 0;\\n opacity: 0.5;\\n transition: opacity 0.15s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .carousel-control-prev,\\n.carousel-control-next {\\n transition: none;\\n }\\n}\\n.carousel-control-prev:hover, .carousel-control-prev:focus,\\n.carousel-control-next:hover,\\n.carousel-control-next:focus {\\n color: #fff;\\n text-decoration: none;\\n outline: 0;\\n opacity: 0.9;\\n}\\n\\n.carousel-control-prev {\\n left: 0;\\n}\\n\\n.carousel-control-next {\\n right: 0;\\n}\\n\\n.carousel-control-prev-icon,\\n.carousel-control-next-icon {\\n display: inline-block;\\n width: 2rem;\\n height: 2rem;\\n background-repeat: no-repeat;\\n background-position: 50%;\\n background-size: 100% 100%;\\n}\\n\\n/* rtl:options: {\\n \\\"autoRename\\\": true,\\n \\\"stringMap\\\":[ {\\n \\\"name\\\" : \\\"prev-next\\\",\\n \\\"search\\\" : \\\"prev\\\",\\n \\\"replace\\\" : \\\"next\\\"\\n } ]\\n} */\\n.carousel-control-prev-icon {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\\\");\\n}\\n\\n.carousel-control-next-icon {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\\\");\\n}\\n\\n.carousel-indicators {\\n position: absolute;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 2;\\n display: flex;\\n justify-content: center;\\n padding: 0;\\n margin-right: 15%;\\n margin-bottom: 1rem;\\n margin-left: 15%;\\n list-style: none;\\n}\\n.carousel-indicators [data-bs-target] {\\n box-sizing: content-box;\\n flex: 0 1 auto;\\n width: 30px;\\n height: 3px;\\n padding: 0;\\n margin-right: 3px;\\n margin-left: 3px;\\n text-indent: -999px;\\n cursor: pointer;\\n background-color: #fff;\\n background-clip: padding-box;\\n border: 0;\\n border-top: 10px solid transparent;\\n border-bottom: 10px solid transparent;\\n opacity: 0.5;\\n transition: opacity 0.6s ease;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .carousel-indicators [data-bs-target] {\\n transition: none;\\n }\\n}\\n.carousel-indicators .active {\\n opacity: 1;\\n}\\n\\n.carousel-caption {\\n position: absolute;\\n right: 15%;\\n bottom: 1.25rem;\\n left: 15%;\\n padding-top: 1.25rem;\\n padding-bottom: 1.25rem;\\n color: #fff;\\n text-align: center;\\n}\\n\\n.carousel-dark .carousel-control-prev-icon,\\n.carousel-dark .carousel-control-next-icon {\\n filter: invert(1) grayscale(100);\\n}\\n.carousel-dark .carousel-indicators [data-bs-target] {\\n background-color: #000;\\n}\\n.carousel-dark .carousel-caption {\\n color: #000;\\n}\\n\\n@-webkit-keyframes spinner-border {\\n to {\\n transform: rotate(360deg) /* rtl:ignore */;\\n }\\n}\\n\\n@keyframes spinner-border {\\n to {\\n transform: rotate(360deg) /* rtl:ignore */;\\n }\\n}\\n.spinner-border {\\n display: inline-block;\\n width: 2rem;\\n height: 2rem;\\n vertical-align: -0.125em;\\n border: 0.25em solid currentColor;\\n border-right-color: transparent;\\n border-radius: 50%;\\n -webkit-animation: 0.75s linear infinite spinner-border;\\n animation: 0.75s linear infinite spinner-border;\\n}\\n\\n.spinner-border-sm {\\n width: 1rem;\\n height: 1rem;\\n border-width: 0.2em;\\n}\\n\\n@-webkit-keyframes spinner-grow {\\n 0% {\\n transform: scale(0);\\n }\\n 50% {\\n opacity: 1;\\n transform: none;\\n }\\n}\\n\\n@keyframes spinner-grow {\\n 0% {\\n transform: scale(0);\\n }\\n 50% {\\n opacity: 1;\\n transform: none;\\n }\\n}\\n.spinner-grow {\\n display: inline-block;\\n width: 2rem;\\n height: 2rem;\\n vertical-align: -0.125em;\\n background-color: currentColor;\\n border-radius: 50%;\\n opacity: 0;\\n -webkit-animation: 0.75s linear infinite spinner-grow;\\n animation: 0.75s linear infinite spinner-grow;\\n}\\n\\n.spinner-grow-sm {\\n width: 1rem;\\n height: 1rem;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .spinner-border,\\n.spinner-grow {\\n -webkit-animation-duration: 1.5s;\\n animation-duration: 1.5s;\\n }\\n}\\n.offcanvas {\\n position: fixed;\\n bottom: 0;\\n z-index: 1045;\\n display: flex;\\n flex-direction: column;\\n max-width: 100%;\\n visibility: hidden;\\n background-color: #fff;\\n background-clip: padding-box;\\n outline: 0;\\n transition: transform 0.3s ease-in-out;\\n}\\n@media (prefers-reduced-motion: reduce) {\\n .offcanvas {\\n transition: none;\\n }\\n}\\n\\n.offcanvas-backdrop {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 1040;\\n width: 100vw;\\n height: 100vh;\\n background-color: #000;\\n}\\n.offcanvas-backdrop.fade {\\n opacity: 0;\\n}\\n.offcanvas-backdrop.show {\\n opacity: 0.5;\\n}\\n\\n.offcanvas-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 1rem 1rem;\\n}\\n.offcanvas-header .btn-close {\\n padding: 0.5rem 0.5rem;\\n margin-top: -0.5rem;\\n margin-right: -0.5rem;\\n margin-bottom: -0.5rem;\\n}\\n\\n.offcanvas-title {\\n margin-bottom: 0;\\n line-height: 1.5;\\n}\\n\\n.offcanvas-body {\\n flex-grow: 1;\\n padding: 1rem 1rem;\\n overflow-y: auto;\\n}\\n\\n.offcanvas-start {\\n top: 0;\\n left: 0;\\n width: 400px;\\n border-right: 1px solid rgba(0, 0, 0, 0.2);\\n transform: translateX(-100%);\\n}\\n\\n.offcanvas-end {\\n top: 0;\\n right: 0;\\n width: 400px;\\n border-left: 1px solid rgba(0, 0, 0, 0.2);\\n transform: translateX(100%);\\n}\\n\\n.offcanvas-top {\\n top: 0;\\n right: 0;\\n left: 0;\\n height: 30vh;\\n max-height: 100%;\\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\\n transform: translateY(-100%);\\n}\\n\\n.offcanvas-bottom {\\n right: 0;\\n left: 0;\\n height: 30vh;\\n max-height: 100%;\\n border-top: 1px solid rgba(0, 0, 0, 0.2);\\n transform: translateY(100%);\\n}\\n\\n.offcanvas.show {\\n transform: none;\\n}\\n\\n.placeholder {\\n display: inline-block;\\n min-height: 1em;\\n vertical-align: middle;\\n cursor: wait;\\n background-color: currentColor;\\n opacity: 0.5;\\n}\\n.placeholder.btn::before {\\n display: inline-block;\\n content: \\\"\\\";\\n}\\n\\n.placeholder-xs {\\n min-height: 0.6em;\\n}\\n\\n.placeholder-sm {\\n min-height: 0.8em;\\n}\\n\\n.placeholder-lg {\\n min-height: 1.2em;\\n}\\n\\n.placeholder-glow .placeholder {\\n -webkit-animation: placeholder-glow 2s ease-in-out infinite;\\n animation: placeholder-glow 2s ease-in-out infinite;\\n}\\n\\n@-webkit-keyframes placeholder-glow {\\n 50% {\\n opacity: 0.2;\\n }\\n}\\n\\n@keyframes placeholder-glow {\\n 50% {\\n opacity: 0.2;\\n }\\n}\\n.placeholder-wave {\\n -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\\n mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\\n -webkit-mask-size: 200% 100%;\\n mask-size: 200% 100%;\\n -webkit-animation: placeholder-wave 2s linear infinite;\\n animation: placeholder-wave 2s linear infinite;\\n}\\n\\n@-webkit-keyframes placeholder-wave {\\n 100% {\\n -webkit-mask-position: -200% 0%;\\n mask-position: -200% 0%;\\n }\\n}\\n\\n@keyframes placeholder-wave {\\n 100% {\\n -webkit-mask-position: -200% 0%;\\n mask-position: -200% 0%;\\n }\\n}\\n.clearfix::after {\\n display: block;\\n clear: both;\\n content: \\\"\\\";\\n}\\n\\n.link-primary {\\n color: #0d6efd;\\n}\\n.link-primary:hover, .link-primary:focus {\\n color: #0a58ca;\\n}\\n\\n.link-secondary {\\n color: #6c757d;\\n}\\n.link-secondary:hover, .link-secondary:focus {\\n color: #565e64;\\n}\\n\\n.link-success {\\n color: #198754;\\n}\\n.link-success:hover, .link-success:focus {\\n color: #146c43;\\n}\\n\\n.link-info {\\n color: #0dcaf0;\\n}\\n.link-info:hover, .link-info:focus {\\n color: #3dd5f3;\\n}\\n\\n.link-warning {\\n color: #ffc107;\\n}\\n.link-warning:hover, .link-warning:focus {\\n color: #ffcd39;\\n}\\n\\n.link-danger {\\n color: #dc3545;\\n}\\n.link-danger:hover, .link-danger:focus {\\n color: #b02a37;\\n}\\n\\n.link-light {\\n color: #f8f9fa;\\n}\\n.link-light:hover, .link-light:focus {\\n color: #f9fafb;\\n}\\n\\n.link-dark {\\n color: #212529;\\n}\\n.link-dark:hover, .link-dark:focus {\\n color: #1a1e21;\\n}\\n\\n.ratio {\\n position: relative;\\n width: 100%;\\n}\\n.ratio::before {\\n display: block;\\n padding-top: var(--bs-aspect-ratio);\\n content: \\\"\\\";\\n}\\n.ratio > * {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.ratio-1x1 {\\n --bs-aspect-ratio: 100%;\\n}\\n\\n.ratio-4x3 {\\n --bs-aspect-ratio: 75%;\\n}\\n\\n.ratio-16x9 {\\n --bs-aspect-ratio: 56.25%;\\n}\\n\\n.ratio-21x9 {\\n --bs-aspect-ratio: 42.8571428571%;\\n}\\n\\n.fixed-top {\\n position: fixed;\\n top: 0;\\n right: 0;\\n left: 0;\\n z-index: 1030;\\n}\\n\\n.fixed-bottom {\\n position: fixed;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 1030;\\n}\\n\\n.sticky-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n}\\n\\n@media (min-width: 576px) {\\n .sticky-sm-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n }\\n}\\n@media (min-width: 768px) {\\n .sticky-md-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n }\\n}\\n@media (min-width: 992px) {\\n .sticky-lg-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n }\\n}\\n@media (min-width: 1200px) {\\n .sticky-xl-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n }\\n}\\n@media (min-width: 1400px) {\\n .sticky-xxl-top {\\n position: -webkit-sticky;\\n position: sticky;\\n top: 0;\\n z-index: 1020;\\n }\\n}\\n.hstack {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n align-self: stretch;\\n}\\n\\n.vstack {\\n display: flex;\\n flex: 1 1 auto;\\n flex-direction: column;\\n align-self: stretch;\\n}\\n\\n.visually-hidden,\\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\\n position: absolute !important;\\n width: 1px !important;\\n height: 1px !important;\\n padding: 0 !important;\\n margin: -1px !important;\\n overflow: hidden !important;\\n clip: rect(0, 0, 0, 0) !important;\\n white-space: nowrap !important;\\n border: 0 !important;\\n}\\n\\n.stretched-link::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 1;\\n content: \\\"\\\";\\n}\\n\\n.text-truncate {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n.vr {\\n display: inline-block;\\n align-self: stretch;\\n width: 1px;\\n min-height: 1em;\\n background-color: currentColor;\\n opacity: 0.25;\\n}\\n\\n.align-baseline {\\n vertical-align: baseline !important;\\n}\\n\\n.align-top {\\n vertical-align: top !important;\\n}\\n\\n.align-middle {\\n vertical-align: middle !important;\\n}\\n\\n.align-bottom {\\n vertical-align: bottom !important;\\n}\\n\\n.align-text-bottom {\\n vertical-align: text-bottom !important;\\n}\\n\\n.align-text-top {\\n vertical-align: text-top !important;\\n}\\n\\n.float-start {\\n float: left !important;\\n}\\n\\n.float-end {\\n float: right !important;\\n}\\n\\n.float-none {\\n float: none !important;\\n}\\n\\n.opacity-0 {\\n opacity: 0 !important;\\n}\\n\\n.opacity-25 {\\n opacity: 0.25 !important;\\n}\\n\\n.opacity-50 {\\n opacity: 0.5 !important;\\n}\\n\\n.opacity-75 {\\n opacity: 0.75 !important;\\n}\\n\\n.opacity-100 {\\n opacity: 1 !important;\\n}\\n\\n.overflow-auto {\\n overflow: auto !important;\\n}\\n\\n.overflow-hidden {\\n overflow: hidden !important;\\n}\\n\\n.overflow-visible {\\n overflow: visible !important;\\n}\\n\\n.overflow-scroll {\\n overflow: scroll !important;\\n}\\n\\n.d-inline {\\n display: inline !important;\\n}\\n\\n.d-inline-block {\\n display: inline-block !important;\\n}\\n\\n.d-block {\\n display: block !important;\\n}\\n\\n.d-grid {\\n display: grid !important;\\n}\\n\\n.d-table {\\n display: table !important;\\n}\\n\\n.d-table-row {\\n display: table-row !important;\\n}\\n\\n.d-table-cell {\\n display: table-cell !important;\\n}\\n\\n.d-flex {\\n display: flex !important;\\n}\\n\\n.d-inline-flex {\\n display: inline-flex !important;\\n}\\n\\n.d-none {\\n display: none !important;\\n}\\n\\n.shadow {\\n box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\\n}\\n\\n.shadow-sm {\\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\\n}\\n\\n.shadow-lg {\\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\\n}\\n\\n.shadow-none {\\n box-shadow: none !important;\\n}\\n\\n.position-static {\\n position: static !important;\\n}\\n\\n.position-relative {\\n position: relative !important;\\n}\\n\\n.position-absolute {\\n position: absolute !important;\\n}\\n\\n.position-fixed {\\n position: fixed !important;\\n}\\n\\n.position-sticky {\\n position: -webkit-sticky !important;\\n position: sticky !important;\\n}\\n\\n.top-0 {\\n top: 0 !important;\\n}\\n\\n.top-50 {\\n top: 50% !important;\\n}\\n\\n.top-100 {\\n top: 100% !important;\\n}\\n\\n.bottom-0 {\\n bottom: 0 !important;\\n}\\n\\n.bottom-50 {\\n bottom: 50% !important;\\n}\\n\\n.bottom-100 {\\n bottom: 100% !important;\\n}\\n\\n.start-0 {\\n left: 0 !important;\\n}\\n\\n.start-50 {\\n left: 50% !important;\\n}\\n\\n.start-100 {\\n left: 100% !important;\\n}\\n\\n.end-0 {\\n right: 0 !important;\\n}\\n\\n.end-50 {\\n right: 50% !important;\\n}\\n\\n.end-100 {\\n right: 100% !important;\\n}\\n\\n.translate-middle {\\n transform: translate(-50%, -50%) !important;\\n}\\n\\n.translate-middle-x {\\n transform: translateX(-50%) !important;\\n}\\n\\n.translate-middle-y {\\n transform: translateY(-50%) !important;\\n}\\n\\n.border {\\n border: 1px solid #dee2e6 !important;\\n}\\n\\n.border-0 {\\n border: 0 !important;\\n}\\n\\n.border-top {\\n border-top: 1px solid #dee2e6 !important;\\n}\\n\\n.border-top-0 {\\n border-top: 0 !important;\\n}\\n\\n.border-end {\\n border-right: 1px solid #dee2e6 !important;\\n}\\n\\n.border-end-0 {\\n border-right: 0 !important;\\n}\\n\\n.border-bottom {\\n border-bottom: 1px solid #dee2e6 !important;\\n}\\n\\n.border-bottom-0 {\\n border-bottom: 0 !important;\\n}\\n\\n.border-start {\\n border-left: 1px solid #dee2e6 !important;\\n}\\n\\n.border-start-0 {\\n border-left: 0 !important;\\n}\\n\\n.border-primary {\\n border-color: #0d6efd !important;\\n}\\n\\n.border-secondary {\\n border-color: #6c757d !important;\\n}\\n\\n.border-success {\\n border-color: #198754 !important;\\n}\\n\\n.border-info {\\n border-color: #0dcaf0 !important;\\n}\\n\\n.border-warning {\\n border-color: #ffc107 !important;\\n}\\n\\n.border-danger {\\n border-color: #dc3545 !important;\\n}\\n\\n.border-light {\\n border-color: #f8f9fa !important;\\n}\\n\\n.border-dark {\\n border-color: #212529 !important;\\n}\\n\\n.border-white {\\n border-color: #fff !important;\\n}\\n\\n.border-1 {\\n border-width: 1px !important;\\n}\\n\\n.border-2 {\\n border-width: 2px !important;\\n}\\n\\n.border-3 {\\n border-width: 3px !important;\\n}\\n\\n.border-4 {\\n border-width: 4px !important;\\n}\\n\\n.border-5 {\\n border-width: 5px !important;\\n}\\n\\n.w-25 {\\n width: 25% !important;\\n}\\n\\n.w-50 {\\n width: 50% !important;\\n}\\n\\n.w-75 {\\n width: 75% !important;\\n}\\n\\n.w-100 {\\n width: 100% !important;\\n}\\n\\n.w-auto {\\n width: auto !important;\\n}\\n\\n.mw-100 {\\n max-width: 100% !important;\\n}\\n\\n.vw-100 {\\n width: 100vw !important;\\n}\\n\\n.min-vw-100 {\\n min-width: 100vw !important;\\n}\\n\\n.h-25 {\\n height: 25% !important;\\n}\\n\\n.h-50 {\\n height: 50% !important;\\n}\\n\\n.h-75 {\\n height: 75% !important;\\n}\\n\\n.h-100 {\\n height: 100% !important;\\n}\\n\\n.h-auto {\\n height: auto !important;\\n}\\n\\n.mh-100 {\\n max-height: 100% !important;\\n}\\n\\n.vh-100 {\\n height: 100vh !important;\\n}\\n\\n.min-vh-100 {\\n min-height: 100vh !important;\\n}\\n\\n.flex-fill {\\n flex: 1 1 auto !important;\\n}\\n\\n.flex-row {\\n flex-direction: row !important;\\n}\\n\\n.flex-column {\\n flex-direction: column !important;\\n}\\n\\n.flex-row-reverse {\\n flex-direction: row-reverse !important;\\n}\\n\\n.flex-column-reverse {\\n flex-direction: column-reverse !important;\\n}\\n\\n.flex-grow-0 {\\n flex-grow: 0 !important;\\n}\\n\\n.flex-grow-1 {\\n flex-grow: 1 !important;\\n}\\n\\n.flex-shrink-0 {\\n flex-shrink: 0 !important;\\n}\\n\\n.flex-shrink-1 {\\n flex-shrink: 1 !important;\\n}\\n\\n.flex-wrap {\\n flex-wrap: wrap !important;\\n}\\n\\n.flex-nowrap {\\n flex-wrap: nowrap !important;\\n}\\n\\n.flex-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n}\\n\\n.gap-0 {\\n gap: 0 !important;\\n}\\n\\n.gap-1 {\\n gap: 0.25rem !important;\\n}\\n\\n.gap-2 {\\n gap: 0.5rem !important;\\n}\\n\\n.gap-3 {\\n gap: 1rem !important;\\n}\\n\\n.gap-4 {\\n gap: 1.5rem !important;\\n}\\n\\n.gap-5 {\\n gap: 3rem !important;\\n}\\n\\n.justify-content-start {\\n justify-content: flex-start !important;\\n}\\n\\n.justify-content-end {\\n justify-content: flex-end !important;\\n}\\n\\n.justify-content-center {\\n justify-content: center !important;\\n}\\n\\n.justify-content-between {\\n justify-content: space-between !important;\\n}\\n\\n.justify-content-around {\\n justify-content: space-around !important;\\n}\\n\\n.justify-content-evenly {\\n justify-content: space-evenly !important;\\n}\\n\\n.align-items-start {\\n align-items: flex-start !important;\\n}\\n\\n.align-items-end {\\n align-items: flex-end !important;\\n}\\n\\n.align-items-center {\\n align-items: center !important;\\n}\\n\\n.align-items-baseline {\\n align-items: baseline !important;\\n}\\n\\n.align-items-stretch {\\n align-items: stretch !important;\\n}\\n\\n.align-content-start {\\n align-content: flex-start !important;\\n}\\n\\n.align-content-end {\\n align-content: flex-end !important;\\n}\\n\\n.align-content-center {\\n align-content: center !important;\\n}\\n\\n.align-content-between {\\n align-content: space-between !important;\\n}\\n\\n.align-content-around {\\n align-content: space-around !important;\\n}\\n\\n.align-content-stretch {\\n align-content: stretch !important;\\n}\\n\\n.align-self-auto {\\n align-self: auto !important;\\n}\\n\\n.align-self-start {\\n align-self: flex-start !important;\\n}\\n\\n.align-self-end {\\n align-self: flex-end !important;\\n}\\n\\n.align-self-center {\\n align-self: center !important;\\n}\\n\\n.align-self-baseline {\\n align-self: baseline !important;\\n}\\n\\n.align-self-stretch {\\n align-self: stretch !important;\\n}\\n\\n.order-first {\\n order: -1 !important;\\n}\\n\\n.order-0 {\\n order: 0 !important;\\n}\\n\\n.order-1 {\\n order: 1 !important;\\n}\\n\\n.order-2 {\\n order: 2 !important;\\n}\\n\\n.order-3 {\\n order: 3 !important;\\n}\\n\\n.order-4 {\\n order: 4 !important;\\n}\\n\\n.order-5 {\\n order: 5 !important;\\n}\\n\\n.order-last {\\n order: 6 !important;\\n}\\n\\n.m-0 {\\n margin: 0 !important;\\n}\\n\\n.m-1 {\\n margin: 0.25rem !important;\\n}\\n\\n.m-2 {\\n margin: 0.5rem !important;\\n}\\n\\n.m-3 {\\n margin: 1rem !important;\\n}\\n\\n.m-4 {\\n margin: 1.5rem !important;\\n}\\n\\n.m-5 {\\n margin: 3rem !important;\\n}\\n\\n.m-auto {\\n margin: auto !important;\\n}\\n\\n.mx-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n}\\n\\n.mx-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n}\\n\\n.mx-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n}\\n\\n.mx-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n}\\n\\n.mx-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n}\\n\\n.mx-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n}\\n\\n.mx-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n}\\n\\n.my-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n}\\n\\n.my-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n}\\n\\n.my-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n}\\n\\n.my-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n}\\n\\n.my-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n}\\n\\n.my-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n}\\n\\n.my-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n}\\n\\n.mt-0 {\\n margin-top: 0 !important;\\n}\\n\\n.mt-1 {\\n margin-top: 0.25rem !important;\\n}\\n\\n.mt-2 {\\n margin-top: 0.5rem !important;\\n}\\n\\n.mt-3 {\\n margin-top: 1rem !important;\\n}\\n\\n.mt-4 {\\n margin-top: 1.5rem !important;\\n}\\n\\n.mt-5 {\\n margin-top: 3rem !important;\\n}\\n\\n.mt-auto {\\n margin-top: auto !important;\\n}\\n\\n.me-0 {\\n margin-right: 0 !important;\\n}\\n\\n.me-1 {\\n margin-right: 0.25rem !important;\\n}\\n\\n.me-2 {\\n margin-right: 0.5rem !important;\\n}\\n\\n.me-3 {\\n margin-right: 1rem !important;\\n}\\n\\n.me-4 {\\n margin-right: 1.5rem !important;\\n}\\n\\n.me-5 {\\n margin-right: 3rem !important;\\n}\\n\\n.me-auto {\\n margin-right: auto !important;\\n}\\n\\n.mb-0 {\\n margin-bottom: 0 !important;\\n}\\n\\n.mb-1 {\\n margin-bottom: 0.25rem !important;\\n}\\n\\n.mb-2 {\\n margin-bottom: 0.5rem !important;\\n}\\n\\n.mb-3 {\\n margin-bottom: 1rem !important;\\n}\\n\\n.mb-4 {\\n margin-bottom: 1.5rem !important;\\n}\\n\\n.mb-5 {\\n margin-bottom: 3rem !important;\\n}\\n\\n.mb-auto {\\n margin-bottom: auto !important;\\n}\\n\\n.ms-0 {\\n margin-left: 0 !important;\\n}\\n\\n.ms-1 {\\n margin-left: 0.25rem !important;\\n}\\n\\n.ms-2 {\\n margin-left: 0.5rem !important;\\n}\\n\\n.ms-3 {\\n margin-left: 1rem !important;\\n}\\n\\n.ms-4 {\\n margin-left: 1.5rem !important;\\n}\\n\\n.ms-5 {\\n margin-left: 3rem !important;\\n}\\n\\n.ms-auto {\\n margin-left: auto !important;\\n}\\n\\n.p-0 {\\n padding: 0 !important;\\n}\\n\\n.p-1 {\\n padding: 0.25rem !important;\\n}\\n\\n.p-2 {\\n padding: 0.5rem !important;\\n}\\n\\n.p-3 {\\n padding: 1rem !important;\\n}\\n\\n.p-4 {\\n padding: 1.5rem !important;\\n}\\n\\n.p-5 {\\n padding: 3rem !important;\\n}\\n\\n.px-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n}\\n\\n.px-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n}\\n\\n.px-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n}\\n\\n.px-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n}\\n\\n.px-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n}\\n\\n.px-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n}\\n\\n.py-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n}\\n\\n.py-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n}\\n\\n.py-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n}\\n\\n.py-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n}\\n\\n.py-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n}\\n\\n.py-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n}\\n\\n.pt-0 {\\n padding-top: 0 !important;\\n}\\n\\n.pt-1 {\\n padding-top: 0.25rem !important;\\n}\\n\\n.pt-2 {\\n padding-top: 0.5rem !important;\\n}\\n\\n.pt-3 {\\n padding-top: 1rem !important;\\n}\\n\\n.pt-4 {\\n padding-top: 1.5rem !important;\\n}\\n\\n.pt-5 {\\n padding-top: 3rem !important;\\n}\\n\\n.pe-0 {\\n padding-right: 0 !important;\\n}\\n\\n.pe-1 {\\n padding-right: 0.25rem !important;\\n}\\n\\n.pe-2 {\\n padding-right: 0.5rem !important;\\n}\\n\\n.pe-3 {\\n padding-right: 1rem !important;\\n}\\n\\n.pe-4 {\\n padding-right: 1.5rem !important;\\n}\\n\\n.pe-5 {\\n padding-right: 3rem !important;\\n}\\n\\n.pb-0 {\\n padding-bottom: 0 !important;\\n}\\n\\n.pb-1 {\\n padding-bottom: 0.25rem !important;\\n}\\n\\n.pb-2 {\\n padding-bottom: 0.5rem !important;\\n}\\n\\n.pb-3 {\\n padding-bottom: 1rem !important;\\n}\\n\\n.pb-4 {\\n padding-bottom: 1.5rem !important;\\n}\\n\\n.pb-5 {\\n padding-bottom: 3rem !important;\\n}\\n\\n.ps-0 {\\n padding-left: 0 !important;\\n}\\n\\n.ps-1 {\\n padding-left: 0.25rem !important;\\n}\\n\\n.ps-2 {\\n padding-left: 0.5rem !important;\\n}\\n\\n.ps-3 {\\n padding-left: 1rem !important;\\n}\\n\\n.ps-4 {\\n padding-left: 1.5rem !important;\\n}\\n\\n.ps-5 {\\n padding-left: 3rem !important;\\n}\\n\\n.font-monospace {\\n font-family: var(--bs-font-monospace) !important;\\n}\\n\\n.fs-1 {\\n font-size: calc(1.375rem + 1.5vw) !important;\\n}\\n\\n.fs-2 {\\n font-size: calc(1.325rem + 0.9vw) !important;\\n}\\n\\n.fs-3 {\\n font-size: calc(1.3rem + 0.6vw) !important;\\n}\\n\\n.fs-4 {\\n font-size: calc(1.275rem + 0.3vw) !important;\\n}\\n\\n.fs-5 {\\n font-size: 1.25rem !important;\\n}\\n\\n.fs-6 {\\n font-size: 1rem !important;\\n}\\n\\n.fst-italic {\\n font-style: italic !important;\\n}\\n\\n.fst-normal {\\n font-style: normal !important;\\n}\\n\\n.fw-light {\\n font-weight: 300 !important;\\n}\\n\\n.fw-lighter {\\n font-weight: lighter !important;\\n}\\n\\n.fw-normal {\\n font-weight: 400 !important;\\n}\\n\\n.fw-bold {\\n font-weight: 700 !important;\\n}\\n\\n.fw-bolder {\\n font-weight: bolder !important;\\n}\\n\\n.lh-1 {\\n line-height: 1 !important;\\n}\\n\\n.lh-sm {\\n line-height: 1.25 !important;\\n}\\n\\n.lh-base {\\n line-height: 1.5 !important;\\n}\\n\\n.lh-lg {\\n line-height: 2 !important;\\n}\\n\\n.text-start {\\n text-align: left !important;\\n}\\n\\n.text-end {\\n text-align: right !important;\\n}\\n\\n.text-center {\\n text-align: center !important;\\n}\\n\\n.text-decoration-none {\\n text-decoration: none !important;\\n}\\n\\n.text-decoration-underline {\\n text-decoration: underline !important;\\n}\\n\\n.text-decoration-line-through {\\n text-decoration: line-through !important;\\n}\\n\\n.text-lowercase {\\n text-transform: lowercase !important;\\n}\\n\\n.text-uppercase {\\n text-transform: uppercase !important;\\n}\\n\\n.text-capitalize {\\n text-transform: capitalize !important;\\n}\\n\\n.text-wrap {\\n white-space: normal !important;\\n}\\n\\n.text-nowrap {\\n white-space: nowrap !important;\\n}\\n\\n/* rtl:begin:remove */\\n.text-break {\\n word-wrap: break-word !important;\\n word-break: break-word !important;\\n}\\n\\n/* rtl:end:remove */\\n.text-primary {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-secondary {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-success {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-info {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-warning {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-danger {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-light {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-dark {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-black {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-white {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-body {\\n --bs-text-opacity: 1;\\n color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\\n}\\n\\n.text-muted {\\n --bs-text-opacity: 1;\\n color: #6c757d !important;\\n}\\n\\n.text-black-50 {\\n --bs-text-opacity: 1;\\n color: rgba(0, 0, 0, 0.5) !important;\\n}\\n\\n.text-white-50 {\\n --bs-text-opacity: 1;\\n color: rgba(255, 255, 255, 0.5) !important;\\n}\\n\\n.text-reset {\\n --bs-text-opacity: 1;\\n color: inherit !important;\\n}\\n\\n.text-opacity-25 {\\n --bs-text-opacity: 0.25;\\n}\\n\\n.text-opacity-50 {\\n --bs-text-opacity: 0.5;\\n}\\n\\n.text-opacity-75 {\\n --bs-text-opacity: 0.75;\\n}\\n\\n.text-opacity-100 {\\n --bs-text-opacity: 1;\\n}\\n\\n.bg-primary {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-secondary {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-success {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-info {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-warning {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-danger {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-light {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-dark {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-black {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-white {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-body {\\n --bs-bg-opacity: 1;\\n background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\\n}\\n\\n.bg-transparent {\\n --bs-bg-opacity: 1;\\n background-color: transparent !important;\\n}\\n\\n.bg-opacity-10 {\\n --bs-bg-opacity: 0.1;\\n}\\n\\n.bg-opacity-25 {\\n --bs-bg-opacity: 0.25;\\n}\\n\\n.bg-opacity-50 {\\n --bs-bg-opacity: 0.5;\\n}\\n\\n.bg-opacity-75 {\\n --bs-bg-opacity: 0.75;\\n}\\n\\n.bg-opacity-100 {\\n --bs-bg-opacity: 1;\\n}\\n\\n.bg-gradient {\\n background-image: var(--bs-gradient) !important;\\n}\\n\\n.user-select-all {\\n -webkit-user-select: all !important;\\n -moz-user-select: all !important;\\n user-select: all !important;\\n}\\n\\n.user-select-auto {\\n -webkit-user-select: auto !important;\\n -moz-user-select: auto !important;\\n user-select: auto !important;\\n}\\n\\n.user-select-none {\\n -webkit-user-select: none !important;\\n -moz-user-select: none !important;\\n user-select: none !important;\\n}\\n\\n.pe-none {\\n pointer-events: none !important;\\n}\\n\\n.pe-auto {\\n pointer-events: auto !important;\\n}\\n\\n.rounded {\\n border-radius: 0.25rem !important;\\n}\\n\\n.rounded-0 {\\n border-radius: 0 !important;\\n}\\n\\n.rounded-1 {\\n border-radius: 0.2rem !important;\\n}\\n\\n.rounded-2 {\\n border-radius: 0.25rem !important;\\n}\\n\\n.rounded-3 {\\n border-radius: 0.3rem !important;\\n}\\n\\n.rounded-circle {\\n border-radius: 50% !important;\\n}\\n\\n.rounded-pill {\\n border-radius: 50rem !important;\\n}\\n\\n.rounded-top {\\n border-top-left-radius: 0.25rem !important;\\n border-top-right-radius: 0.25rem !important;\\n}\\n\\n.rounded-end {\\n border-top-right-radius: 0.25rem !important;\\n border-bottom-right-radius: 0.25rem !important;\\n}\\n\\n.rounded-bottom {\\n border-bottom-right-radius: 0.25rem !important;\\n border-bottom-left-radius: 0.25rem !important;\\n}\\n\\n.rounded-start {\\n border-bottom-left-radius: 0.25rem !important;\\n border-top-left-radius: 0.25rem !important;\\n}\\n\\n.visible {\\n visibility: visible !important;\\n}\\n\\n.invisible {\\n visibility: hidden !important;\\n}\\n\\n@media (min-width: 576px) {\\n .float-sm-start {\\n float: left !important;\\n }\\n\\n .float-sm-end {\\n float: right !important;\\n }\\n\\n .float-sm-none {\\n float: none !important;\\n }\\n\\n .d-sm-inline {\\n display: inline !important;\\n }\\n\\n .d-sm-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-sm-block {\\n display: block !important;\\n }\\n\\n .d-sm-grid {\\n display: grid !important;\\n }\\n\\n .d-sm-table {\\n display: table !important;\\n }\\n\\n .d-sm-table-row {\\n display: table-row !important;\\n }\\n\\n .d-sm-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-sm-flex {\\n display: flex !important;\\n }\\n\\n .d-sm-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-sm-none {\\n display: none !important;\\n }\\n\\n .flex-sm-fill {\\n flex: 1 1 auto !important;\\n }\\n\\n .flex-sm-row {\\n flex-direction: row !important;\\n }\\n\\n .flex-sm-column {\\n flex-direction: column !important;\\n }\\n\\n .flex-sm-row-reverse {\\n flex-direction: row-reverse !important;\\n }\\n\\n .flex-sm-column-reverse {\\n flex-direction: column-reverse !important;\\n }\\n\\n .flex-sm-grow-0 {\\n flex-grow: 0 !important;\\n }\\n\\n .flex-sm-grow-1 {\\n flex-grow: 1 !important;\\n }\\n\\n .flex-sm-shrink-0 {\\n flex-shrink: 0 !important;\\n }\\n\\n .flex-sm-shrink-1 {\\n flex-shrink: 1 !important;\\n }\\n\\n .flex-sm-wrap {\\n flex-wrap: wrap !important;\\n }\\n\\n .flex-sm-nowrap {\\n flex-wrap: nowrap !important;\\n }\\n\\n .flex-sm-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n }\\n\\n .gap-sm-0 {\\n gap: 0 !important;\\n }\\n\\n .gap-sm-1 {\\n gap: 0.25rem !important;\\n }\\n\\n .gap-sm-2 {\\n gap: 0.5rem !important;\\n }\\n\\n .gap-sm-3 {\\n gap: 1rem !important;\\n }\\n\\n .gap-sm-4 {\\n gap: 1.5rem !important;\\n }\\n\\n .gap-sm-5 {\\n gap: 3rem !important;\\n }\\n\\n .justify-content-sm-start {\\n justify-content: flex-start !important;\\n }\\n\\n .justify-content-sm-end {\\n justify-content: flex-end !important;\\n }\\n\\n .justify-content-sm-center {\\n justify-content: center !important;\\n }\\n\\n .justify-content-sm-between {\\n justify-content: space-between !important;\\n }\\n\\n .justify-content-sm-around {\\n justify-content: space-around !important;\\n }\\n\\n .justify-content-sm-evenly {\\n justify-content: space-evenly !important;\\n }\\n\\n .align-items-sm-start {\\n align-items: flex-start !important;\\n }\\n\\n .align-items-sm-end {\\n align-items: flex-end !important;\\n }\\n\\n .align-items-sm-center {\\n align-items: center !important;\\n }\\n\\n .align-items-sm-baseline {\\n align-items: baseline !important;\\n }\\n\\n .align-items-sm-stretch {\\n align-items: stretch !important;\\n }\\n\\n .align-content-sm-start {\\n align-content: flex-start !important;\\n }\\n\\n .align-content-sm-end {\\n align-content: flex-end !important;\\n }\\n\\n .align-content-sm-center {\\n align-content: center !important;\\n }\\n\\n .align-content-sm-between {\\n align-content: space-between !important;\\n }\\n\\n .align-content-sm-around {\\n align-content: space-around !important;\\n }\\n\\n .align-content-sm-stretch {\\n align-content: stretch !important;\\n }\\n\\n .align-self-sm-auto {\\n align-self: auto !important;\\n }\\n\\n .align-self-sm-start {\\n align-self: flex-start !important;\\n }\\n\\n .align-self-sm-end {\\n align-self: flex-end !important;\\n }\\n\\n .align-self-sm-center {\\n align-self: center !important;\\n }\\n\\n .align-self-sm-baseline {\\n align-self: baseline !important;\\n }\\n\\n .align-self-sm-stretch {\\n align-self: stretch !important;\\n }\\n\\n .order-sm-first {\\n order: -1 !important;\\n }\\n\\n .order-sm-0 {\\n order: 0 !important;\\n }\\n\\n .order-sm-1 {\\n order: 1 !important;\\n }\\n\\n .order-sm-2 {\\n order: 2 !important;\\n }\\n\\n .order-sm-3 {\\n order: 3 !important;\\n }\\n\\n .order-sm-4 {\\n order: 4 !important;\\n }\\n\\n .order-sm-5 {\\n order: 5 !important;\\n }\\n\\n .order-sm-last {\\n order: 6 !important;\\n }\\n\\n .m-sm-0 {\\n margin: 0 !important;\\n }\\n\\n .m-sm-1 {\\n margin: 0.25rem !important;\\n }\\n\\n .m-sm-2 {\\n margin: 0.5rem !important;\\n }\\n\\n .m-sm-3 {\\n margin: 1rem !important;\\n }\\n\\n .m-sm-4 {\\n margin: 1.5rem !important;\\n }\\n\\n .m-sm-5 {\\n margin: 3rem !important;\\n }\\n\\n .m-sm-auto {\\n margin: auto !important;\\n }\\n\\n .mx-sm-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n }\\n\\n .mx-sm-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n }\\n\\n .mx-sm-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n }\\n\\n .mx-sm-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n }\\n\\n .mx-sm-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n }\\n\\n .mx-sm-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n }\\n\\n .mx-sm-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n }\\n\\n .my-sm-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n }\\n\\n .my-sm-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .my-sm-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .my-sm-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n }\\n\\n .my-sm-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .my-sm-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n }\\n\\n .my-sm-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n }\\n\\n .mt-sm-0 {\\n margin-top: 0 !important;\\n }\\n\\n .mt-sm-1 {\\n margin-top: 0.25rem !important;\\n }\\n\\n .mt-sm-2 {\\n margin-top: 0.5rem !important;\\n }\\n\\n .mt-sm-3 {\\n margin-top: 1rem !important;\\n }\\n\\n .mt-sm-4 {\\n margin-top: 1.5rem !important;\\n }\\n\\n .mt-sm-5 {\\n margin-top: 3rem !important;\\n }\\n\\n .mt-sm-auto {\\n margin-top: auto !important;\\n }\\n\\n .me-sm-0 {\\n margin-right: 0 !important;\\n }\\n\\n .me-sm-1 {\\n margin-right: 0.25rem !important;\\n }\\n\\n .me-sm-2 {\\n margin-right: 0.5rem !important;\\n }\\n\\n .me-sm-3 {\\n margin-right: 1rem !important;\\n }\\n\\n .me-sm-4 {\\n margin-right: 1.5rem !important;\\n }\\n\\n .me-sm-5 {\\n margin-right: 3rem !important;\\n }\\n\\n .me-sm-auto {\\n margin-right: auto !important;\\n }\\n\\n .mb-sm-0 {\\n margin-bottom: 0 !important;\\n }\\n\\n .mb-sm-1 {\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .mb-sm-2 {\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .mb-sm-3 {\\n margin-bottom: 1rem !important;\\n }\\n\\n .mb-sm-4 {\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .mb-sm-5 {\\n margin-bottom: 3rem !important;\\n }\\n\\n .mb-sm-auto {\\n margin-bottom: auto !important;\\n }\\n\\n .ms-sm-0 {\\n margin-left: 0 !important;\\n }\\n\\n .ms-sm-1 {\\n margin-left: 0.25rem !important;\\n }\\n\\n .ms-sm-2 {\\n margin-left: 0.5rem !important;\\n }\\n\\n .ms-sm-3 {\\n margin-left: 1rem !important;\\n }\\n\\n .ms-sm-4 {\\n margin-left: 1.5rem !important;\\n }\\n\\n .ms-sm-5 {\\n margin-left: 3rem !important;\\n }\\n\\n .ms-sm-auto {\\n margin-left: auto !important;\\n }\\n\\n .p-sm-0 {\\n padding: 0 !important;\\n }\\n\\n .p-sm-1 {\\n padding: 0.25rem !important;\\n }\\n\\n .p-sm-2 {\\n padding: 0.5rem !important;\\n }\\n\\n .p-sm-3 {\\n padding: 1rem !important;\\n }\\n\\n .p-sm-4 {\\n padding: 1.5rem !important;\\n }\\n\\n .p-sm-5 {\\n padding: 3rem !important;\\n }\\n\\n .px-sm-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n }\\n\\n .px-sm-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n }\\n\\n .px-sm-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n }\\n\\n .px-sm-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n }\\n\\n .px-sm-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n }\\n\\n .px-sm-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n }\\n\\n .py-sm-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n }\\n\\n .py-sm-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .py-sm-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .py-sm-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n }\\n\\n .py-sm-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .py-sm-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n }\\n\\n .pt-sm-0 {\\n padding-top: 0 !important;\\n }\\n\\n .pt-sm-1 {\\n padding-top: 0.25rem !important;\\n }\\n\\n .pt-sm-2 {\\n padding-top: 0.5rem !important;\\n }\\n\\n .pt-sm-3 {\\n padding-top: 1rem !important;\\n }\\n\\n .pt-sm-4 {\\n padding-top: 1.5rem !important;\\n }\\n\\n .pt-sm-5 {\\n padding-top: 3rem !important;\\n }\\n\\n .pe-sm-0 {\\n padding-right: 0 !important;\\n }\\n\\n .pe-sm-1 {\\n padding-right: 0.25rem !important;\\n }\\n\\n .pe-sm-2 {\\n padding-right: 0.5rem !important;\\n }\\n\\n .pe-sm-3 {\\n padding-right: 1rem !important;\\n }\\n\\n .pe-sm-4 {\\n padding-right: 1.5rem !important;\\n }\\n\\n .pe-sm-5 {\\n padding-right: 3rem !important;\\n }\\n\\n .pb-sm-0 {\\n padding-bottom: 0 !important;\\n }\\n\\n .pb-sm-1 {\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .pb-sm-2 {\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .pb-sm-3 {\\n padding-bottom: 1rem !important;\\n }\\n\\n .pb-sm-4 {\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .pb-sm-5 {\\n padding-bottom: 3rem !important;\\n }\\n\\n .ps-sm-0 {\\n padding-left: 0 !important;\\n }\\n\\n .ps-sm-1 {\\n padding-left: 0.25rem !important;\\n }\\n\\n .ps-sm-2 {\\n padding-left: 0.5rem !important;\\n }\\n\\n .ps-sm-3 {\\n padding-left: 1rem !important;\\n }\\n\\n .ps-sm-4 {\\n padding-left: 1.5rem !important;\\n }\\n\\n .ps-sm-5 {\\n padding-left: 3rem !important;\\n }\\n\\n .text-sm-start {\\n text-align: left !important;\\n }\\n\\n .text-sm-end {\\n text-align: right !important;\\n }\\n\\n .text-sm-center {\\n text-align: center !important;\\n }\\n}\\n@media (min-width: 768px) {\\n .float-md-start {\\n float: left !important;\\n }\\n\\n .float-md-end {\\n float: right !important;\\n }\\n\\n .float-md-none {\\n float: none !important;\\n }\\n\\n .d-md-inline {\\n display: inline !important;\\n }\\n\\n .d-md-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-md-block {\\n display: block !important;\\n }\\n\\n .d-md-grid {\\n display: grid !important;\\n }\\n\\n .d-md-table {\\n display: table !important;\\n }\\n\\n .d-md-table-row {\\n display: table-row !important;\\n }\\n\\n .d-md-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-md-flex {\\n display: flex !important;\\n }\\n\\n .d-md-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-md-none {\\n display: none !important;\\n }\\n\\n .flex-md-fill {\\n flex: 1 1 auto !important;\\n }\\n\\n .flex-md-row {\\n flex-direction: row !important;\\n }\\n\\n .flex-md-column {\\n flex-direction: column !important;\\n }\\n\\n .flex-md-row-reverse {\\n flex-direction: row-reverse !important;\\n }\\n\\n .flex-md-column-reverse {\\n flex-direction: column-reverse !important;\\n }\\n\\n .flex-md-grow-0 {\\n flex-grow: 0 !important;\\n }\\n\\n .flex-md-grow-1 {\\n flex-grow: 1 !important;\\n }\\n\\n .flex-md-shrink-0 {\\n flex-shrink: 0 !important;\\n }\\n\\n .flex-md-shrink-1 {\\n flex-shrink: 1 !important;\\n }\\n\\n .flex-md-wrap {\\n flex-wrap: wrap !important;\\n }\\n\\n .flex-md-nowrap {\\n flex-wrap: nowrap !important;\\n }\\n\\n .flex-md-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n }\\n\\n .gap-md-0 {\\n gap: 0 !important;\\n }\\n\\n .gap-md-1 {\\n gap: 0.25rem !important;\\n }\\n\\n .gap-md-2 {\\n gap: 0.5rem !important;\\n }\\n\\n .gap-md-3 {\\n gap: 1rem !important;\\n }\\n\\n .gap-md-4 {\\n gap: 1.5rem !important;\\n }\\n\\n .gap-md-5 {\\n gap: 3rem !important;\\n }\\n\\n .justify-content-md-start {\\n justify-content: flex-start !important;\\n }\\n\\n .justify-content-md-end {\\n justify-content: flex-end !important;\\n }\\n\\n .justify-content-md-center {\\n justify-content: center !important;\\n }\\n\\n .justify-content-md-between {\\n justify-content: space-between !important;\\n }\\n\\n .justify-content-md-around {\\n justify-content: space-around !important;\\n }\\n\\n .justify-content-md-evenly {\\n justify-content: space-evenly !important;\\n }\\n\\n .align-items-md-start {\\n align-items: flex-start !important;\\n }\\n\\n .align-items-md-end {\\n align-items: flex-end !important;\\n }\\n\\n .align-items-md-center {\\n align-items: center !important;\\n }\\n\\n .align-items-md-baseline {\\n align-items: baseline !important;\\n }\\n\\n .align-items-md-stretch {\\n align-items: stretch !important;\\n }\\n\\n .align-content-md-start {\\n align-content: flex-start !important;\\n }\\n\\n .align-content-md-end {\\n align-content: flex-end !important;\\n }\\n\\n .align-content-md-center {\\n align-content: center !important;\\n }\\n\\n .align-content-md-between {\\n align-content: space-between !important;\\n }\\n\\n .align-content-md-around {\\n align-content: space-around !important;\\n }\\n\\n .align-content-md-stretch {\\n align-content: stretch !important;\\n }\\n\\n .align-self-md-auto {\\n align-self: auto !important;\\n }\\n\\n .align-self-md-start {\\n align-self: flex-start !important;\\n }\\n\\n .align-self-md-end {\\n align-self: flex-end !important;\\n }\\n\\n .align-self-md-center {\\n align-self: center !important;\\n }\\n\\n .align-self-md-baseline {\\n align-self: baseline !important;\\n }\\n\\n .align-self-md-stretch {\\n align-self: stretch !important;\\n }\\n\\n .order-md-first {\\n order: -1 !important;\\n }\\n\\n .order-md-0 {\\n order: 0 !important;\\n }\\n\\n .order-md-1 {\\n order: 1 !important;\\n }\\n\\n .order-md-2 {\\n order: 2 !important;\\n }\\n\\n .order-md-3 {\\n order: 3 !important;\\n }\\n\\n .order-md-4 {\\n order: 4 !important;\\n }\\n\\n .order-md-5 {\\n order: 5 !important;\\n }\\n\\n .order-md-last {\\n order: 6 !important;\\n }\\n\\n .m-md-0 {\\n margin: 0 !important;\\n }\\n\\n .m-md-1 {\\n margin: 0.25rem !important;\\n }\\n\\n .m-md-2 {\\n margin: 0.5rem !important;\\n }\\n\\n .m-md-3 {\\n margin: 1rem !important;\\n }\\n\\n .m-md-4 {\\n margin: 1.5rem !important;\\n }\\n\\n .m-md-5 {\\n margin: 3rem !important;\\n }\\n\\n .m-md-auto {\\n margin: auto !important;\\n }\\n\\n .mx-md-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n }\\n\\n .mx-md-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n }\\n\\n .mx-md-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n }\\n\\n .mx-md-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n }\\n\\n .mx-md-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n }\\n\\n .mx-md-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n }\\n\\n .mx-md-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n }\\n\\n .my-md-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n }\\n\\n .my-md-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .my-md-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .my-md-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n }\\n\\n .my-md-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .my-md-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n }\\n\\n .my-md-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n }\\n\\n .mt-md-0 {\\n margin-top: 0 !important;\\n }\\n\\n .mt-md-1 {\\n margin-top: 0.25rem !important;\\n }\\n\\n .mt-md-2 {\\n margin-top: 0.5rem !important;\\n }\\n\\n .mt-md-3 {\\n margin-top: 1rem !important;\\n }\\n\\n .mt-md-4 {\\n margin-top: 1.5rem !important;\\n }\\n\\n .mt-md-5 {\\n margin-top: 3rem !important;\\n }\\n\\n .mt-md-auto {\\n margin-top: auto !important;\\n }\\n\\n .me-md-0 {\\n margin-right: 0 !important;\\n }\\n\\n .me-md-1 {\\n margin-right: 0.25rem !important;\\n }\\n\\n .me-md-2 {\\n margin-right: 0.5rem !important;\\n }\\n\\n .me-md-3 {\\n margin-right: 1rem !important;\\n }\\n\\n .me-md-4 {\\n margin-right: 1.5rem !important;\\n }\\n\\n .me-md-5 {\\n margin-right: 3rem !important;\\n }\\n\\n .me-md-auto {\\n margin-right: auto !important;\\n }\\n\\n .mb-md-0 {\\n margin-bottom: 0 !important;\\n }\\n\\n .mb-md-1 {\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .mb-md-2 {\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .mb-md-3 {\\n margin-bottom: 1rem !important;\\n }\\n\\n .mb-md-4 {\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .mb-md-5 {\\n margin-bottom: 3rem !important;\\n }\\n\\n .mb-md-auto {\\n margin-bottom: auto !important;\\n }\\n\\n .ms-md-0 {\\n margin-left: 0 !important;\\n }\\n\\n .ms-md-1 {\\n margin-left: 0.25rem !important;\\n }\\n\\n .ms-md-2 {\\n margin-left: 0.5rem !important;\\n }\\n\\n .ms-md-3 {\\n margin-left: 1rem !important;\\n }\\n\\n .ms-md-4 {\\n margin-left: 1.5rem !important;\\n }\\n\\n .ms-md-5 {\\n margin-left: 3rem !important;\\n }\\n\\n .ms-md-auto {\\n margin-left: auto !important;\\n }\\n\\n .p-md-0 {\\n padding: 0 !important;\\n }\\n\\n .p-md-1 {\\n padding: 0.25rem !important;\\n }\\n\\n .p-md-2 {\\n padding: 0.5rem !important;\\n }\\n\\n .p-md-3 {\\n padding: 1rem !important;\\n }\\n\\n .p-md-4 {\\n padding: 1.5rem !important;\\n }\\n\\n .p-md-5 {\\n padding: 3rem !important;\\n }\\n\\n .px-md-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n }\\n\\n .px-md-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n }\\n\\n .px-md-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n }\\n\\n .px-md-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n }\\n\\n .px-md-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n }\\n\\n .px-md-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n }\\n\\n .py-md-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n }\\n\\n .py-md-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .py-md-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .py-md-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n }\\n\\n .py-md-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .py-md-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n }\\n\\n .pt-md-0 {\\n padding-top: 0 !important;\\n }\\n\\n .pt-md-1 {\\n padding-top: 0.25rem !important;\\n }\\n\\n .pt-md-2 {\\n padding-top: 0.5rem !important;\\n }\\n\\n .pt-md-3 {\\n padding-top: 1rem !important;\\n }\\n\\n .pt-md-4 {\\n padding-top: 1.5rem !important;\\n }\\n\\n .pt-md-5 {\\n padding-top: 3rem !important;\\n }\\n\\n .pe-md-0 {\\n padding-right: 0 !important;\\n }\\n\\n .pe-md-1 {\\n padding-right: 0.25rem !important;\\n }\\n\\n .pe-md-2 {\\n padding-right: 0.5rem !important;\\n }\\n\\n .pe-md-3 {\\n padding-right: 1rem !important;\\n }\\n\\n .pe-md-4 {\\n padding-right: 1.5rem !important;\\n }\\n\\n .pe-md-5 {\\n padding-right: 3rem !important;\\n }\\n\\n .pb-md-0 {\\n padding-bottom: 0 !important;\\n }\\n\\n .pb-md-1 {\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .pb-md-2 {\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .pb-md-3 {\\n padding-bottom: 1rem !important;\\n }\\n\\n .pb-md-4 {\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .pb-md-5 {\\n padding-bottom: 3rem !important;\\n }\\n\\n .ps-md-0 {\\n padding-left: 0 !important;\\n }\\n\\n .ps-md-1 {\\n padding-left: 0.25rem !important;\\n }\\n\\n .ps-md-2 {\\n padding-left: 0.5rem !important;\\n }\\n\\n .ps-md-3 {\\n padding-left: 1rem !important;\\n }\\n\\n .ps-md-4 {\\n padding-left: 1.5rem !important;\\n }\\n\\n .ps-md-5 {\\n padding-left: 3rem !important;\\n }\\n\\n .text-md-start {\\n text-align: left !important;\\n }\\n\\n .text-md-end {\\n text-align: right !important;\\n }\\n\\n .text-md-center {\\n text-align: center !important;\\n }\\n}\\n@media (min-width: 992px) {\\n .float-lg-start {\\n float: left !important;\\n }\\n\\n .float-lg-end {\\n float: right !important;\\n }\\n\\n .float-lg-none {\\n float: none !important;\\n }\\n\\n .d-lg-inline {\\n display: inline !important;\\n }\\n\\n .d-lg-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-lg-block {\\n display: block !important;\\n }\\n\\n .d-lg-grid {\\n display: grid !important;\\n }\\n\\n .d-lg-table {\\n display: table !important;\\n }\\n\\n .d-lg-table-row {\\n display: table-row !important;\\n }\\n\\n .d-lg-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-lg-flex {\\n display: flex !important;\\n }\\n\\n .d-lg-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-lg-none {\\n display: none !important;\\n }\\n\\n .flex-lg-fill {\\n flex: 1 1 auto !important;\\n }\\n\\n .flex-lg-row {\\n flex-direction: row !important;\\n }\\n\\n .flex-lg-column {\\n flex-direction: column !important;\\n }\\n\\n .flex-lg-row-reverse {\\n flex-direction: row-reverse !important;\\n }\\n\\n .flex-lg-column-reverse {\\n flex-direction: column-reverse !important;\\n }\\n\\n .flex-lg-grow-0 {\\n flex-grow: 0 !important;\\n }\\n\\n .flex-lg-grow-1 {\\n flex-grow: 1 !important;\\n }\\n\\n .flex-lg-shrink-0 {\\n flex-shrink: 0 !important;\\n }\\n\\n .flex-lg-shrink-1 {\\n flex-shrink: 1 !important;\\n }\\n\\n .flex-lg-wrap {\\n flex-wrap: wrap !important;\\n }\\n\\n .flex-lg-nowrap {\\n flex-wrap: nowrap !important;\\n }\\n\\n .flex-lg-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n }\\n\\n .gap-lg-0 {\\n gap: 0 !important;\\n }\\n\\n .gap-lg-1 {\\n gap: 0.25rem !important;\\n }\\n\\n .gap-lg-2 {\\n gap: 0.5rem !important;\\n }\\n\\n .gap-lg-3 {\\n gap: 1rem !important;\\n }\\n\\n .gap-lg-4 {\\n gap: 1.5rem !important;\\n }\\n\\n .gap-lg-5 {\\n gap: 3rem !important;\\n }\\n\\n .justify-content-lg-start {\\n justify-content: flex-start !important;\\n }\\n\\n .justify-content-lg-end {\\n justify-content: flex-end !important;\\n }\\n\\n .justify-content-lg-center {\\n justify-content: center !important;\\n }\\n\\n .justify-content-lg-between {\\n justify-content: space-between !important;\\n }\\n\\n .justify-content-lg-around {\\n justify-content: space-around !important;\\n }\\n\\n .justify-content-lg-evenly {\\n justify-content: space-evenly !important;\\n }\\n\\n .align-items-lg-start {\\n align-items: flex-start !important;\\n }\\n\\n .align-items-lg-end {\\n align-items: flex-end !important;\\n }\\n\\n .align-items-lg-center {\\n align-items: center !important;\\n }\\n\\n .align-items-lg-baseline {\\n align-items: baseline !important;\\n }\\n\\n .align-items-lg-stretch {\\n align-items: stretch !important;\\n }\\n\\n .align-content-lg-start {\\n align-content: flex-start !important;\\n }\\n\\n .align-content-lg-end {\\n align-content: flex-end !important;\\n }\\n\\n .align-content-lg-center {\\n align-content: center !important;\\n }\\n\\n .align-content-lg-between {\\n align-content: space-between !important;\\n }\\n\\n .align-content-lg-around {\\n align-content: space-around !important;\\n }\\n\\n .align-content-lg-stretch {\\n align-content: stretch !important;\\n }\\n\\n .align-self-lg-auto {\\n align-self: auto !important;\\n }\\n\\n .align-self-lg-start {\\n align-self: flex-start !important;\\n }\\n\\n .align-self-lg-end {\\n align-self: flex-end !important;\\n }\\n\\n .align-self-lg-center {\\n align-self: center !important;\\n }\\n\\n .align-self-lg-baseline {\\n align-self: baseline !important;\\n }\\n\\n .align-self-lg-stretch {\\n align-self: stretch !important;\\n }\\n\\n .order-lg-first {\\n order: -1 !important;\\n }\\n\\n .order-lg-0 {\\n order: 0 !important;\\n }\\n\\n .order-lg-1 {\\n order: 1 !important;\\n }\\n\\n .order-lg-2 {\\n order: 2 !important;\\n }\\n\\n .order-lg-3 {\\n order: 3 !important;\\n }\\n\\n .order-lg-4 {\\n order: 4 !important;\\n }\\n\\n .order-lg-5 {\\n order: 5 !important;\\n }\\n\\n .order-lg-last {\\n order: 6 !important;\\n }\\n\\n .m-lg-0 {\\n margin: 0 !important;\\n }\\n\\n .m-lg-1 {\\n margin: 0.25rem !important;\\n }\\n\\n .m-lg-2 {\\n margin: 0.5rem !important;\\n }\\n\\n .m-lg-3 {\\n margin: 1rem !important;\\n }\\n\\n .m-lg-4 {\\n margin: 1.5rem !important;\\n }\\n\\n .m-lg-5 {\\n margin: 3rem !important;\\n }\\n\\n .m-lg-auto {\\n margin: auto !important;\\n }\\n\\n .mx-lg-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n }\\n\\n .mx-lg-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n }\\n\\n .mx-lg-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n }\\n\\n .mx-lg-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n }\\n\\n .mx-lg-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n }\\n\\n .mx-lg-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n }\\n\\n .mx-lg-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n }\\n\\n .my-lg-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n }\\n\\n .my-lg-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .my-lg-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .my-lg-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n }\\n\\n .my-lg-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .my-lg-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n }\\n\\n .my-lg-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n }\\n\\n .mt-lg-0 {\\n margin-top: 0 !important;\\n }\\n\\n .mt-lg-1 {\\n margin-top: 0.25rem !important;\\n }\\n\\n .mt-lg-2 {\\n margin-top: 0.5rem !important;\\n }\\n\\n .mt-lg-3 {\\n margin-top: 1rem !important;\\n }\\n\\n .mt-lg-4 {\\n margin-top: 1.5rem !important;\\n }\\n\\n .mt-lg-5 {\\n margin-top: 3rem !important;\\n }\\n\\n .mt-lg-auto {\\n margin-top: auto !important;\\n }\\n\\n .me-lg-0 {\\n margin-right: 0 !important;\\n }\\n\\n .me-lg-1 {\\n margin-right: 0.25rem !important;\\n }\\n\\n .me-lg-2 {\\n margin-right: 0.5rem !important;\\n }\\n\\n .me-lg-3 {\\n margin-right: 1rem !important;\\n }\\n\\n .me-lg-4 {\\n margin-right: 1.5rem !important;\\n }\\n\\n .me-lg-5 {\\n margin-right: 3rem !important;\\n }\\n\\n .me-lg-auto {\\n margin-right: auto !important;\\n }\\n\\n .mb-lg-0 {\\n margin-bottom: 0 !important;\\n }\\n\\n .mb-lg-1 {\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .mb-lg-2 {\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .mb-lg-3 {\\n margin-bottom: 1rem !important;\\n }\\n\\n .mb-lg-4 {\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .mb-lg-5 {\\n margin-bottom: 3rem !important;\\n }\\n\\n .mb-lg-auto {\\n margin-bottom: auto !important;\\n }\\n\\n .ms-lg-0 {\\n margin-left: 0 !important;\\n }\\n\\n .ms-lg-1 {\\n margin-left: 0.25rem !important;\\n }\\n\\n .ms-lg-2 {\\n margin-left: 0.5rem !important;\\n }\\n\\n .ms-lg-3 {\\n margin-left: 1rem !important;\\n }\\n\\n .ms-lg-4 {\\n margin-left: 1.5rem !important;\\n }\\n\\n .ms-lg-5 {\\n margin-left: 3rem !important;\\n }\\n\\n .ms-lg-auto {\\n margin-left: auto !important;\\n }\\n\\n .p-lg-0 {\\n padding: 0 !important;\\n }\\n\\n .p-lg-1 {\\n padding: 0.25rem !important;\\n }\\n\\n .p-lg-2 {\\n padding: 0.5rem !important;\\n }\\n\\n .p-lg-3 {\\n padding: 1rem !important;\\n }\\n\\n .p-lg-4 {\\n padding: 1.5rem !important;\\n }\\n\\n .p-lg-5 {\\n padding: 3rem !important;\\n }\\n\\n .px-lg-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n }\\n\\n .px-lg-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n }\\n\\n .px-lg-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n }\\n\\n .px-lg-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n }\\n\\n .px-lg-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n }\\n\\n .px-lg-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n }\\n\\n .py-lg-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n }\\n\\n .py-lg-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .py-lg-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .py-lg-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n }\\n\\n .py-lg-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .py-lg-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n }\\n\\n .pt-lg-0 {\\n padding-top: 0 !important;\\n }\\n\\n .pt-lg-1 {\\n padding-top: 0.25rem !important;\\n }\\n\\n .pt-lg-2 {\\n padding-top: 0.5rem !important;\\n }\\n\\n .pt-lg-3 {\\n padding-top: 1rem !important;\\n }\\n\\n .pt-lg-4 {\\n padding-top: 1.5rem !important;\\n }\\n\\n .pt-lg-5 {\\n padding-top: 3rem !important;\\n }\\n\\n .pe-lg-0 {\\n padding-right: 0 !important;\\n }\\n\\n .pe-lg-1 {\\n padding-right: 0.25rem !important;\\n }\\n\\n .pe-lg-2 {\\n padding-right: 0.5rem !important;\\n }\\n\\n .pe-lg-3 {\\n padding-right: 1rem !important;\\n }\\n\\n .pe-lg-4 {\\n padding-right: 1.5rem !important;\\n }\\n\\n .pe-lg-5 {\\n padding-right: 3rem !important;\\n }\\n\\n .pb-lg-0 {\\n padding-bottom: 0 !important;\\n }\\n\\n .pb-lg-1 {\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .pb-lg-2 {\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .pb-lg-3 {\\n padding-bottom: 1rem !important;\\n }\\n\\n .pb-lg-4 {\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .pb-lg-5 {\\n padding-bottom: 3rem !important;\\n }\\n\\n .ps-lg-0 {\\n padding-left: 0 !important;\\n }\\n\\n .ps-lg-1 {\\n padding-left: 0.25rem !important;\\n }\\n\\n .ps-lg-2 {\\n padding-left: 0.5rem !important;\\n }\\n\\n .ps-lg-3 {\\n padding-left: 1rem !important;\\n }\\n\\n .ps-lg-4 {\\n padding-left: 1.5rem !important;\\n }\\n\\n .ps-lg-5 {\\n padding-left: 3rem !important;\\n }\\n\\n .text-lg-start {\\n text-align: left !important;\\n }\\n\\n .text-lg-end {\\n text-align: right !important;\\n }\\n\\n .text-lg-center {\\n text-align: center !important;\\n }\\n}\\n@media (min-width: 1200px) {\\n .float-xl-start {\\n float: left !important;\\n }\\n\\n .float-xl-end {\\n float: right !important;\\n }\\n\\n .float-xl-none {\\n float: none !important;\\n }\\n\\n .d-xl-inline {\\n display: inline !important;\\n }\\n\\n .d-xl-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-xl-block {\\n display: block !important;\\n }\\n\\n .d-xl-grid {\\n display: grid !important;\\n }\\n\\n .d-xl-table {\\n display: table !important;\\n }\\n\\n .d-xl-table-row {\\n display: table-row !important;\\n }\\n\\n .d-xl-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-xl-flex {\\n display: flex !important;\\n }\\n\\n .d-xl-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-xl-none {\\n display: none !important;\\n }\\n\\n .flex-xl-fill {\\n flex: 1 1 auto !important;\\n }\\n\\n .flex-xl-row {\\n flex-direction: row !important;\\n }\\n\\n .flex-xl-column {\\n flex-direction: column !important;\\n }\\n\\n .flex-xl-row-reverse {\\n flex-direction: row-reverse !important;\\n }\\n\\n .flex-xl-column-reverse {\\n flex-direction: column-reverse !important;\\n }\\n\\n .flex-xl-grow-0 {\\n flex-grow: 0 !important;\\n }\\n\\n .flex-xl-grow-1 {\\n flex-grow: 1 !important;\\n }\\n\\n .flex-xl-shrink-0 {\\n flex-shrink: 0 !important;\\n }\\n\\n .flex-xl-shrink-1 {\\n flex-shrink: 1 !important;\\n }\\n\\n .flex-xl-wrap {\\n flex-wrap: wrap !important;\\n }\\n\\n .flex-xl-nowrap {\\n flex-wrap: nowrap !important;\\n }\\n\\n .flex-xl-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n }\\n\\n .gap-xl-0 {\\n gap: 0 !important;\\n }\\n\\n .gap-xl-1 {\\n gap: 0.25rem !important;\\n }\\n\\n .gap-xl-2 {\\n gap: 0.5rem !important;\\n }\\n\\n .gap-xl-3 {\\n gap: 1rem !important;\\n }\\n\\n .gap-xl-4 {\\n gap: 1.5rem !important;\\n }\\n\\n .gap-xl-5 {\\n gap: 3rem !important;\\n }\\n\\n .justify-content-xl-start {\\n justify-content: flex-start !important;\\n }\\n\\n .justify-content-xl-end {\\n justify-content: flex-end !important;\\n }\\n\\n .justify-content-xl-center {\\n justify-content: center !important;\\n }\\n\\n .justify-content-xl-between {\\n justify-content: space-between !important;\\n }\\n\\n .justify-content-xl-around {\\n justify-content: space-around !important;\\n }\\n\\n .justify-content-xl-evenly {\\n justify-content: space-evenly !important;\\n }\\n\\n .align-items-xl-start {\\n align-items: flex-start !important;\\n }\\n\\n .align-items-xl-end {\\n align-items: flex-end !important;\\n }\\n\\n .align-items-xl-center {\\n align-items: center !important;\\n }\\n\\n .align-items-xl-baseline {\\n align-items: baseline !important;\\n }\\n\\n .align-items-xl-stretch {\\n align-items: stretch !important;\\n }\\n\\n .align-content-xl-start {\\n align-content: flex-start !important;\\n }\\n\\n .align-content-xl-end {\\n align-content: flex-end !important;\\n }\\n\\n .align-content-xl-center {\\n align-content: center !important;\\n }\\n\\n .align-content-xl-between {\\n align-content: space-between !important;\\n }\\n\\n .align-content-xl-around {\\n align-content: space-around !important;\\n }\\n\\n .align-content-xl-stretch {\\n align-content: stretch !important;\\n }\\n\\n .align-self-xl-auto {\\n align-self: auto !important;\\n }\\n\\n .align-self-xl-start {\\n align-self: flex-start !important;\\n }\\n\\n .align-self-xl-end {\\n align-self: flex-end !important;\\n }\\n\\n .align-self-xl-center {\\n align-self: center !important;\\n }\\n\\n .align-self-xl-baseline {\\n align-self: baseline !important;\\n }\\n\\n .align-self-xl-stretch {\\n align-self: stretch !important;\\n }\\n\\n .order-xl-first {\\n order: -1 !important;\\n }\\n\\n .order-xl-0 {\\n order: 0 !important;\\n }\\n\\n .order-xl-1 {\\n order: 1 !important;\\n }\\n\\n .order-xl-2 {\\n order: 2 !important;\\n }\\n\\n .order-xl-3 {\\n order: 3 !important;\\n }\\n\\n .order-xl-4 {\\n order: 4 !important;\\n }\\n\\n .order-xl-5 {\\n order: 5 !important;\\n }\\n\\n .order-xl-last {\\n order: 6 !important;\\n }\\n\\n .m-xl-0 {\\n margin: 0 !important;\\n }\\n\\n .m-xl-1 {\\n margin: 0.25rem !important;\\n }\\n\\n .m-xl-2 {\\n margin: 0.5rem !important;\\n }\\n\\n .m-xl-3 {\\n margin: 1rem !important;\\n }\\n\\n .m-xl-4 {\\n margin: 1.5rem !important;\\n }\\n\\n .m-xl-5 {\\n margin: 3rem !important;\\n }\\n\\n .m-xl-auto {\\n margin: auto !important;\\n }\\n\\n .mx-xl-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n }\\n\\n .mx-xl-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n }\\n\\n .mx-xl-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n }\\n\\n .mx-xl-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n }\\n\\n .mx-xl-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n }\\n\\n .mx-xl-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n }\\n\\n .mx-xl-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n }\\n\\n .my-xl-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n }\\n\\n .my-xl-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .my-xl-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .my-xl-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n }\\n\\n .my-xl-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .my-xl-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n }\\n\\n .my-xl-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n }\\n\\n .mt-xl-0 {\\n margin-top: 0 !important;\\n }\\n\\n .mt-xl-1 {\\n margin-top: 0.25rem !important;\\n }\\n\\n .mt-xl-2 {\\n margin-top: 0.5rem !important;\\n }\\n\\n .mt-xl-3 {\\n margin-top: 1rem !important;\\n }\\n\\n .mt-xl-4 {\\n margin-top: 1.5rem !important;\\n }\\n\\n .mt-xl-5 {\\n margin-top: 3rem !important;\\n }\\n\\n .mt-xl-auto {\\n margin-top: auto !important;\\n }\\n\\n .me-xl-0 {\\n margin-right: 0 !important;\\n }\\n\\n .me-xl-1 {\\n margin-right: 0.25rem !important;\\n }\\n\\n .me-xl-2 {\\n margin-right: 0.5rem !important;\\n }\\n\\n .me-xl-3 {\\n margin-right: 1rem !important;\\n }\\n\\n .me-xl-4 {\\n margin-right: 1.5rem !important;\\n }\\n\\n .me-xl-5 {\\n margin-right: 3rem !important;\\n }\\n\\n .me-xl-auto {\\n margin-right: auto !important;\\n }\\n\\n .mb-xl-0 {\\n margin-bottom: 0 !important;\\n }\\n\\n .mb-xl-1 {\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .mb-xl-2 {\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .mb-xl-3 {\\n margin-bottom: 1rem !important;\\n }\\n\\n .mb-xl-4 {\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .mb-xl-5 {\\n margin-bottom: 3rem !important;\\n }\\n\\n .mb-xl-auto {\\n margin-bottom: auto !important;\\n }\\n\\n .ms-xl-0 {\\n margin-left: 0 !important;\\n }\\n\\n .ms-xl-1 {\\n margin-left: 0.25rem !important;\\n }\\n\\n .ms-xl-2 {\\n margin-left: 0.5rem !important;\\n }\\n\\n .ms-xl-3 {\\n margin-left: 1rem !important;\\n }\\n\\n .ms-xl-4 {\\n margin-left: 1.5rem !important;\\n }\\n\\n .ms-xl-5 {\\n margin-left: 3rem !important;\\n }\\n\\n .ms-xl-auto {\\n margin-left: auto !important;\\n }\\n\\n .p-xl-0 {\\n padding: 0 !important;\\n }\\n\\n .p-xl-1 {\\n padding: 0.25rem !important;\\n }\\n\\n .p-xl-2 {\\n padding: 0.5rem !important;\\n }\\n\\n .p-xl-3 {\\n padding: 1rem !important;\\n }\\n\\n .p-xl-4 {\\n padding: 1.5rem !important;\\n }\\n\\n .p-xl-5 {\\n padding: 3rem !important;\\n }\\n\\n .px-xl-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n }\\n\\n .px-xl-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n }\\n\\n .px-xl-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n }\\n\\n .px-xl-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n }\\n\\n .px-xl-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n }\\n\\n .px-xl-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n }\\n\\n .py-xl-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n }\\n\\n .py-xl-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .py-xl-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .py-xl-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n }\\n\\n .py-xl-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .py-xl-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n }\\n\\n .pt-xl-0 {\\n padding-top: 0 !important;\\n }\\n\\n .pt-xl-1 {\\n padding-top: 0.25rem !important;\\n }\\n\\n .pt-xl-2 {\\n padding-top: 0.5rem !important;\\n }\\n\\n .pt-xl-3 {\\n padding-top: 1rem !important;\\n }\\n\\n .pt-xl-4 {\\n padding-top: 1.5rem !important;\\n }\\n\\n .pt-xl-5 {\\n padding-top: 3rem !important;\\n }\\n\\n .pe-xl-0 {\\n padding-right: 0 !important;\\n }\\n\\n .pe-xl-1 {\\n padding-right: 0.25rem !important;\\n }\\n\\n .pe-xl-2 {\\n padding-right: 0.5rem !important;\\n }\\n\\n .pe-xl-3 {\\n padding-right: 1rem !important;\\n }\\n\\n .pe-xl-4 {\\n padding-right: 1.5rem !important;\\n }\\n\\n .pe-xl-5 {\\n padding-right: 3rem !important;\\n }\\n\\n .pb-xl-0 {\\n padding-bottom: 0 !important;\\n }\\n\\n .pb-xl-1 {\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .pb-xl-2 {\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .pb-xl-3 {\\n padding-bottom: 1rem !important;\\n }\\n\\n .pb-xl-4 {\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .pb-xl-5 {\\n padding-bottom: 3rem !important;\\n }\\n\\n .ps-xl-0 {\\n padding-left: 0 !important;\\n }\\n\\n .ps-xl-1 {\\n padding-left: 0.25rem !important;\\n }\\n\\n .ps-xl-2 {\\n padding-left: 0.5rem !important;\\n }\\n\\n .ps-xl-3 {\\n padding-left: 1rem !important;\\n }\\n\\n .ps-xl-4 {\\n padding-left: 1.5rem !important;\\n }\\n\\n .ps-xl-5 {\\n padding-left: 3rem !important;\\n }\\n\\n .text-xl-start {\\n text-align: left !important;\\n }\\n\\n .text-xl-end {\\n text-align: right !important;\\n }\\n\\n .text-xl-center {\\n text-align: center !important;\\n }\\n}\\n@media (min-width: 1400px) {\\n .float-xxl-start {\\n float: left !important;\\n }\\n\\n .float-xxl-end {\\n float: right !important;\\n }\\n\\n .float-xxl-none {\\n float: none !important;\\n }\\n\\n .d-xxl-inline {\\n display: inline !important;\\n }\\n\\n .d-xxl-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-xxl-block {\\n display: block !important;\\n }\\n\\n .d-xxl-grid {\\n display: grid !important;\\n }\\n\\n .d-xxl-table {\\n display: table !important;\\n }\\n\\n .d-xxl-table-row {\\n display: table-row !important;\\n }\\n\\n .d-xxl-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-xxl-flex {\\n display: flex !important;\\n }\\n\\n .d-xxl-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-xxl-none {\\n display: none !important;\\n }\\n\\n .flex-xxl-fill {\\n flex: 1 1 auto !important;\\n }\\n\\n .flex-xxl-row {\\n flex-direction: row !important;\\n }\\n\\n .flex-xxl-column {\\n flex-direction: column !important;\\n }\\n\\n .flex-xxl-row-reverse {\\n flex-direction: row-reverse !important;\\n }\\n\\n .flex-xxl-column-reverse {\\n flex-direction: column-reverse !important;\\n }\\n\\n .flex-xxl-grow-0 {\\n flex-grow: 0 !important;\\n }\\n\\n .flex-xxl-grow-1 {\\n flex-grow: 1 !important;\\n }\\n\\n .flex-xxl-shrink-0 {\\n flex-shrink: 0 !important;\\n }\\n\\n .flex-xxl-shrink-1 {\\n flex-shrink: 1 !important;\\n }\\n\\n .flex-xxl-wrap {\\n flex-wrap: wrap !important;\\n }\\n\\n .flex-xxl-nowrap {\\n flex-wrap: nowrap !important;\\n }\\n\\n .flex-xxl-wrap-reverse {\\n flex-wrap: wrap-reverse !important;\\n }\\n\\n .gap-xxl-0 {\\n gap: 0 !important;\\n }\\n\\n .gap-xxl-1 {\\n gap: 0.25rem !important;\\n }\\n\\n .gap-xxl-2 {\\n gap: 0.5rem !important;\\n }\\n\\n .gap-xxl-3 {\\n gap: 1rem !important;\\n }\\n\\n .gap-xxl-4 {\\n gap: 1.5rem !important;\\n }\\n\\n .gap-xxl-5 {\\n gap: 3rem !important;\\n }\\n\\n .justify-content-xxl-start {\\n justify-content: flex-start !important;\\n }\\n\\n .justify-content-xxl-end {\\n justify-content: flex-end !important;\\n }\\n\\n .justify-content-xxl-center {\\n justify-content: center !important;\\n }\\n\\n .justify-content-xxl-between {\\n justify-content: space-between !important;\\n }\\n\\n .justify-content-xxl-around {\\n justify-content: space-around !important;\\n }\\n\\n .justify-content-xxl-evenly {\\n justify-content: space-evenly !important;\\n }\\n\\n .align-items-xxl-start {\\n align-items: flex-start !important;\\n }\\n\\n .align-items-xxl-end {\\n align-items: flex-end !important;\\n }\\n\\n .align-items-xxl-center {\\n align-items: center !important;\\n }\\n\\n .align-items-xxl-baseline {\\n align-items: baseline !important;\\n }\\n\\n .align-items-xxl-stretch {\\n align-items: stretch !important;\\n }\\n\\n .align-content-xxl-start {\\n align-content: flex-start !important;\\n }\\n\\n .align-content-xxl-end {\\n align-content: flex-end !important;\\n }\\n\\n .align-content-xxl-center {\\n align-content: center !important;\\n }\\n\\n .align-content-xxl-between {\\n align-content: space-between !important;\\n }\\n\\n .align-content-xxl-around {\\n align-content: space-around !important;\\n }\\n\\n .align-content-xxl-stretch {\\n align-content: stretch !important;\\n }\\n\\n .align-self-xxl-auto {\\n align-self: auto !important;\\n }\\n\\n .align-self-xxl-start {\\n align-self: flex-start !important;\\n }\\n\\n .align-self-xxl-end {\\n align-self: flex-end !important;\\n }\\n\\n .align-self-xxl-center {\\n align-self: center !important;\\n }\\n\\n .align-self-xxl-baseline {\\n align-self: baseline !important;\\n }\\n\\n .align-self-xxl-stretch {\\n align-self: stretch !important;\\n }\\n\\n .order-xxl-first {\\n order: -1 !important;\\n }\\n\\n .order-xxl-0 {\\n order: 0 !important;\\n }\\n\\n .order-xxl-1 {\\n order: 1 !important;\\n }\\n\\n .order-xxl-2 {\\n order: 2 !important;\\n }\\n\\n .order-xxl-3 {\\n order: 3 !important;\\n }\\n\\n .order-xxl-4 {\\n order: 4 !important;\\n }\\n\\n .order-xxl-5 {\\n order: 5 !important;\\n }\\n\\n .order-xxl-last {\\n order: 6 !important;\\n }\\n\\n .m-xxl-0 {\\n margin: 0 !important;\\n }\\n\\n .m-xxl-1 {\\n margin: 0.25rem !important;\\n }\\n\\n .m-xxl-2 {\\n margin: 0.5rem !important;\\n }\\n\\n .m-xxl-3 {\\n margin: 1rem !important;\\n }\\n\\n .m-xxl-4 {\\n margin: 1.5rem !important;\\n }\\n\\n .m-xxl-5 {\\n margin: 3rem !important;\\n }\\n\\n .m-xxl-auto {\\n margin: auto !important;\\n }\\n\\n .mx-xxl-0 {\\n margin-right: 0 !important;\\n margin-left: 0 !important;\\n }\\n\\n .mx-xxl-1 {\\n margin-right: 0.25rem !important;\\n margin-left: 0.25rem !important;\\n }\\n\\n .mx-xxl-2 {\\n margin-right: 0.5rem !important;\\n margin-left: 0.5rem !important;\\n }\\n\\n .mx-xxl-3 {\\n margin-right: 1rem !important;\\n margin-left: 1rem !important;\\n }\\n\\n .mx-xxl-4 {\\n margin-right: 1.5rem !important;\\n margin-left: 1.5rem !important;\\n }\\n\\n .mx-xxl-5 {\\n margin-right: 3rem !important;\\n margin-left: 3rem !important;\\n }\\n\\n .mx-xxl-auto {\\n margin-right: auto !important;\\n margin-left: auto !important;\\n }\\n\\n .my-xxl-0 {\\n margin-top: 0 !important;\\n margin-bottom: 0 !important;\\n }\\n\\n .my-xxl-1 {\\n margin-top: 0.25rem !important;\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .my-xxl-2 {\\n margin-top: 0.5rem !important;\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .my-xxl-3 {\\n margin-top: 1rem !important;\\n margin-bottom: 1rem !important;\\n }\\n\\n .my-xxl-4 {\\n margin-top: 1.5rem !important;\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .my-xxl-5 {\\n margin-top: 3rem !important;\\n margin-bottom: 3rem !important;\\n }\\n\\n .my-xxl-auto {\\n margin-top: auto !important;\\n margin-bottom: auto !important;\\n }\\n\\n .mt-xxl-0 {\\n margin-top: 0 !important;\\n }\\n\\n .mt-xxl-1 {\\n margin-top: 0.25rem !important;\\n }\\n\\n .mt-xxl-2 {\\n margin-top: 0.5rem !important;\\n }\\n\\n .mt-xxl-3 {\\n margin-top: 1rem !important;\\n }\\n\\n .mt-xxl-4 {\\n margin-top: 1.5rem !important;\\n }\\n\\n .mt-xxl-5 {\\n margin-top: 3rem !important;\\n }\\n\\n .mt-xxl-auto {\\n margin-top: auto !important;\\n }\\n\\n .me-xxl-0 {\\n margin-right: 0 !important;\\n }\\n\\n .me-xxl-1 {\\n margin-right: 0.25rem !important;\\n }\\n\\n .me-xxl-2 {\\n margin-right: 0.5rem !important;\\n }\\n\\n .me-xxl-3 {\\n margin-right: 1rem !important;\\n }\\n\\n .me-xxl-4 {\\n margin-right: 1.5rem !important;\\n }\\n\\n .me-xxl-5 {\\n margin-right: 3rem !important;\\n }\\n\\n .me-xxl-auto {\\n margin-right: auto !important;\\n }\\n\\n .mb-xxl-0 {\\n margin-bottom: 0 !important;\\n }\\n\\n .mb-xxl-1 {\\n margin-bottom: 0.25rem !important;\\n }\\n\\n .mb-xxl-2 {\\n margin-bottom: 0.5rem !important;\\n }\\n\\n .mb-xxl-3 {\\n margin-bottom: 1rem !important;\\n }\\n\\n .mb-xxl-4 {\\n margin-bottom: 1.5rem !important;\\n }\\n\\n .mb-xxl-5 {\\n margin-bottom: 3rem !important;\\n }\\n\\n .mb-xxl-auto {\\n margin-bottom: auto !important;\\n }\\n\\n .ms-xxl-0 {\\n margin-left: 0 !important;\\n }\\n\\n .ms-xxl-1 {\\n margin-left: 0.25rem !important;\\n }\\n\\n .ms-xxl-2 {\\n margin-left: 0.5rem !important;\\n }\\n\\n .ms-xxl-3 {\\n margin-left: 1rem !important;\\n }\\n\\n .ms-xxl-4 {\\n margin-left: 1.5rem !important;\\n }\\n\\n .ms-xxl-5 {\\n margin-left: 3rem !important;\\n }\\n\\n .ms-xxl-auto {\\n margin-left: auto !important;\\n }\\n\\n .p-xxl-0 {\\n padding: 0 !important;\\n }\\n\\n .p-xxl-1 {\\n padding: 0.25rem !important;\\n }\\n\\n .p-xxl-2 {\\n padding: 0.5rem !important;\\n }\\n\\n .p-xxl-3 {\\n padding: 1rem !important;\\n }\\n\\n .p-xxl-4 {\\n padding: 1.5rem !important;\\n }\\n\\n .p-xxl-5 {\\n padding: 3rem !important;\\n }\\n\\n .px-xxl-0 {\\n padding-right: 0 !important;\\n padding-left: 0 !important;\\n }\\n\\n .px-xxl-1 {\\n padding-right: 0.25rem !important;\\n padding-left: 0.25rem !important;\\n }\\n\\n .px-xxl-2 {\\n padding-right: 0.5rem !important;\\n padding-left: 0.5rem !important;\\n }\\n\\n .px-xxl-3 {\\n padding-right: 1rem !important;\\n padding-left: 1rem !important;\\n }\\n\\n .px-xxl-4 {\\n padding-right: 1.5rem !important;\\n padding-left: 1.5rem !important;\\n }\\n\\n .px-xxl-5 {\\n padding-right: 3rem !important;\\n padding-left: 3rem !important;\\n }\\n\\n .py-xxl-0 {\\n padding-top: 0 !important;\\n padding-bottom: 0 !important;\\n }\\n\\n .py-xxl-1 {\\n padding-top: 0.25rem !important;\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .py-xxl-2 {\\n padding-top: 0.5rem !important;\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .py-xxl-3 {\\n padding-top: 1rem !important;\\n padding-bottom: 1rem !important;\\n }\\n\\n .py-xxl-4 {\\n padding-top: 1.5rem !important;\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .py-xxl-5 {\\n padding-top: 3rem !important;\\n padding-bottom: 3rem !important;\\n }\\n\\n .pt-xxl-0 {\\n padding-top: 0 !important;\\n }\\n\\n .pt-xxl-1 {\\n padding-top: 0.25rem !important;\\n }\\n\\n .pt-xxl-2 {\\n padding-top: 0.5rem !important;\\n }\\n\\n .pt-xxl-3 {\\n padding-top: 1rem !important;\\n }\\n\\n .pt-xxl-4 {\\n padding-top: 1.5rem !important;\\n }\\n\\n .pt-xxl-5 {\\n padding-top: 3rem !important;\\n }\\n\\n .pe-xxl-0 {\\n padding-right: 0 !important;\\n }\\n\\n .pe-xxl-1 {\\n padding-right: 0.25rem !important;\\n }\\n\\n .pe-xxl-2 {\\n padding-right: 0.5rem !important;\\n }\\n\\n .pe-xxl-3 {\\n padding-right: 1rem !important;\\n }\\n\\n .pe-xxl-4 {\\n padding-right: 1.5rem !important;\\n }\\n\\n .pe-xxl-5 {\\n padding-right: 3rem !important;\\n }\\n\\n .pb-xxl-0 {\\n padding-bottom: 0 !important;\\n }\\n\\n .pb-xxl-1 {\\n padding-bottom: 0.25rem !important;\\n }\\n\\n .pb-xxl-2 {\\n padding-bottom: 0.5rem !important;\\n }\\n\\n .pb-xxl-3 {\\n padding-bottom: 1rem !important;\\n }\\n\\n .pb-xxl-4 {\\n padding-bottom: 1.5rem !important;\\n }\\n\\n .pb-xxl-5 {\\n padding-bottom: 3rem !important;\\n }\\n\\n .ps-xxl-0 {\\n padding-left: 0 !important;\\n }\\n\\n .ps-xxl-1 {\\n padding-left: 0.25rem !important;\\n }\\n\\n .ps-xxl-2 {\\n padding-left: 0.5rem !important;\\n }\\n\\n .ps-xxl-3 {\\n padding-left: 1rem !important;\\n }\\n\\n .ps-xxl-4 {\\n padding-left: 1.5rem !important;\\n }\\n\\n .ps-xxl-5 {\\n padding-left: 3rem !important;\\n }\\n\\n .text-xxl-start {\\n text-align: left !important;\\n }\\n\\n .text-xxl-end {\\n text-align: right !important;\\n }\\n\\n .text-xxl-center {\\n text-align: center !important;\\n }\\n}\\n@media (min-width: 1200px) {\\n .fs-1 {\\n font-size: 2.5rem !important;\\n }\\n\\n .fs-2 {\\n font-size: 2rem !important;\\n }\\n\\n .fs-3 {\\n font-size: 1.75rem !important;\\n }\\n\\n .fs-4 {\\n font-size: 1.5rem !important;\\n }\\n}\\n@media print {\\n .d-print-inline {\\n display: inline !important;\\n }\\n\\n .d-print-inline-block {\\n display: inline-block !important;\\n }\\n\\n .d-print-block {\\n display: block !important;\\n }\\n\\n .d-print-grid {\\n display: grid !important;\\n }\\n\\n .d-print-table {\\n display: table !important;\\n }\\n\\n .d-print-table-row {\\n display: table-row !important;\\n }\\n\\n .d-print-table-cell {\\n display: table-cell !important;\\n }\\n\\n .d-print-flex {\\n display: flex !important;\\n }\\n\\n .d-print-inline-flex {\\n display: inline-flex !important;\\n }\\n\\n .d-print-none {\\n display: none !important;\\n }\\n}\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/bootstrap/dist/css/bootstrap.css?./node_modules/css-loader/dist/cjs.js");
|
|
1229
|
-
|
|
1230
|
-
/***/ }),
|
|
1231
|
-
|
|
1232
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./src/fontawesome-free-6.2.0-web/css/all.css":
|
|
1233
|
-
/*!******************************************************************************************!*\
|
|
1234
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./src/fontawesome-free-6.2.0-web/css/all.css ***!
|
|
1235
|
-
\******************************************************************************************/
|
|
1236
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1237
|
-
|
|
1238
|
-
"use strict";
|
|
1239
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/getUrl.js */ \"./node_modules/css-loader/dist/runtime/getUrl.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _webfonts_fa_brands_400_woff2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../webfonts/fa-brands-400.woff2 */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.woff2\");\n/* harmony import */ var _webfonts_fa_brands_400_ttf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../webfonts/fa-brands-400.ttf */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.ttf\");\n/* harmony import */ var _webfonts_fa_regular_400_woff2__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../webfonts/fa-regular-400.woff2 */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.woff2\");\n/* harmony import */ var _webfonts_fa_regular_400_ttf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../webfonts/fa-regular-400.ttf */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.ttf\");\n/* harmony import */ var _webfonts_fa_solid_900_woff2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../webfonts/fa-solid-900.woff2 */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.woff2\");\n/* harmony import */ var _webfonts_fa_solid_900_ttf__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../webfonts/fa-solid-900.ttf */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.ttf\");\n/* harmony import */ var _webfonts_fa_v4compatibility_woff2__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../webfonts/fa-v4compatibility.woff2 */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.woff2\");\n/* harmony import */ var _webfonts_fa_v4compatibility_ttf__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../webfonts/fa-v4compatibility.ttf */ \"./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.ttf\");\n// Imports\n\n\n\n\n\n\n\n\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_brands_400_woff2__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_brands_400_ttf__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_regular_400_woff2__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_regular_400_ttf__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_solid_900_woff2__WEBPACK_IMPORTED_MODULE_6__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_solid_900_ttf__WEBPACK_IMPORTED_MODULE_7__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_v4compatibility_woff2__WEBPACK_IMPORTED_MODULE_8__[\"default\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_1___default()(_webfonts_fa_v4compatibility_ttf__WEBPACK_IMPORTED_MODULE_9__[\"default\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*!\\n * Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n * Copyright 2022 Fonticons, Inc.\\n */\\n.fa {\\n font-family: var(--fa-style-family, \\\"Font Awesome 6 Free\\\");\\n font-weight: var(--fa-style, 900); }\\n\\n.fa,\\n.fa-classic,\\n.fa-sharp,\\n.fas,\\n.fa-solid,\\n.far,\\n.fa-regular,\\n.fab,\\n.fa-brands {\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n display: var(--fa-display, inline-block);\\n font-style: normal;\\n font-variant: normal;\\n line-height: 1;\\n text-rendering: auto; }\\n\\n.fas,\\n.fa-classic,\\n.fa-solid,\\n.far,\\n.fa-regular {\\n font-family: 'Font Awesome 6 Free'; }\\n\\n.fab,\\n.fa-brands {\\n font-family: 'Font Awesome 6 Brands'; }\\n\\n.fa-1x {\\n font-size: 1em; }\\n\\n.fa-2x {\\n font-size: 2em; }\\n\\n.fa-3x {\\n font-size: 3em; }\\n\\n.fa-4x {\\n font-size: 4em; }\\n\\n.fa-5x {\\n font-size: 5em; }\\n\\n.fa-6x {\\n font-size: 6em; }\\n\\n.fa-7x {\\n font-size: 7em; }\\n\\n.fa-8x {\\n font-size: 8em; }\\n\\n.fa-9x {\\n font-size: 9em; }\\n\\n.fa-10x {\\n font-size: 10em; }\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em; }\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.08333em;\\n vertical-align: 0.125em; }\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.07143em;\\n vertical-align: 0.05357em; }\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em; }\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.04167em;\\n vertical-align: -0.125em; }\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em; }\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em; }\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0; }\\n .fa-ul > li {\\n position: relative; }\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit; }\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em); }\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em); }\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out); }\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out); }\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear); }\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear); }\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse; }\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8)); }\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n .fa-bounce,\\n .fa-fade,\\n .fa-beat-fade,\\n .fa-flip,\\n .fa-pulse,\\n .fa-shake,\\n .fa-spin,\\n .fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s; } }\\n\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25)); } }\\n\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25)); } }\\n\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); } }\\n\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0); } }\\n\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4); } }\\n\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4); } }\\n\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125)); } }\\n\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1); }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125)); } }\\n\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }\\n\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }\\n\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg); }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg); }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg); }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg); }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg); }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg); }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg); }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg); }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); } }\\n\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg); }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg); }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg); }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg); }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg); }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg); }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg); }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg); }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); } }\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg); }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg); } }\\n\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg); }\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg); }\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg); }\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1); }\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1); }\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1); }\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none)); }\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n line-height: 2em;\\n position: relative;\\n vertical-align: middle;\\n width: 2.5em; }\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n left: 0;\\n position: absolute;\\n text-align: center;\\n width: 100%;\\n z-index: var(--fa-stack-z-index, auto); }\\n\\n.fa-stack-1x {\\n line-height: inherit; }\\n\\n.fa-stack-2x {\\n font-size: 2em; }\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff); }\\n\\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\\nreaders do not read off random characters that represent icons */\\n.fa-0::before {\\n content: \\\"\\\\30\\\"; }\\n\\n.fa-1::before {\\n content: \\\"\\\\31\\\"; }\\n\\n.fa-2::before {\\n content: \\\"\\\\32\\\"; }\\n\\n.fa-3::before {\\n content: \\\"\\\\33\\\"; }\\n\\n.fa-4::before {\\n content: \\\"\\\\34\\\"; }\\n\\n.fa-5::before {\\n content: \\\"\\\\35\\\"; }\\n\\n.fa-6::before {\\n content: \\\"\\\\36\\\"; }\\n\\n.fa-7::before {\\n content: \\\"\\\\37\\\"; }\\n\\n.fa-8::before {\\n content: \\\"\\\\38\\\"; }\\n\\n.fa-9::before {\\n content: \\\"\\\\39\\\"; }\\n\\n.fa-fill-drip::before {\\n content: \\\"\\\\f576\\\"; }\\n\\n.fa-arrows-to-circle::before {\\n content: \\\"\\\\e4bd\\\"; }\\n\\n.fa-circle-chevron-right::before {\\n content: \\\"\\\\f138\\\"; }\\n\\n.fa-chevron-circle-right::before {\\n content: \\\"\\\\f138\\\"; }\\n\\n.fa-at::before {\\n content: \\\"\\\\40\\\"; }\\n\\n.fa-trash-can::before {\\n content: \\\"\\\\f2ed\\\"; }\\n\\n.fa-trash-alt::before {\\n content: \\\"\\\\f2ed\\\"; }\\n\\n.fa-text-height::before {\\n content: \\\"\\\\f034\\\"; }\\n\\n.fa-user-xmark::before {\\n content: \\\"\\\\f235\\\"; }\\n\\n.fa-user-times::before {\\n content: \\\"\\\\f235\\\"; }\\n\\n.fa-stethoscope::before {\\n content: \\\"\\\\f0f1\\\"; }\\n\\n.fa-message::before {\\n content: \\\"\\\\f27a\\\"; }\\n\\n.fa-comment-alt::before {\\n content: \\\"\\\\f27a\\\"; }\\n\\n.fa-info::before {\\n content: \\\"\\\\f129\\\"; }\\n\\n.fa-down-left-and-up-right-to-center::before {\\n content: \\\"\\\\f422\\\"; }\\n\\n.fa-compress-alt::before {\\n content: \\\"\\\\f422\\\"; }\\n\\n.fa-explosion::before {\\n content: \\\"\\\\e4e9\\\"; }\\n\\n.fa-file-lines::before {\\n content: \\\"\\\\f15c\\\"; }\\n\\n.fa-file-alt::before {\\n content: \\\"\\\\f15c\\\"; }\\n\\n.fa-file-text::before {\\n content: \\\"\\\\f15c\\\"; }\\n\\n.fa-wave-square::before {\\n content: \\\"\\\\f83e\\\"; }\\n\\n.fa-ring::before {\\n content: \\\"\\\\f70b\\\"; }\\n\\n.fa-building-un::before {\\n content: \\\"\\\\e4d9\\\"; }\\n\\n.fa-dice-three::before {\\n content: \\\"\\\\f527\\\"; }\\n\\n.fa-calendar-days::before {\\n content: \\\"\\\\f073\\\"; }\\n\\n.fa-calendar-alt::before {\\n content: \\\"\\\\f073\\\"; }\\n\\n.fa-anchor-circle-check::before {\\n content: \\\"\\\\e4aa\\\"; }\\n\\n.fa-building-circle-arrow-right::before {\\n content: \\\"\\\\e4d1\\\"; }\\n\\n.fa-volleyball::before {\\n content: \\\"\\\\f45f\\\"; }\\n\\n.fa-volleyball-ball::before {\\n content: \\\"\\\\f45f\\\"; }\\n\\n.fa-arrows-up-to-line::before {\\n content: \\\"\\\\e4c2\\\"; }\\n\\n.fa-sort-down::before {\\n content: \\\"\\\\f0dd\\\"; }\\n\\n.fa-sort-desc::before {\\n content: \\\"\\\\f0dd\\\"; }\\n\\n.fa-circle-minus::before {\\n content: \\\"\\\\f056\\\"; }\\n\\n.fa-minus-circle::before {\\n content: \\\"\\\\f056\\\"; }\\n\\n.fa-door-open::before {\\n content: \\\"\\\\f52b\\\"; }\\n\\n.fa-right-from-bracket::before {\\n content: \\\"\\\\f2f5\\\"; }\\n\\n.fa-sign-out-alt::before {\\n content: \\\"\\\\f2f5\\\"; }\\n\\n.fa-atom::before {\\n content: \\\"\\\\f5d2\\\"; }\\n\\n.fa-soap::before {\\n content: \\\"\\\\e06e\\\"; }\\n\\n.fa-icons::before {\\n content: \\\"\\\\f86d\\\"; }\\n\\n.fa-heart-music-camera-bolt::before {\\n content: \\\"\\\\f86d\\\"; }\\n\\n.fa-microphone-lines-slash::before {\\n content: \\\"\\\\f539\\\"; }\\n\\n.fa-microphone-alt-slash::before {\\n content: \\\"\\\\f539\\\"; }\\n\\n.fa-bridge-circle-check::before {\\n content: \\\"\\\\e4c9\\\"; }\\n\\n.fa-pump-medical::before {\\n content: \\\"\\\\e06a\\\"; }\\n\\n.fa-fingerprint::before {\\n content: \\\"\\\\f577\\\"; }\\n\\n.fa-hand-point-right::before {\\n content: \\\"\\\\f0a4\\\"; }\\n\\n.fa-magnifying-glass-location::before {\\n content: \\\"\\\\f689\\\"; }\\n\\n.fa-search-location::before {\\n content: \\\"\\\\f689\\\"; }\\n\\n.fa-forward-step::before {\\n content: \\\"\\\\f051\\\"; }\\n\\n.fa-step-forward::before {\\n content: \\\"\\\\f051\\\"; }\\n\\n.fa-face-smile-beam::before {\\n content: \\\"\\\\f5b8\\\"; }\\n\\n.fa-smile-beam::before {\\n content: \\\"\\\\f5b8\\\"; }\\n\\n.fa-flag-checkered::before {\\n content: \\\"\\\\f11e\\\"; }\\n\\n.fa-football::before {\\n content: \\\"\\\\f44e\\\"; }\\n\\n.fa-football-ball::before {\\n content: \\\"\\\\f44e\\\"; }\\n\\n.fa-school-circle-exclamation::before {\\n content: \\\"\\\\e56c\\\"; }\\n\\n.fa-crop::before {\\n content: \\\"\\\\f125\\\"; }\\n\\n.fa-angles-down::before {\\n content: \\\"\\\\f103\\\"; }\\n\\n.fa-angle-double-down::before {\\n content: \\\"\\\\f103\\\"; }\\n\\n.fa-users-rectangle::before {\\n content: \\\"\\\\e594\\\"; }\\n\\n.fa-people-roof::before {\\n content: \\\"\\\\e537\\\"; }\\n\\n.fa-people-line::before {\\n content: \\\"\\\\e534\\\"; }\\n\\n.fa-beer-mug-empty::before {\\n content: \\\"\\\\f0fc\\\"; }\\n\\n.fa-beer::before {\\n content: \\\"\\\\f0fc\\\"; }\\n\\n.fa-diagram-predecessor::before {\\n content: \\\"\\\\e477\\\"; }\\n\\n.fa-arrow-up-long::before {\\n content: \\\"\\\\f176\\\"; }\\n\\n.fa-long-arrow-up::before {\\n content: \\\"\\\\f176\\\"; }\\n\\n.fa-fire-flame-simple::before {\\n content: \\\"\\\\f46a\\\"; }\\n\\n.fa-burn::before {\\n content: \\\"\\\\f46a\\\"; }\\n\\n.fa-person::before {\\n content: \\\"\\\\f183\\\"; }\\n\\n.fa-male::before {\\n content: \\\"\\\\f183\\\"; }\\n\\n.fa-laptop::before {\\n content: \\\"\\\\f109\\\"; }\\n\\n.fa-file-csv::before {\\n content: \\\"\\\\f6dd\\\"; }\\n\\n.fa-menorah::before {\\n content: \\\"\\\\f676\\\"; }\\n\\n.fa-truck-plane::before {\\n content: \\\"\\\\e58f\\\"; }\\n\\n.fa-record-vinyl::before {\\n content: \\\"\\\\f8d9\\\"; }\\n\\n.fa-face-grin-stars::before {\\n content: \\\"\\\\f587\\\"; }\\n\\n.fa-grin-stars::before {\\n content: \\\"\\\\f587\\\"; }\\n\\n.fa-bong::before {\\n content: \\\"\\\\f55c\\\"; }\\n\\n.fa-spaghetti-monster-flying::before {\\n content: \\\"\\\\f67b\\\"; }\\n\\n.fa-pastafarianism::before {\\n content: \\\"\\\\f67b\\\"; }\\n\\n.fa-arrow-down-up-across-line::before {\\n content: \\\"\\\\e4af\\\"; }\\n\\n.fa-spoon::before {\\n content: \\\"\\\\f2e5\\\"; }\\n\\n.fa-utensil-spoon::before {\\n content: \\\"\\\\f2e5\\\"; }\\n\\n.fa-jar-wheat::before {\\n content: \\\"\\\\e517\\\"; }\\n\\n.fa-envelopes-bulk::before {\\n content: \\\"\\\\f674\\\"; }\\n\\n.fa-mail-bulk::before {\\n content: \\\"\\\\f674\\\"; }\\n\\n.fa-file-circle-exclamation::before {\\n content: \\\"\\\\e4eb\\\"; }\\n\\n.fa-circle-h::before {\\n content: \\\"\\\\f47e\\\"; }\\n\\n.fa-hospital-symbol::before {\\n content: \\\"\\\\f47e\\\"; }\\n\\n.fa-pager::before {\\n content: \\\"\\\\f815\\\"; }\\n\\n.fa-address-book::before {\\n content: \\\"\\\\f2b9\\\"; }\\n\\n.fa-contact-book::before {\\n content: \\\"\\\\f2b9\\\"; }\\n\\n.fa-strikethrough::before {\\n content: \\\"\\\\f0cc\\\"; }\\n\\n.fa-k::before {\\n content: \\\"\\\\4b\\\"; }\\n\\n.fa-landmark-flag::before {\\n content: \\\"\\\\e51c\\\"; }\\n\\n.fa-pencil::before {\\n content: \\\"\\\\f303\\\"; }\\n\\n.fa-pencil-alt::before {\\n content: \\\"\\\\f303\\\"; }\\n\\n.fa-backward::before {\\n content: \\\"\\\\f04a\\\"; }\\n\\n.fa-caret-right::before {\\n content: \\\"\\\\f0da\\\"; }\\n\\n.fa-comments::before {\\n content: \\\"\\\\f086\\\"; }\\n\\n.fa-paste::before {\\n content: \\\"\\\\f0ea\\\"; }\\n\\n.fa-file-clipboard::before {\\n content: \\\"\\\\f0ea\\\"; }\\n\\n.fa-code-pull-request::before {\\n content: \\\"\\\\e13c\\\"; }\\n\\n.fa-clipboard-list::before {\\n content: \\\"\\\\f46d\\\"; }\\n\\n.fa-truck-ramp-box::before {\\n content: \\\"\\\\f4de\\\"; }\\n\\n.fa-truck-loading::before {\\n content: \\\"\\\\f4de\\\"; }\\n\\n.fa-user-check::before {\\n content: \\\"\\\\f4fc\\\"; }\\n\\n.fa-vial-virus::before {\\n content: \\\"\\\\e597\\\"; }\\n\\n.fa-sheet-plastic::before {\\n content: \\\"\\\\e571\\\"; }\\n\\n.fa-blog::before {\\n content: \\\"\\\\f781\\\"; }\\n\\n.fa-user-ninja::before {\\n content: \\\"\\\\f504\\\"; }\\n\\n.fa-person-arrow-up-from-line::before {\\n content: \\\"\\\\e539\\\"; }\\n\\n.fa-scroll-torah::before {\\n content: \\\"\\\\f6a0\\\"; }\\n\\n.fa-torah::before {\\n content: \\\"\\\\f6a0\\\"; }\\n\\n.fa-broom-ball::before {\\n content: \\\"\\\\f458\\\"; }\\n\\n.fa-quidditch::before {\\n content: \\\"\\\\f458\\\"; }\\n\\n.fa-quidditch-broom-ball::before {\\n content: \\\"\\\\f458\\\"; }\\n\\n.fa-toggle-off::before {\\n content: \\\"\\\\f204\\\"; }\\n\\n.fa-box-archive::before {\\n content: \\\"\\\\f187\\\"; }\\n\\n.fa-archive::before {\\n content: \\\"\\\\f187\\\"; }\\n\\n.fa-person-drowning::before {\\n content: \\\"\\\\e545\\\"; }\\n\\n.fa-arrow-down-9-1::before {\\n content: \\\"\\\\f886\\\"; }\\n\\n.fa-sort-numeric-desc::before {\\n content: \\\"\\\\f886\\\"; }\\n\\n.fa-sort-numeric-down-alt::before {\\n content: \\\"\\\\f886\\\"; }\\n\\n.fa-face-grin-tongue-squint::before {\\n content: \\\"\\\\f58a\\\"; }\\n\\n.fa-grin-tongue-squint::before {\\n content: \\\"\\\\f58a\\\"; }\\n\\n.fa-spray-can::before {\\n content: \\\"\\\\f5bd\\\"; }\\n\\n.fa-truck-monster::before {\\n content: \\\"\\\\f63b\\\"; }\\n\\n.fa-w::before {\\n content: \\\"\\\\57\\\"; }\\n\\n.fa-earth-africa::before {\\n content: \\\"\\\\f57c\\\"; }\\n\\n.fa-globe-africa::before {\\n content: \\\"\\\\f57c\\\"; }\\n\\n.fa-rainbow::before {\\n content: \\\"\\\\f75b\\\"; }\\n\\n.fa-circle-notch::before {\\n content: \\\"\\\\f1ce\\\"; }\\n\\n.fa-tablet-screen-button::before {\\n content: \\\"\\\\f3fa\\\"; }\\n\\n.fa-tablet-alt::before {\\n content: \\\"\\\\f3fa\\\"; }\\n\\n.fa-paw::before {\\n content: \\\"\\\\f1b0\\\"; }\\n\\n.fa-cloud::before {\\n content: \\\"\\\\f0c2\\\"; }\\n\\n.fa-trowel-bricks::before {\\n content: \\\"\\\\e58a\\\"; }\\n\\n.fa-face-flushed::before {\\n content: \\\"\\\\f579\\\"; }\\n\\n.fa-flushed::before {\\n content: \\\"\\\\f579\\\"; }\\n\\n.fa-hospital-user::before {\\n content: \\\"\\\\f80d\\\"; }\\n\\n.fa-tent-arrow-left-right::before {\\n content: \\\"\\\\e57f\\\"; }\\n\\n.fa-gavel::before {\\n content: \\\"\\\\f0e3\\\"; }\\n\\n.fa-legal::before {\\n content: \\\"\\\\f0e3\\\"; }\\n\\n.fa-binoculars::before {\\n content: \\\"\\\\f1e5\\\"; }\\n\\n.fa-microphone-slash::before {\\n content: \\\"\\\\f131\\\"; }\\n\\n.fa-box-tissue::before {\\n content: \\\"\\\\e05b\\\"; }\\n\\n.fa-motorcycle::before {\\n content: \\\"\\\\f21c\\\"; }\\n\\n.fa-bell-concierge::before {\\n content: \\\"\\\\f562\\\"; }\\n\\n.fa-concierge-bell::before {\\n content: \\\"\\\\f562\\\"; }\\n\\n.fa-pen-ruler::before {\\n content: \\\"\\\\f5ae\\\"; }\\n\\n.fa-pencil-ruler::before {\\n content: \\\"\\\\f5ae\\\"; }\\n\\n.fa-people-arrows::before {\\n content: \\\"\\\\e068\\\"; }\\n\\n.fa-people-arrows-left-right::before {\\n content: \\\"\\\\e068\\\"; }\\n\\n.fa-mars-and-venus-burst::before {\\n content: \\\"\\\\e523\\\"; }\\n\\n.fa-square-caret-right::before {\\n content: \\\"\\\\f152\\\"; }\\n\\n.fa-caret-square-right::before {\\n content: \\\"\\\\f152\\\"; }\\n\\n.fa-scissors::before {\\n content: \\\"\\\\f0c4\\\"; }\\n\\n.fa-cut::before {\\n content: \\\"\\\\f0c4\\\"; }\\n\\n.fa-sun-plant-wilt::before {\\n content: \\\"\\\\e57a\\\"; }\\n\\n.fa-toilets-portable::before {\\n content: \\\"\\\\e584\\\"; }\\n\\n.fa-hockey-puck::before {\\n content: \\\"\\\\f453\\\"; }\\n\\n.fa-table::before {\\n content: \\\"\\\\f0ce\\\"; }\\n\\n.fa-magnifying-glass-arrow-right::before {\\n content: \\\"\\\\e521\\\"; }\\n\\n.fa-tachograph-digital::before {\\n content: \\\"\\\\f566\\\"; }\\n\\n.fa-digital-tachograph::before {\\n content: \\\"\\\\f566\\\"; }\\n\\n.fa-users-slash::before {\\n content: \\\"\\\\e073\\\"; }\\n\\n.fa-clover::before {\\n content: \\\"\\\\e139\\\"; }\\n\\n.fa-reply::before {\\n content: \\\"\\\\f3e5\\\"; }\\n\\n.fa-mail-reply::before {\\n content: \\\"\\\\f3e5\\\"; }\\n\\n.fa-star-and-crescent::before {\\n content: \\\"\\\\f699\\\"; }\\n\\n.fa-house-fire::before {\\n content: \\\"\\\\e50c\\\"; }\\n\\n.fa-square-minus::before {\\n content: \\\"\\\\f146\\\"; }\\n\\n.fa-minus-square::before {\\n content: \\\"\\\\f146\\\"; }\\n\\n.fa-helicopter::before {\\n content: \\\"\\\\f533\\\"; }\\n\\n.fa-compass::before {\\n content: \\\"\\\\f14e\\\"; }\\n\\n.fa-square-caret-down::before {\\n content: \\\"\\\\f150\\\"; }\\n\\n.fa-caret-square-down::before {\\n content: \\\"\\\\f150\\\"; }\\n\\n.fa-file-circle-question::before {\\n content: \\\"\\\\e4ef\\\"; }\\n\\n.fa-laptop-code::before {\\n content: \\\"\\\\f5fc\\\"; }\\n\\n.fa-swatchbook::before {\\n content: \\\"\\\\f5c3\\\"; }\\n\\n.fa-prescription-bottle::before {\\n content: \\\"\\\\f485\\\"; }\\n\\n.fa-bars::before {\\n content: \\\"\\\\f0c9\\\"; }\\n\\n.fa-navicon::before {\\n content: \\\"\\\\f0c9\\\"; }\\n\\n.fa-people-group::before {\\n content: \\\"\\\\e533\\\"; }\\n\\n.fa-hourglass-end::before {\\n content: \\\"\\\\f253\\\"; }\\n\\n.fa-hourglass-3::before {\\n content: \\\"\\\\f253\\\"; }\\n\\n.fa-heart-crack::before {\\n content: \\\"\\\\f7a9\\\"; }\\n\\n.fa-heart-broken::before {\\n content: \\\"\\\\f7a9\\\"; }\\n\\n.fa-square-up-right::before {\\n content: \\\"\\\\f360\\\"; }\\n\\n.fa-external-link-square-alt::before {\\n content: \\\"\\\\f360\\\"; }\\n\\n.fa-face-kiss-beam::before {\\n content: \\\"\\\\f597\\\"; }\\n\\n.fa-kiss-beam::before {\\n content: \\\"\\\\f597\\\"; }\\n\\n.fa-film::before {\\n content: \\\"\\\\f008\\\"; }\\n\\n.fa-ruler-horizontal::before {\\n content: \\\"\\\\f547\\\"; }\\n\\n.fa-people-robbery::before {\\n content: \\\"\\\\e536\\\"; }\\n\\n.fa-lightbulb::before {\\n content: \\\"\\\\f0eb\\\"; }\\n\\n.fa-caret-left::before {\\n content: \\\"\\\\f0d9\\\"; }\\n\\n.fa-circle-exclamation::before {\\n content: \\\"\\\\f06a\\\"; }\\n\\n.fa-exclamation-circle::before {\\n content: \\\"\\\\f06a\\\"; }\\n\\n.fa-school-circle-xmark::before {\\n content: \\\"\\\\e56d\\\"; }\\n\\n.fa-arrow-right-from-bracket::before {\\n content: \\\"\\\\f08b\\\"; }\\n\\n.fa-sign-out::before {\\n content: \\\"\\\\f08b\\\"; }\\n\\n.fa-circle-chevron-down::before {\\n content: \\\"\\\\f13a\\\"; }\\n\\n.fa-chevron-circle-down::before {\\n content: \\\"\\\\f13a\\\"; }\\n\\n.fa-unlock-keyhole::before {\\n content: \\\"\\\\f13e\\\"; }\\n\\n.fa-unlock-alt::before {\\n content: \\\"\\\\f13e\\\"; }\\n\\n.fa-cloud-showers-heavy::before {\\n content: \\\"\\\\f740\\\"; }\\n\\n.fa-headphones-simple::before {\\n content: \\\"\\\\f58f\\\"; }\\n\\n.fa-headphones-alt::before {\\n content: \\\"\\\\f58f\\\"; }\\n\\n.fa-sitemap::before {\\n content: \\\"\\\\f0e8\\\"; }\\n\\n.fa-circle-dollar-to-slot::before {\\n content: \\\"\\\\f4b9\\\"; }\\n\\n.fa-donate::before {\\n content: \\\"\\\\f4b9\\\"; }\\n\\n.fa-memory::before {\\n content: \\\"\\\\f538\\\"; }\\n\\n.fa-road-spikes::before {\\n content: \\\"\\\\e568\\\"; }\\n\\n.fa-fire-burner::before {\\n content: \\\"\\\\e4f1\\\"; }\\n\\n.fa-flag::before {\\n content: \\\"\\\\f024\\\"; }\\n\\n.fa-hanukiah::before {\\n content: \\\"\\\\f6e6\\\"; }\\n\\n.fa-feather::before {\\n content: \\\"\\\\f52d\\\"; }\\n\\n.fa-volume-low::before {\\n content: \\\"\\\\f027\\\"; }\\n\\n.fa-volume-down::before {\\n content: \\\"\\\\f027\\\"; }\\n\\n.fa-comment-slash::before {\\n content: \\\"\\\\f4b3\\\"; }\\n\\n.fa-cloud-sun-rain::before {\\n content: \\\"\\\\f743\\\"; }\\n\\n.fa-compress::before {\\n content: \\\"\\\\f066\\\"; }\\n\\n.fa-wheat-awn::before {\\n content: \\\"\\\\e2cd\\\"; }\\n\\n.fa-wheat-alt::before {\\n content: \\\"\\\\e2cd\\\"; }\\n\\n.fa-ankh::before {\\n content: \\\"\\\\f644\\\"; }\\n\\n.fa-hands-holding-child::before {\\n content: \\\"\\\\e4fa\\\"; }\\n\\n.fa-asterisk::before {\\n content: \\\"\\\\2a\\\"; }\\n\\n.fa-square-check::before {\\n content: \\\"\\\\f14a\\\"; }\\n\\n.fa-check-square::before {\\n content: \\\"\\\\f14a\\\"; }\\n\\n.fa-peseta-sign::before {\\n content: \\\"\\\\e221\\\"; }\\n\\n.fa-heading::before {\\n content: \\\"\\\\f1dc\\\"; }\\n\\n.fa-header::before {\\n content: \\\"\\\\f1dc\\\"; }\\n\\n.fa-ghost::before {\\n content: \\\"\\\\f6e2\\\"; }\\n\\n.fa-list::before {\\n content: \\\"\\\\f03a\\\"; }\\n\\n.fa-list-squares::before {\\n content: \\\"\\\\f03a\\\"; }\\n\\n.fa-square-phone-flip::before {\\n content: \\\"\\\\f87b\\\"; }\\n\\n.fa-phone-square-alt::before {\\n content: \\\"\\\\f87b\\\"; }\\n\\n.fa-cart-plus::before {\\n content: \\\"\\\\f217\\\"; }\\n\\n.fa-gamepad::before {\\n content: \\\"\\\\f11b\\\"; }\\n\\n.fa-circle-dot::before {\\n content: \\\"\\\\f192\\\"; }\\n\\n.fa-dot-circle::before {\\n content: \\\"\\\\f192\\\"; }\\n\\n.fa-face-dizzy::before {\\n content: \\\"\\\\f567\\\"; }\\n\\n.fa-dizzy::before {\\n content: \\\"\\\\f567\\\"; }\\n\\n.fa-egg::before {\\n content: \\\"\\\\f7fb\\\"; }\\n\\n.fa-house-medical-circle-xmark::before {\\n content: \\\"\\\\e513\\\"; }\\n\\n.fa-campground::before {\\n content: \\\"\\\\f6bb\\\"; }\\n\\n.fa-folder-plus::before {\\n content: \\\"\\\\f65e\\\"; }\\n\\n.fa-futbol::before {\\n content: \\\"\\\\f1e3\\\"; }\\n\\n.fa-futbol-ball::before {\\n content: \\\"\\\\f1e3\\\"; }\\n\\n.fa-soccer-ball::before {\\n content: \\\"\\\\f1e3\\\"; }\\n\\n.fa-paintbrush::before {\\n content: \\\"\\\\f1fc\\\"; }\\n\\n.fa-paint-brush::before {\\n content: \\\"\\\\f1fc\\\"; }\\n\\n.fa-lock::before {\\n content: \\\"\\\\f023\\\"; }\\n\\n.fa-gas-pump::before {\\n content: \\\"\\\\f52f\\\"; }\\n\\n.fa-hot-tub-person::before {\\n content: \\\"\\\\f593\\\"; }\\n\\n.fa-hot-tub::before {\\n content: \\\"\\\\f593\\\"; }\\n\\n.fa-map-location::before {\\n content: \\\"\\\\f59f\\\"; }\\n\\n.fa-map-marked::before {\\n content: \\\"\\\\f59f\\\"; }\\n\\n.fa-house-flood-water::before {\\n content: \\\"\\\\e50e\\\"; }\\n\\n.fa-tree::before {\\n content: \\\"\\\\f1bb\\\"; }\\n\\n.fa-bridge-lock::before {\\n content: \\\"\\\\e4cc\\\"; }\\n\\n.fa-sack-dollar::before {\\n content: \\\"\\\\f81d\\\"; }\\n\\n.fa-pen-to-square::before {\\n content: \\\"\\\\f044\\\"; }\\n\\n.fa-edit::before {\\n content: \\\"\\\\f044\\\"; }\\n\\n.fa-car-side::before {\\n content: \\\"\\\\f5e4\\\"; }\\n\\n.fa-share-nodes::before {\\n content: \\\"\\\\f1e0\\\"; }\\n\\n.fa-share-alt::before {\\n content: \\\"\\\\f1e0\\\"; }\\n\\n.fa-heart-circle-minus::before {\\n content: \\\"\\\\e4ff\\\"; }\\n\\n.fa-hourglass-half::before {\\n content: \\\"\\\\f252\\\"; }\\n\\n.fa-hourglass-2::before {\\n content: \\\"\\\\f252\\\"; }\\n\\n.fa-microscope::before {\\n content: \\\"\\\\f610\\\"; }\\n\\n.fa-sink::before {\\n content: \\\"\\\\e06d\\\"; }\\n\\n.fa-bag-shopping::before {\\n content: \\\"\\\\f290\\\"; }\\n\\n.fa-shopping-bag::before {\\n content: \\\"\\\\f290\\\"; }\\n\\n.fa-arrow-down-z-a::before {\\n content: \\\"\\\\f881\\\"; }\\n\\n.fa-sort-alpha-desc::before {\\n content: \\\"\\\\f881\\\"; }\\n\\n.fa-sort-alpha-down-alt::before {\\n content: \\\"\\\\f881\\\"; }\\n\\n.fa-mitten::before {\\n content: \\\"\\\\f7b5\\\"; }\\n\\n.fa-person-rays::before {\\n content: \\\"\\\\e54d\\\"; }\\n\\n.fa-users::before {\\n content: \\\"\\\\f0c0\\\"; }\\n\\n.fa-eye-slash::before {\\n content: \\\"\\\\f070\\\"; }\\n\\n.fa-flask-vial::before {\\n content: \\\"\\\\e4f3\\\"; }\\n\\n.fa-hand::before {\\n content: \\\"\\\\f256\\\"; }\\n\\n.fa-hand-paper::before {\\n content: \\\"\\\\f256\\\"; }\\n\\n.fa-om::before {\\n content: \\\"\\\\f679\\\"; }\\n\\n.fa-worm::before {\\n content: \\\"\\\\e599\\\"; }\\n\\n.fa-house-circle-xmark::before {\\n content: \\\"\\\\e50b\\\"; }\\n\\n.fa-plug::before {\\n content: \\\"\\\\f1e6\\\"; }\\n\\n.fa-chevron-up::before {\\n content: \\\"\\\\f077\\\"; }\\n\\n.fa-hand-spock::before {\\n content: \\\"\\\\f259\\\"; }\\n\\n.fa-stopwatch::before {\\n content: \\\"\\\\f2f2\\\"; }\\n\\n.fa-face-kiss::before {\\n content: \\\"\\\\f596\\\"; }\\n\\n.fa-kiss::before {\\n content: \\\"\\\\f596\\\"; }\\n\\n.fa-bridge-circle-xmark::before {\\n content: \\\"\\\\e4cb\\\"; }\\n\\n.fa-face-grin-tongue::before {\\n content: \\\"\\\\f589\\\"; }\\n\\n.fa-grin-tongue::before {\\n content: \\\"\\\\f589\\\"; }\\n\\n.fa-chess-bishop::before {\\n content: \\\"\\\\f43a\\\"; }\\n\\n.fa-face-grin-wink::before {\\n content: \\\"\\\\f58c\\\"; }\\n\\n.fa-grin-wink::before {\\n content: \\\"\\\\f58c\\\"; }\\n\\n.fa-ear-deaf::before {\\n content: \\\"\\\\f2a4\\\"; }\\n\\n.fa-deaf::before {\\n content: \\\"\\\\f2a4\\\"; }\\n\\n.fa-deafness::before {\\n content: \\\"\\\\f2a4\\\"; }\\n\\n.fa-hard-of-hearing::before {\\n content: \\\"\\\\f2a4\\\"; }\\n\\n.fa-road-circle-check::before {\\n content: \\\"\\\\e564\\\"; }\\n\\n.fa-dice-five::before {\\n content: \\\"\\\\f523\\\"; }\\n\\n.fa-square-rss::before {\\n content: \\\"\\\\f143\\\"; }\\n\\n.fa-rss-square::before {\\n content: \\\"\\\\f143\\\"; }\\n\\n.fa-land-mine-on::before {\\n content: \\\"\\\\e51b\\\"; }\\n\\n.fa-i-cursor::before {\\n content: \\\"\\\\f246\\\"; }\\n\\n.fa-stamp::before {\\n content: \\\"\\\\f5bf\\\"; }\\n\\n.fa-stairs::before {\\n content: \\\"\\\\e289\\\"; }\\n\\n.fa-i::before {\\n content: \\\"\\\\49\\\"; }\\n\\n.fa-hryvnia-sign::before {\\n content: \\\"\\\\f6f2\\\"; }\\n\\n.fa-hryvnia::before {\\n content: \\\"\\\\f6f2\\\"; }\\n\\n.fa-pills::before {\\n content: \\\"\\\\f484\\\"; }\\n\\n.fa-face-grin-wide::before {\\n content: \\\"\\\\f581\\\"; }\\n\\n.fa-grin-alt::before {\\n content: \\\"\\\\f581\\\"; }\\n\\n.fa-tooth::before {\\n content: \\\"\\\\f5c9\\\"; }\\n\\n.fa-v::before {\\n content: \\\"\\\\56\\\"; }\\n\\n.fa-bicycle::before {\\n content: \\\"\\\\f206\\\"; }\\n\\n.fa-staff-snake::before {\\n content: \\\"\\\\e579\\\"; }\\n\\n.fa-rod-asclepius::before {\\n content: \\\"\\\\e579\\\"; }\\n\\n.fa-rod-snake::before {\\n content: \\\"\\\\e579\\\"; }\\n\\n.fa-staff-aesculapius::before {\\n content: \\\"\\\\e579\\\"; }\\n\\n.fa-head-side-cough-slash::before {\\n content: \\\"\\\\e062\\\"; }\\n\\n.fa-truck-medical::before {\\n content: \\\"\\\\f0f9\\\"; }\\n\\n.fa-ambulance::before {\\n content: \\\"\\\\f0f9\\\"; }\\n\\n.fa-wheat-awn-circle-exclamation::before {\\n content: \\\"\\\\e598\\\"; }\\n\\n.fa-snowman::before {\\n content: \\\"\\\\f7d0\\\"; }\\n\\n.fa-mortar-pestle::before {\\n content: \\\"\\\\f5a7\\\"; }\\n\\n.fa-road-barrier::before {\\n content: \\\"\\\\e562\\\"; }\\n\\n.fa-school::before {\\n content: \\\"\\\\f549\\\"; }\\n\\n.fa-igloo::before {\\n content: \\\"\\\\f7ae\\\"; }\\n\\n.fa-joint::before {\\n content: \\\"\\\\f595\\\"; }\\n\\n.fa-angle-right::before {\\n content: \\\"\\\\f105\\\"; }\\n\\n.fa-horse::before {\\n content: \\\"\\\\f6f0\\\"; }\\n\\n.fa-q::before {\\n content: \\\"\\\\51\\\"; }\\n\\n.fa-g::before {\\n content: \\\"\\\\47\\\"; }\\n\\n.fa-notes-medical::before {\\n content: \\\"\\\\f481\\\"; }\\n\\n.fa-temperature-half::before {\\n content: \\\"\\\\f2c9\\\"; }\\n\\n.fa-temperature-2::before {\\n content: \\\"\\\\f2c9\\\"; }\\n\\n.fa-thermometer-2::before {\\n content: \\\"\\\\f2c9\\\"; }\\n\\n.fa-thermometer-half::before {\\n content: \\\"\\\\f2c9\\\"; }\\n\\n.fa-dong-sign::before {\\n content: \\\"\\\\e169\\\"; }\\n\\n.fa-capsules::before {\\n content: \\\"\\\\f46b\\\"; }\\n\\n.fa-poo-storm::before {\\n content: \\\"\\\\f75a\\\"; }\\n\\n.fa-poo-bolt::before {\\n content: \\\"\\\\f75a\\\"; }\\n\\n.fa-face-frown-open::before {\\n content: \\\"\\\\f57a\\\"; }\\n\\n.fa-frown-open::before {\\n content: \\\"\\\\f57a\\\"; }\\n\\n.fa-hand-point-up::before {\\n content: \\\"\\\\f0a6\\\"; }\\n\\n.fa-money-bill::before {\\n content: \\\"\\\\f0d6\\\"; }\\n\\n.fa-bookmark::before {\\n content: \\\"\\\\f02e\\\"; }\\n\\n.fa-align-justify::before {\\n content: \\\"\\\\f039\\\"; }\\n\\n.fa-umbrella-beach::before {\\n content: \\\"\\\\f5ca\\\"; }\\n\\n.fa-helmet-un::before {\\n content: \\\"\\\\e503\\\"; }\\n\\n.fa-bullseye::before {\\n content: \\\"\\\\f140\\\"; }\\n\\n.fa-bacon::before {\\n content: \\\"\\\\f7e5\\\"; }\\n\\n.fa-hand-point-down::before {\\n content: \\\"\\\\f0a7\\\"; }\\n\\n.fa-arrow-up-from-bracket::before {\\n content: \\\"\\\\e09a\\\"; }\\n\\n.fa-folder::before {\\n content: \\\"\\\\f07b\\\"; }\\n\\n.fa-folder-blank::before {\\n content: \\\"\\\\f07b\\\"; }\\n\\n.fa-file-waveform::before {\\n content: \\\"\\\\f478\\\"; }\\n\\n.fa-file-medical-alt::before {\\n content: \\\"\\\\f478\\\"; }\\n\\n.fa-radiation::before {\\n content: \\\"\\\\f7b9\\\"; }\\n\\n.fa-chart-simple::before {\\n content: \\\"\\\\e473\\\"; }\\n\\n.fa-mars-stroke::before {\\n content: \\\"\\\\f229\\\"; }\\n\\n.fa-vial::before {\\n content: \\\"\\\\f492\\\"; }\\n\\n.fa-gauge::before {\\n content: \\\"\\\\f624\\\"; }\\n\\n.fa-dashboard::before {\\n content: \\\"\\\\f624\\\"; }\\n\\n.fa-gauge-med::before {\\n content: \\\"\\\\f624\\\"; }\\n\\n.fa-tachometer-alt-average::before {\\n content: \\\"\\\\f624\\\"; }\\n\\n.fa-wand-magic-sparkles::before {\\n content: \\\"\\\\e2ca\\\"; }\\n\\n.fa-magic-wand-sparkles::before {\\n content: \\\"\\\\e2ca\\\"; }\\n\\n.fa-e::before {\\n content: \\\"\\\\45\\\"; }\\n\\n.fa-pen-clip::before {\\n content: \\\"\\\\f305\\\"; }\\n\\n.fa-pen-alt::before {\\n content: \\\"\\\\f305\\\"; }\\n\\n.fa-bridge-circle-exclamation::before {\\n content: \\\"\\\\e4ca\\\"; }\\n\\n.fa-user::before {\\n content: \\\"\\\\f007\\\"; }\\n\\n.fa-school-circle-check::before {\\n content: \\\"\\\\e56b\\\"; }\\n\\n.fa-dumpster::before {\\n content: \\\"\\\\f793\\\"; }\\n\\n.fa-van-shuttle::before {\\n content: \\\"\\\\f5b6\\\"; }\\n\\n.fa-shuttle-van::before {\\n content: \\\"\\\\f5b6\\\"; }\\n\\n.fa-building-user::before {\\n content: \\\"\\\\e4da\\\"; }\\n\\n.fa-square-caret-left::before {\\n content: \\\"\\\\f191\\\"; }\\n\\n.fa-caret-square-left::before {\\n content: \\\"\\\\f191\\\"; }\\n\\n.fa-highlighter::before {\\n content: \\\"\\\\f591\\\"; }\\n\\n.fa-key::before {\\n content: \\\"\\\\f084\\\"; }\\n\\n.fa-bullhorn::before {\\n content: \\\"\\\\f0a1\\\"; }\\n\\n.fa-globe::before {\\n content: \\\"\\\\f0ac\\\"; }\\n\\n.fa-synagogue::before {\\n content: \\\"\\\\f69b\\\"; }\\n\\n.fa-person-half-dress::before {\\n content: \\\"\\\\e548\\\"; }\\n\\n.fa-road-bridge::before {\\n content: \\\"\\\\e563\\\"; }\\n\\n.fa-location-arrow::before {\\n content: \\\"\\\\f124\\\"; }\\n\\n.fa-c::before {\\n content: \\\"\\\\43\\\"; }\\n\\n.fa-tablet-button::before {\\n content: \\\"\\\\f10a\\\"; }\\n\\n.fa-building-lock::before {\\n content: \\\"\\\\e4d6\\\"; }\\n\\n.fa-pizza-slice::before {\\n content: \\\"\\\\f818\\\"; }\\n\\n.fa-money-bill-wave::before {\\n content: \\\"\\\\f53a\\\"; }\\n\\n.fa-chart-area::before {\\n content: \\\"\\\\f1fe\\\"; }\\n\\n.fa-area-chart::before {\\n content: \\\"\\\\f1fe\\\"; }\\n\\n.fa-house-flag::before {\\n content: \\\"\\\\e50d\\\"; }\\n\\n.fa-person-circle-minus::before {\\n content: \\\"\\\\e540\\\"; }\\n\\n.fa-ban::before {\\n content: \\\"\\\\f05e\\\"; }\\n\\n.fa-cancel::before {\\n content: \\\"\\\\f05e\\\"; }\\n\\n.fa-camera-rotate::before {\\n content: \\\"\\\\e0d8\\\"; }\\n\\n.fa-spray-can-sparkles::before {\\n content: \\\"\\\\f5d0\\\"; }\\n\\n.fa-air-freshener::before {\\n content: \\\"\\\\f5d0\\\"; }\\n\\n.fa-star::before {\\n content: \\\"\\\\f005\\\"; }\\n\\n.fa-repeat::before {\\n content: \\\"\\\\f363\\\"; }\\n\\n.fa-cross::before {\\n content: \\\"\\\\f654\\\"; }\\n\\n.fa-box::before {\\n content: \\\"\\\\f466\\\"; }\\n\\n.fa-venus-mars::before {\\n content: \\\"\\\\f228\\\"; }\\n\\n.fa-arrow-pointer::before {\\n content: \\\"\\\\f245\\\"; }\\n\\n.fa-mouse-pointer::before {\\n content: \\\"\\\\f245\\\"; }\\n\\n.fa-maximize::before {\\n content: \\\"\\\\f31e\\\"; }\\n\\n.fa-expand-arrows-alt::before {\\n content: \\\"\\\\f31e\\\"; }\\n\\n.fa-charging-station::before {\\n content: \\\"\\\\f5e7\\\"; }\\n\\n.fa-shapes::before {\\n content: \\\"\\\\f61f\\\"; }\\n\\n.fa-triangle-circle-square::before {\\n content: \\\"\\\\f61f\\\"; }\\n\\n.fa-shuffle::before {\\n content: \\\"\\\\f074\\\"; }\\n\\n.fa-random::before {\\n content: \\\"\\\\f074\\\"; }\\n\\n.fa-person-running::before {\\n content: \\\"\\\\f70c\\\"; }\\n\\n.fa-running::before {\\n content: \\\"\\\\f70c\\\"; }\\n\\n.fa-mobile-retro::before {\\n content: \\\"\\\\e527\\\"; }\\n\\n.fa-grip-lines-vertical::before {\\n content: \\\"\\\\f7a5\\\"; }\\n\\n.fa-spider::before {\\n content: \\\"\\\\f717\\\"; }\\n\\n.fa-hands-bound::before {\\n content: \\\"\\\\e4f9\\\"; }\\n\\n.fa-file-invoice-dollar::before {\\n content: \\\"\\\\f571\\\"; }\\n\\n.fa-plane-circle-exclamation::before {\\n content: \\\"\\\\e556\\\"; }\\n\\n.fa-x-ray::before {\\n content: \\\"\\\\f497\\\"; }\\n\\n.fa-spell-check::before {\\n content: \\\"\\\\f891\\\"; }\\n\\n.fa-slash::before {\\n content: \\\"\\\\f715\\\"; }\\n\\n.fa-computer-mouse::before {\\n content: \\\"\\\\f8cc\\\"; }\\n\\n.fa-mouse::before {\\n content: \\\"\\\\f8cc\\\"; }\\n\\n.fa-arrow-right-to-bracket::before {\\n content: \\\"\\\\f090\\\"; }\\n\\n.fa-sign-in::before {\\n content: \\\"\\\\f090\\\"; }\\n\\n.fa-shop-slash::before {\\n content: \\\"\\\\e070\\\"; }\\n\\n.fa-store-alt-slash::before {\\n content: \\\"\\\\e070\\\"; }\\n\\n.fa-server::before {\\n content: \\\"\\\\f233\\\"; }\\n\\n.fa-virus-covid-slash::before {\\n content: \\\"\\\\e4a9\\\"; }\\n\\n.fa-shop-lock::before {\\n content: \\\"\\\\e4a5\\\"; }\\n\\n.fa-hourglass-start::before {\\n content: \\\"\\\\f251\\\"; }\\n\\n.fa-hourglass-1::before {\\n content: \\\"\\\\f251\\\"; }\\n\\n.fa-blender-phone::before {\\n content: \\\"\\\\f6b6\\\"; }\\n\\n.fa-building-wheat::before {\\n content: \\\"\\\\e4db\\\"; }\\n\\n.fa-person-breastfeeding::before {\\n content: \\\"\\\\e53a\\\"; }\\n\\n.fa-right-to-bracket::before {\\n content: \\\"\\\\f2f6\\\"; }\\n\\n.fa-sign-in-alt::before {\\n content: \\\"\\\\f2f6\\\"; }\\n\\n.fa-venus::before {\\n content: \\\"\\\\f221\\\"; }\\n\\n.fa-passport::before {\\n content: \\\"\\\\f5ab\\\"; }\\n\\n.fa-heart-pulse::before {\\n content: \\\"\\\\f21e\\\"; }\\n\\n.fa-heartbeat::before {\\n content: \\\"\\\\f21e\\\"; }\\n\\n.fa-people-carry-box::before {\\n content: \\\"\\\\f4ce\\\"; }\\n\\n.fa-people-carry::before {\\n content: \\\"\\\\f4ce\\\"; }\\n\\n.fa-temperature-high::before {\\n content: \\\"\\\\f769\\\"; }\\n\\n.fa-microchip::before {\\n content: \\\"\\\\f2db\\\"; }\\n\\n.fa-crown::before {\\n content: \\\"\\\\f521\\\"; }\\n\\n.fa-weight-hanging::before {\\n content: \\\"\\\\f5cd\\\"; }\\n\\n.fa-xmarks-lines::before {\\n content: \\\"\\\\e59a\\\"; }\\n\\n.fa-file-prescription::before {\\n content: \\\"\\\\f572\\\"; }\\n\\n.fa-weight-scale::before {\\n content: \\\"\\\\f496\\\"; }\\n\\n.fa-weight::before {\\n content: \\\"\\\\f496\\\"; }\\n\\n.fa-user-group::before {\\n content: \\\"\\\\f500\\\"; }\\n\\n.fa-user-friends::before {\\n content: \\\"\\\\f500\\\"; }\\n\\n.fa-arrow-up-a-z::before {\\n content: \\\"\\\\f15e\\\"; }\\n\\n.fa-sort-alpha-up::before {\\n content: \\\"\\\\f15e\\\"; }\\n\\n.fa-chess-knight::before {\\n content: \\\"\\\\f441\\\"; }\\n\\n.fa-face-laugh-squint::before {\\n content: \\\"\\\\f59b\\\"; }\\n\\n.fa-laugh-squint::before {\\n content: \\\"\\\\f59b\\\"; }\\n\\n.fa-wheelchair::before {\\n content: \\\"\\\\f193\\\"; }\\n\\n.fa-circle-arrow-up::before {\\n content: \\\"\\\\f0aa\\\"; }\\n\\n.fa-arrow-circle-up::before {\\n content: \\\"\\\\f0aa\\\"; }\\n\\n.fa-toggle-on::before {\\n content: \\\"\\\\f205\\\"; }\\n\\n.fa-person-walking::before {\\n content: \\\"\\\\f554\\\"; }\\n\\n.fa-walking::before {\\n content: \\\"\\\\f554\\\"; }\\n\\n.fa-l::before {\\n content: \\\"\\\\4c\\\"; }\\n\\n.fa-fire::before {\\n content: \\\"\\\\f06d\\\"; }\\n\\n.fa-bed-pulse::before {\\n content: \\\"\\\\f487\\\"; }\\n\\n.fa-procedures::before {\\n content: \\\"\\\\f487\\\"; }\\n\\n.fa-shuttle-space::before {\\n content: \\\"\\\\f197\\\"; }\\n\\n.fa-space-shuttle::before {\\n content: \\\"\\\\f197\\\"; }\\n\\n.fa-face-laugh::before {\\n content: \\\"\\\\f599\\\"; }\\n\\n.fa-laugh::before {\\n content: \\\"\\\\f599\\\"; }\\n\\n.fa-folder-open::before {\\n content: \\\"\\\\f07c\\\"; }\\n\\n.fa-heart-circle-plus::before {\\n content: \\\"\\\\e500\\\"; }\\n\\n.fa-code-fork::before {\\n content: \\\"\\\\e13b\\\"; }\\n\\n.fa-city::before {\\n content: \\\"\\\\f64f\\\"; }\\n\\n.fa-microphone-lines::before {\\n content: \\\"\\\\f3c9\\\"; }\\n\\n.fa-microphone-alt::before {\\n content: \\\"\\\\f3c9\\\"; }\\n\\n.fa-pepper-hot::before {\\n content: \\\"\\\\f816\\\"; }\\n\\n.fa-unlock::before {\\n content: \\\"\\\\f09c\\\"; }\\n\\n.fa-colon-sign::before {\\n content: \\\"\\\\e140\\\"; }\\n\\n.fa-headset::before {\\n content: \\\"\\\\f590\\\"; }\\n\\n.fa-store-slash::before {\\n content: \\\"\\\\e071\\\"; }\\n\\n.fa-road-circle-xmark::before {\\n content: \\\"\\\\e566\\\"; }\\n\\n.fa-user-minus::before {\\n content: \\\"\\\\f503\\\"; }\\n\\n.fa-mars-stroke-up::before {\\n content: \\\"\\\\f22a\\\"; }\\n\\n.fa-mars-stroke-v::before {\\n content: \\\"\\\\f22a\\\"; }\\n\\n.fa-champagne-glasses::before {\\n content: \\\"\\\\f79f\\\"; }\\n\\n.fa-glass-cheers::before {\\n content: \\\"\\\\f79f\\\"; }\\n\\n.fa-clipboard::before {\\n content: \\\"\\\\f328\\\"; }\\n\\n.fa-house-circle-exclamation::before {\\n content: \\\"\\\\e50a\\\"; }\\n\\n.fa-file-arrow-up::before {\\n content: \\\"\\\\f574\\\"; }\\n\\n.fa-file-upload::before {\\n content: \\\"\\\\f574\\\"; }\\n\\n.fa-wifi::before {\\n content: \\\"\\\\f1eb\\\"; }\\n\\n.fa-wifi-3::before {\\n content: \\\"\\\\f1eb\\\"; }\\n\\n.fa-wifi-strong::before {\\n content: \\\"\\\\f1eb\\\"; }\\n\\n.fa-bath::before {\\n content: \\\"\\\\f2cd\\\"; }\\n\\n.fa-bathtub::before {\\n content: \\\"\\\\f2cd\\\"; }\\n\\n.fa-underline::before {\\n content: \\\"\\\\f0cd\\\"; }\\n\\n.fa-user-pen::before {\\n content: \\\"\\\\f4ff\\\"; }\\n\\n.fa-user-edit::before {\\n content: \\\"\\\\f4ff\\\"; }\\n\\n.fa-signature::before {\\n content: \\\"\\\\f5b7\\\"; }\\n\\n.fa-stroopwafel::before {\\n content: \\\"\\\\f551\\\"; }\\n\\n.fa-bold::before {\\n content: \\\"\\\\f032\\\"; }\\n\\n.fa-anchor-lock::before {\\n content: \\\"\\\\e4ad\\\"; }\\n\\n.fa-building-ngo::before {\\n content: \\\"\\\\e4d7\\\"; }\\n\\n.fa-manat-sign::before {\\n content: \\\"\\\\e1d5\\\"; }\\n\\n.fa-not-equal::before {\\n content: \\\"\\\\f53e\\\"; }\\n\\n.fa-border-top-left::before {\\n content: \\\"\\\\f853\\\"; }\\n\\n.fa-border-style::before {\\n content: \\\"\\\\f853\\\"; }\\n\\n.fa-map-location-dot::before {\\n content: \\\"\\\\f5a0\\\"; }\\n\\n.fa-map-marked-alt::before {\\n content: \\\"\\\\f5a0\\\"; }\\n\\n.fa-jedi::before {\\n content: \\\"\\\\f669\\\"; }\\n\\n.fa-square-poll-vertical::before {\\n content: \\\"\\\\f681\\\"; }\\n\\n.fa-poll::before {\\n content: \\\"\\\\f681\\\"; }\\n\\n.fa-mug-hot::before {\\n content: \\\"\\\\f7b6\\\"; }\\n\\n.fa-car-battery::before {\\n content: \\\"\\\\f5df\\\"; }\\n\\n.fa-battery-car::before {\\n content: \\\"\\\\f5df\\\"; }\\n\\n.fa-gift::before {\\n content: \\\"\\\\f06b\\\"; }\\n\\n.fa-dice-two::before {\\n content: \\\"\\\\f528\\\"; }\\n\\n.fa-chess-queen::before {\\n content: \\\"\\\\f445\\\"; }\\n\\n.fa-glasses::before {\\n content: \\\"\\\\f530\\\"; }\\n\\n.fa-chess-board::before {\\n content: \\\"\\\\f43c\\\"; }\\n\\n.fa-building-circle-check::before {\\n content: \\\"\\\\e4d2\\\"; }\\n\\n.fa-person-chalkboard::before {\\n content: \\\"\\\\e53d\\\"; }\\n\\n.fa-mars-stroke-right::before {\\n content: \\\"\\\\f22b\\\"; }\\n\\n.fa-mars-stroke-h::before {\\n content: \\\"\\\\f22b\\\"; }\\n\\n.fa-hand-back-fist::before {\\n content: \\\"\\\\f255\\\"; }\\n\\n.fa-hand-rock::before {\\n content: \\\"\\\\f255\\\"; }\\n\\n.fa-square-caret-up::before {\\n content: \\\"\\\\f151\\\"; }\\n\\n.fa-caret-square-up::before {\\n content: \\\"\\\\f151\\\"; }\\n\\n.fa-cloud-showers-water::before {\\n content: \\\"\\\\e4e4\\\"; }\\n\\n.fa-chart-bar::before {\\n content: \\\"\\\\f080\\\"; }\\n\\n.fa-bar-chart::before {\\n content: \\\"\\\\f080\\\"; }\\n\\n.fa-hands-bubbles::before {\\n content: \\\"\\\\e05e\\\"; }\\n\\n.fa-hands-wash::before {\\n content: \\\"\\\\e05e\\\"; }\\n\\n.fa-less-than-equal::before {\\n content: \\\"\\\\f537\\\"; }\\n\\n.fa-train::before {\\n content: \\\"\\\\f238\\\"; }\\n\\n.fa-eye-low-vision::before {\\n content: \\\"\\\\f2a8\\\"; }\\n\\n.fa-low-vision::before {\\n content: \\\"\\\\f2a8\\\"; }\\n\\n.fa-crow::before {\\n content: \\\"\\\\f520\\\"; }\\n\\n.fa-sailboat::before {\\n content: \\\"\\\\e445\\\"; }\\n\\n.fa-window-restore::before {\\n content: \\\"\\\\f2d2\\\"; }\\n\\n.fa-square-plus::before {\\n content: \\\"\\\\f0fe\\\"; }\\n\\n.fa-plus-square::before {\\n content: \\\"\\\\f0fe\\\"; }\\n\\n.fa-torii-gate::before {\\n content: \\\"\\\\f6a1\\\"; }\\n\\n.fa-frog::before {\\n content: \\\"\\\\f52e\\\"; }\\n\\n.fa-bucket::before {\\n content: \\\"\\\\e4cf\\\"; }\\n\\n.fa-image::before {\\n content: \\\"\\\\f03e\\\"; }\\n\\n.fa-microphone::before {\\n content: \\\"\\\\f130\\\"; }\\n\\n.fa-cow::before {\\n content: \\\"\\\\f6c8\\\"; }\\n\\n.fa-caret-up::before {\\n content: \\\"\\\\f0d8\\\"; }\\n\\n.fa-screwdriver::before {\\n content: \\\"\\\\f54a\\\"; }\\n\\n.fa-folder-closed::before {\\n content: \\\"\\\\e185\\\"; }\\n\\n.fa-house-tsunami::before {\\n content: \\\"\\\\e515\\\"; }\\n\\n.fa-square-nfi::before {\\n content: \\\"\\\\e576\\\"; }\\n\\n.fa-arrow-up-from-ground-water::before {\\n content: \\\"\\\\e4b5\\\"; }\\n\\n.fa-martini-glass::before {\\n content: \\\"\\\\f57b\\\"; }\\n\\n.fa-glass-martini-alt::before {\\n content: \\\"\\\\f57b\\\"; }\\n\\n.fa-rotate-left::before {\\n content: \\\"\\\\f2ea\\\"; }\\n\\n.fa-rotate-back::before {\\n content: \\\"\\\\f2ea\\\"; }\\n\\n.fa-rotate-backward::before {\\n content: \\\"\\\\f2ea\\\"; }\\n\\n.fa-undo-alt::before {\\n content: \\\"\\\\f2ea\\\"; }\\n\\n.fa-table-columns::before {\\n content: \\\"\\\\f0db\\\"; }\\n\\n.fa-columns::before {\\n content: \\\"\\\\f0db\\\"; }\\n\\n.fa-lemon::before {\\n content: \\\"\\\\f094\\\"; }\\n\\n.fa-head-side-mask::before {\\n content: \\\"\\\\e063\\\"; }\\n\\n.fa-handshake::before {\\n content: \\\"\\\\f2b5\\\"; }\\n\\n.fa-gem::before {\\n content: \\\"\\\\f3a5\\\"; }\\n\\n.fa-dolly::before {\\n content: \\\"\\\\f472\\\"; }\\n\\n.fa-dolly-box::before {\\n content: \\\"\\\\f472\\\"; }\\n\\n.fa-smoking::before {\\n content: \\\"\\\\f48d\\\"; }\\n\\n.fa-minimize::before {\\n content: \\\"\\\\f78c\\\"; }\\n\\n.fa-compress-arrows-alt::before {\\n content: \\\"\\\\f78c\\\"; }\\n\\n.fa-monument::before {\\n content: \\\"\\\\f5a6\\\"; }\\n\\n.fa-snowplow::before {\\n content: \\\"\\\\f7d2\\\"; }\\n\\n.fa-angles-right::before {\\n content: \\\"\\\\f101\\\"; }\\n\\n.fa-angle-double-right::before {\\n content: \\\"\\\\f101\\\"; }\\n\\n.fa-cannabis::before {\\n content: \\\"\\\\f55f\\\"; }\\n\\n.fa-circle-play::before {\\n content: \\\"\\\\f144\\\"; }\\n\\n.fa-play-circle::before {\\n content: \\\"\\\\f144\\\"; }\\n\\n.fa-tablets::before {\\n content: \\\"\\\\f490\\\"; }\\n\\n.fa-ethernet::before {\\n content: \\\"\\\\f796\\\"; }\\n\\n.fa-euro-sign::before {\\n content: \\\"\\\\f153\\\"; }\\n\\n.fa-eur::before {\\n content: \\\"\\\\f153\\\"; }\\n\\n.fa-euro::before {\\n content: \\\"\\\\f153\\\"; }\\n\\n.fa-chair::before {\\n content: \\\"\\\\f6c0\\\"; }\\n\\n.fa-circle-check::before {\\n content: \\\"\\\\f058\\\"; }\\n\\n.fa-check-circle::before {\\n content: \\\"\\\\f058\\\"; }\\n\\n.fa-circle-stop::before {\\n content: \\\"\\\\f28d\\\"; }\\n\\n.fa-stop-circle::before {\\n content: \\\"\\\\f28d\\\"; }\\n\\n.fa-compass-drafting::before {\\n content: \\\"\\\\f568\\\"; }\\n\\n.fa-drafting-compass::before {\\n content: \\\"\\\\f568\\\"; }\\n\\n.fa-plate-wheat::before {\\n content: \\\"\\\\e55a\\\"; }\\n\\n.fa-icicles::before {\\n content: \\\"\\\\f7ad\\\"; }\\n\\n.fa-person-shelter::before {\\n content: \\\"\\\\e54f\\\"; }\\n\\n.fa-neuter::before {\\n content: \\\"\\\\f22c\\\"; }\\n\\n.fa-id-badge::before {\\n content: \\\"\\\\f2c1\\\"; }\\n\\n.fa-marker::before {\\n content: \\\"\\\\f5a1\\\"; }\\n\\n.fa-face-laugh-beam::before {\\n content: \\\"\\\\f59a\\\"; }\\n\\n.fa-laugh-beam::before {\\n content: \\\"\\\\f59a\\\"; }\\n\\n.fa-helicopter-symbol::before {\\n content: \\\"\\\\e502\\\"; }\\n\\n.fa-universal-access::before {\\n content: \\\"\\\\f29a\\\"; }\\n\\n.fa-circle-chevron-up::before {\\n content: \\\"\\\\f139\\\"; }\\n\\n.fa-chevron-circle-up::before {\\n content: \\\"\\\\f139\\\"; }\\n\\n.fa-lari-sign::before {\\n content: \\\"\\\\e1c8\\\"; }\\n\\n.fa-volcano::before {\\n content: \\\"\\\\f770\\\"; }\\n\\n.fa-person-walking-dashed-line-arrow-right::before {\\n content: \\\"\\\\e553\\\"; }\\n\\n.fa-sterling-sign::before {\\n content: \\\"\\\\f154\\\"; }\\n\\n.fa-gbp::before {\\n content: \\\"\\\\f154\\\"; }\\n\\n.fa-pound-sign::before {\\n content: \\\"\\\\f154\\\"; }\\n\\n.fa-viruses::before {\\n content: \\\"\\\\e076\\\"; }\\n\\n.fa-square-person-confined::before {\\n content: \\\"\\\\e577\\\"; }\\n\\n.fa-user-tie::before {\\n content: \\\"\\\\f508\\\"; }\\n\\n.fa-arrow-down-long::before {\\n content: \\\"\\\\f175\\\"; }\\n\\n.fa-long-arrow-down::before {\\n content: \\\"\\\\f175\\\"; }\\n\\n.fa-tent-arrow-down-to-line::before {\\n content: \\\"\\\\e57e\\\"; }\\n\\n.fa-certificate::before {\\n content: \\\"\\\\f0a3\\\"; }\\n\\n.fa-reply-all::before {\\n content: \\\"\\\\f122\\\"; }\\n\\n.fa-mail-reply-all::before {\\n content: \\\"\\\\f122\\\"; }\\n\\n.fa-suitcase::before {\\n content: \\\"\\\\f0f2\\\"; }\\n\\n.fa-person-skating::before {\\n content: \\\"\\\\f7c5\\\"; }\\n\\n.fa-skating::before {\\n content: \\\"\\\\f7c5\\\"; }\\n\\n.fa-filter-circle-dollar::before {\\n content: \\\"\\\\f662\\\"; }\\n\\n.fa-funnel-dollar::before {\\n content: \\\"\\\\f662\\\"; }\\n\\n.fa-camera-retro::before {\\n content: \\\"\\\\f083\\\"; }\\n\\n.fa-circle-arrow-down::before {\\n content: \\\"\\\\f0ab\\\"; }\\n\\n.fa-arrow-circle-down::before {\\n content: \\\"\\\\f0ab\\\"; }\\n\\n.fa-file-import::before {\\n content: \\\"\\\\f56f\\\"; }\\n\\n.fa-arrow-right-to-file::before {\\n content: \\\"\\\\f56f\\\"; }\\n\\n.fa-square-arrow-up-right::before {\\n content: \\\"\\\\f14c\\\"; }\\n\\n.fa-external-link-square::before {\\n content: \\\"\\\\f14c\\\"; }\\n\\n.fa-box-open::before {\\n content: \\\"\\\\f49e\\\"; }\\n\\n.fa-scroll::before {\\n content: \\\"\\\\f70e\\\"; }\\n\\n.fa-spa::before {\\n content: \\\"\\\\f5bb\\\"; }\\n\\n.fa-location-pin-lock::before {\\n content: \\\"\\\\e51f\\\"; }\\n\\n.fa-pause::before {\\n content: \\\"\\\\f04c\\\"; }\\n\\n.fa-hill-avalanche::before {\\n content: \\\"\\\\e507\\\"; }\\n\\n.fa-temperature-empty::before {\\n content: \\\"\\\\f2cb\\\"; }\\n\\n.fa-temperature-0::before {\\n content: \\\"\\\\f2cb\\\"; }\\n\\n.fa-thermometer-0::before {\\n content: \\\"\\\\f2cb\\\"; }\\n\\n.fa-thermometer-empty::before {\\n content: \\\"\\\\f2cb\\\"; }\\n\\n.fa-bomb::before {\\n content: \\\"\\\\f1e2\\\"; }\\n\\n.fa-registered::before {\\n content: \\\"\\\\f25d\\\"; }\\n\\n.fa-address-card::before {\\n content: \\\"\\\\f2bb\\\"; }\\n\\n.fa-contact-card::before {\\n content: \\\"\\\\f2bb\\\"; }\\n\\n.fa-vcard::before {\\n content: \\\"\\\\f2bb\\\"; }\\n\\n.fa-scale-unbalanced-flip::before {\\n content: \\\"\\\\f516\\\"; }\\n\\n.fa-balance-scale-right::before {\\n content: \\\"\\\\f516\\\"; }\\n\\n.fa-subscript::before {\\n content: \\\"\\\\f12c\\\"; }\\n\\n.fa-diamond-turn-right::before {\\n content: \\\"\\\\f5eb\\\"; }\\n\\n.fa-directions::before {\\n content: \\\"\\\\f5eb\\\"; }\\n\\n.fa-burst::before {\\n content: \\\"\\\\e4dc\\\"; }\\n\\n.fa-house-laptop::before {\\n content: \\\"\\\\e066\\\"; }\\n\\n.fa-laptop-house::before {\\n content: \\\"\\\\e066\\\"; }\\n\\n.fa-face-tired::before {\\n content: \\\"\\\\f5c8\\\"; }\\n\\n.fa-tired::before {\\n content: \\\"\\\\f5c8\\\"; }\\n\\n.fa-money-bills::before {\\n content: \\\"\\\\e1f3\\\"; }\\n\\n.fa-smog::before {\\n content: \\\"\\\\f75f\\\"; }\\n\\n.fa-crutch::before {\\n content: \\\"\\\\f7f7\\\"; }\\n\\n.fa-cloud-arrow-up::before {\\n content: \\\"\\\\f0ee\\\"; }\\n\\n.fa-cloud-upload::before {\\n content: \\\"\\\\f0ee\\\"; }\\n\\n.fa-cloud-upload-alt::before {\\n content: \\\"\\\\f0ee\\\"; }\\n\\n.fa-palette::before {\\n content: \\\"\\\\f53f\\\"; }\\n\\n.fa-arrows-turn-right::before {\\n content: \\\"\\\\e4c0\\\"; }\\n\\n.fa-vest::before {\\n content: \\\"\\\\e085\\\"; }\\n\\n.fa-ferry::before {\\n content: \\\"\\\\e4ea\\\"; }\\n\\n.fa-arrows-down-to-people::before {\\n content: \\\"\\\\e4b9\\\"; }\\n\\n.fa-seedling::before {\\n content: \\\"\\\\f4d8\\\"; }\\n\\n.fa-sprout::before {\\n content: \\\"\\\\f4d8\\\"; }\\n\\n.fa-left-right::before {\\n content: \\\"\\\\f337\\\"; }\\n\\n.fa-arrows-alt-h::before {\\n content: \\\"\\\\f337\\\"; }\\n\\n.fa-boxes-packing::before {\\n content: \\\"\\\\e4c7\\\"; }\\n\\n.fa-circle-arrow-left::before {\\n content: \\\"\\\\f0a8\\\"; }\\n\\n.fa-arrow-circle-left::before {\\n content: \\\"\\\\f0a8\\\"; }\\n\\n.fa-group-arrows-rotate::before {\\n content: \\\"\\\\e4f6\\\"; }\\n\\n.fa-bowl-food::before {\\n content: \\\"\\\\e4c6\\\"; }\\n\\n.fa-candy-cane::before {\\n content: \\\"\\\\f786\\\"; }\\n\\n.fa-arrow-down-wide-short::before {\\n content: \\\"\\\\f160\\\"; }\\n\\n.fa-sort-amount-asc::before {\\n content: \\\"\\\\f160\\\"; }\\n\\n.fa-sort-amount-down::before {\\n content: \\\"\\\\f160\\\"; }\\n\\n.fa-cloud-bolt::before {\\n content: \\\"\\\\f76c\\\"; }\\n\\n.fa-thunderstorm::before {\\n content: \\\"\\\\f76c\\\"; }\\n\\n.fa-text-slash::before {\\n content: \\\"\\\\f87d\\\"; }\\n\\n.fa-remove-format::before {\\n content: \\\"\\\\f87d\\\"; }\\n\\n.fa-face-smile-wink::before {\\n content: \\\"\\\\f4da\\\"; }\\n\\n.fa-smile-wink::before {\\n content: \\\"\\\\f4da\\\"; }\\n\\n.fa-file-word::before {\\n content: \\\"\\\\f1c2\\\"; }\\n\\n.fa-file-powerpoint::before {\\n content: \\\"\\\\f1c4\\\"; }\\n\\n.fa-arrows-left-right::before {\\n content: \\\"\\\\f07e\\\"; }\\n\\n.fa-arrows-h::before {\\n content: \\\"\\\\f07e\\\"; }\\n\\n.fa-house-lock::before {\\n content: \\\"\\\\e510\\\"; }\\n\\n.fa-cloud-arrow-down::before {\\n content: \\\"\\\\f0ed\\\"; }\\n\\n.fa-cloud-download::before {\\n content: \\\"\\\\f0ed\\\"; }\\n\\n.fa-cloud-download-alt::before {\\n content: \\\"\\\\f0ed\\\"; }\\n\\n.fa-children::before {\\n content: \\\"\\\\e4e1\\\"; }\\n\\n.fa-chalkboard::before {\\n content: \\\"\\\\f51b\\\"; }\\n\\n.fa-blackboard::before {\\n content: \\\"\\\\f51b\\\"; }\\n\\n.fa-user-large-slash::before {\\n content: \\\"\\\\f4fa\\\"; }\\n\\n.fa-user-alt-slash::before {\\n content: \\\"\\\\f4fa\\\"; }\\n\\n.fa-envelope-open::before {\\n content: \\\"\\\\f2b6\\\"; }\\n\\n.fa-handshake-simple-slash::before {\\n content: \\\"\\\\e05f\\\"; }\\n\\n.fa-handshake-alt-slash::before {\\n content: \\\"\\\\e05f\\\"; }\\n\\n.fa-mattress-pillow::before {\\n content: \\\"\\\\e525\\\"; }\\n\\n.fa-guarani-sign::before {\\n content: \\\"\\\\e19a\\\"; }\\n\\n.fa-arrows-rotate::before {\\n content: \\\"\\\\f021\\\"; }\\n\\n.fa-refresh::before {\\n content: \\\"\\\\f021\\\"; }\\n\\n.fa-sync::before {\\n content: \\\"\\\\f021\\\"; }\\n\\n.fa-fire-extinguisher::before {\\n content: \\\"\\\\f134\\\"; }\\n\\n.fa-cruzeiro-sign::before {\\n content: \\\"\\\\e152\\\"; }\\n\\n.fa-greater-than-equal::before {\\n content: \\\"\\\\f532\\\"; }\\n\\n.fa-shield-halved::before {\\n content: \\\"\\\\f3ed\\\"; }\\n\\n.fa-shield-alt::before {\\n content: \\\"\\\\f3ed\\\"; }\\n\\n.fa-book-atlas::before {\\n content: \\\"\\\\f558\\\"; }\\n\\n.fa-atlas::before {\\n content: \\\"\\\\f558\\\"; }\\n\\n.fa-virus::before {\\n content: \\\"\\\\e074\\\"; }\\n\\n.fa-envelope-circle-check::before {\\n content: \\\"\\\\e4e8\\\"; }\\n\\n.fa-layer-group::before {\\n content: \\\"\\\\f5fd\\\"; }\\n\\n.fa-arrows-to-dot::before {\\n content: \\\"\\\\e4be\\\"; }\\n\\n.fa-archway::before {\\n content: \\\"\\\\f557\\\"; }\\n\\n.fa-heart-circle-check::before {\\n content: \\\"\\\\e4fd\\\"; }\\n\\n.fa-house-chimney-crack::before {\\n content: \\\"\\\\f6f1\\\"; }\\n\\n.fa-house-damage::before {\\n content: \\\"\\\\f6f1\\\"; }\\n\\n.fa-file-zipper::before {\\n content: \\\"\\\\f1c6\\\"; }\\n\\n.fa-file-archive::before {\\n content: \\\"\\\\f1c6\\\"; }\\n\\n.fa-square::before {\\n content: \\\"\\\\f0c8\\\"; }\\n\\n.fa-martini-glass-empty::before {\\n content: \\\"\\\\f000\\\"; }\\n\\n.fa-glass-martini::before {\\n content: \\\"\\\\f000\\\"; }\\n\\n.fa-couch::before {\\n content: \\\"\\\\f4b8\\\"; }\\n\\n.fa-cedi-sign::before {\\n content: \\\"\\\\e0df\\\"; }\\n\\n.fa-italic::before {\\n content: \\\"\\\\f033\\\"; }\\n\\n.fa-church::before {\\n content: \\\"\\\\f51d\\\"; }\\n\\n.fa-comments-dollar::before {\\n content: \\\"\\\\f653\\\"; }\\n\\n.fa-democrat::before {\\n content: \\\"\\\\f747\\\"; }\\n\\n.fa-z::before {\\n content: \\\"\\\\5a\\\"; }\\n\\n.fa-person-skiing::before {\\n content: \\\"\\\\f7c9\\\"; }\\n\\n.fa-skiing::before {\\n content: \\\"\\\\f7c9\\\"; }\\n\\n.fa-road-lock::before {\\n content: \\\"\\\\e567\\\"; }\\n\\n.fa-a::before {\\n content: \\\"\\\\41\\\"; }\\n\\n.fa-temperature-arrow-down::before {\\n content: \\\"\\\\e03f\\\"; }\\n\\n.fa-temperature-down::before {\\n content: \\\"\\\\e03f\\\"; }\\n\\n.fa-feather-pointed::before {\\n content: \\\"\\\\f56b\\\"; }\\n\\n.fa-feather-alt::before {\\n content: \\\"\\\\f56b\\\"; }\\n\\n.fa-p::before {\\n content: \\\"\\\\50\\\"; }\\n\\n.fa-snowflake::before {\\n content: \\\"\\\\f2dc\\\"; }\\n\\n.fa-newspaper::before {\\n content: \\\"\\\\f1ea\\\"; }\\n\\n.fa-rectangle-ad::before {\\n content: \\\"\\\\f641\\\"; }\\n\\n.fa-ad::before {\\n content: \\\"\\\\f641\\\"; }\\n\\n.fa-circle-arrow-right::before {\\n content: \\\"\\\\f0a9\\\"; }\\n\\n.fa-arrow-circle-right::before {\\n content: \\\"\\\\f0a9\\\"; }\\n\\n.fa-filter-circle-xmark::before {\\n content: \\\"\\\\e17b\\\"; }\\n\\n.fa-locust::before {\\n content: \\\"\\\\e520\\\"; }\\n\\n.fa-sort::before {\\n content: \\\"\\\\f0dc\\\"; }\\n\\n.fa-unsorted::before {\\n content: \\\"\\\\f0dc\\\"; }\\n\\n.fa-list-ol::before {\\n content: \\\"\\\\f0cb\\\"; }\\n\\n.fa-list-1-2::before {\\n content: \\\"\\\\f0cb\\\"; }\\n\\n.fa-list-numeric::before {\\n content: \\\"\\\\f0cb\\\"; }\\n\\n.fa-person-dress-burst::before {\\n content: \\\"\\\\e544\\\"; }\\n\\n.fa-money-check-dollar::before {\\n content: \\\"\\\\f53d\\\"; }\\n\\n.fa-money-check-alt::before {\\n content: \\\"\\\\f53d\\\"; }\\n\\n.fa-vector-square::before {\\n content: \\\"\\\\f5cb\\\"; }\\n\\n.fa-bread-slice::before {\\n content: \\\"\\\\f7ec\\\"; }\\n\\n.fa-language::before {\\n content: \\\"\\\\f1ab\\\"; }\\n\\n.fa-face-kiss-wink-heart::before {\\n content: \\\"\\\\f598\\\"; }\\n\\n.fa-kiss-wink-heart::before {\\n content: \\\"\\\\f598\\\"; }\\n\\n.fa-filter::before {\\n content: \\\"\\\\f0b0\\\"; }\\n\\n.fa-question::before {\\n content: \\\"\\\\3f\\\"; }\\n\\n.fa-file-signature::before {\\n content: \\\"\\\\f573\\\"; }\\n\\n.fa-up-down-left-right::before {\\n content: \\\"\\\\f0b2\\\"; }\\n\\n.fa-arrows-alt::before {\\n content: \\\"\\\\f0b2\\\"; }\\n\\n.fa-house-chimney-user::before {\\n content: \\\"\\\\e065\\\"; }\\n\\n.fa-hand-holding-heart::before {\\n content: \\\"\\\\f4be\\\"; }\\n\\n.fa-puzzle-piece::before {\\n content: \\\"\\\\f12e\\\"; }\\n\\n.fa-money-check::before {\\n content: \\\"\\\\f53c\\\"; }\\n\\n.fa-star-half-stroke::before {\\n content: \\\"\\\\f5c0\\\"; }\\n\\n.fa-star-half-alt::before {\\n content: \\\"\\\\f5c0\\\"; }\\n\\n.fa-code::before {\\n content: \\\"\\\\f121\\\"; }\\n\\n.fa-whiskey-glass::before {\\n content: \\\"\\\\f7a0\\\"; }\\n\\n.fa-glass-whiskey::before {\\n content: \\\"\\\\f7a0\\\"; }\\n\\n.fa-building-circle-exclamation::before {\\n content: \\\"\\\\e4d3\\\"; }\\n\\n.fa-magnifying-glass-chart::before {\\n content: \\\"\\\\e522\\\"; }\\n\\n.fa-arrow-up-right-from-square::before {\\n content: \\\"\\\\f08e\\\"; }\\n\\n.fa-external-link::before {\\n content: \\\"\\\\f08e\\\"; }\\n\\n.fa-cubes-stacked::before {\\n content: \\\"\\\\e4e6\\\"; }\\n\\n.fa-won-sign::before {\\n content: \\\"\\\\f159\\\"; }\\n\\n.fa-krw::before {\\n content: \\\"\\\\f159\\\"; }\\n\\n.fa-won::before {\\n content: \\\"\\\\f159\\\"; }\\n\\n.fa-virus-covid::before {\\n content: \\\"\\\\e4a8\\\"; }\\n\\n.fa-austral-sign::before {\\n content: \\\"\\\\e0a9\\\"; }\\n\\n.fa-f::before {\\n content: \\\"\\\\46\\\"; }\\n\\n.fa-leaf::before {\\n content: \\\"\\\\f06c\\\"; }\\n\\n.fa-road::before {\\n content: \\\"\\\\f018\\\"; }\\n\\n.fa-taxi::before {\\n content: \\\"\\\\f1ba\\\"; }\\n\\n.fa-cab::before {\\n content: \\\"\\\\f1ba\\\"; }\\n\\n.fa-person-circle-plus::before {\\n content: \\\"\\\\e541\\\"; }\\n\\n.fa-chart-pie::before {\\n content: \\\"\\\\f200\\\"; }\\n\\n.fa-pie-chart::before {\\n content: \\\"\\\\f200\\\"; }\\n\\n.fa-bolt-lightning::before {\\n content: \\\"\\\\e0b7\\\"; }\\n\\n.fa-sack-xmark::before {\\n content: \\\"\\\\e56a\\\"; }\\n\\n.fa-file-excel::before {\\n content: \\\"\\\\f1c3\\\"; }\\n\\n.fa-file-contract::before {\\n content: \\\"\\\\f56c\\\"; }\\n\\n.fa-fish-fins::before {\\n content: \\\"\\\\e4f2\\\"; }\\n\\n.fa-building-flag::before {\\n content: \\\"\\\\e4d5\\\"; }\\n\\n.fa-face-grin-beam::before {\\n content: \\\"\\\\f582\\\"; }\\n\\n.fa-grin-beam::before {\\n content: \\\"\\\\f582\\\"; }\\n\\n.fa-object-ungroup::before {\\n content: \\\"\\\\f248\\\"; }\\n\\n.fa-poop::before {\\n content: \\\"\\\\f619\\\"; }\\n\\n.fa-location-pin::before {\\n content: \\\"\\\\f041\\\"; }\\n\\n.fa-map-marker::before {\\n content: \\\"\\\\f041\\\"; }\\n\\n.fa-kaaba::before {\\n content: \\\"\\\\f66b\\\"; }\\n\\n.fa-toilet-paper::before {\\n content: \\\"\\\\f71e\\\"; }\\n\\n.fa-helmet-safety::before {\\n content: \\\"\\\\f807\\\"; }\\n\\n.fa-hard-hat::before {\\n content: \\\"\\\\f807\\\"; }\\n\\n.fa-hat-hard::before {\\n content: \\\"\\\\f807\\\"; }\\n\\n.fa-eject::before {\\n content: \\\"\\\\f052\\\"; }\\n\\n.fa-circle-right::before {\\n content: \\\"\\\\f35a\\\"; }\\n\\n.fa-arrow-alt-circle-right::before {\\n content: \\\"\\\\f35a\\\"; }\\n\\n.fa-plane-circle-check::before {\\n content: \\\"\\\\e555\\\"; }\\n\\n.fa-face-rolling-eyes::before {\\n content: \\\"\\\\f5a5\\\"; }\\n\\n.fa-meh-rolling-eyes::before {\\n content: \\\"\\\\f5a5\\\"; }\\n\\n.fa-object-group::before {\\n content: \\\"\\\\f247\\\"; }\\n\\n.fa-chart-line::before {\\n content: \\\"\\\\f201\\\"; }\\n\\n.fa-line-chart::before {\\n content: \\\"\\\\f201\\\"; }\\n\\n.fa-mask-ventilator::before {\\n content: \\\"\\\\e524\\\"; }\\n\\n.fa-arrow-right::before {\\n content: \\\"\\\\f061\\\"; }\\n\\n.fa-signs-post::before {\\n content: \\\"\\\\f277\\\"; }\\n\\n.fa-map-signs::before {\\n content: \\\"\\\\f277\\\"; }\\n\\n.fa-cash-register::before {\\n content: \\\"\\\\f788\\\"; }\\n\\n.fa-person-circle-question::before {\\n content: \\\"\\\\e542\\\"; }\\n\\n.fa-h::before {\\n content: \\\"\\\\48\\\"; }\\n\\n.fa-tarp::before {\\n content: \\\"\\\\e57b\\\"; }\\n\\n.fa-screwdriver-wrench::before {\\n content: \\\"\\\\f7d9\\\"; }\\n\\n.fa-tools::before {\\n content: \\\"\\\\f7d9\\\"; }\\n\\n.fa-arrows-to-eye::before {\\n content: \\\"\\\\e4bf\\\"; }\\n\\n.fa-plug-circle-bolt::before {\\n content: \\\"\\\\e55b\\\"; }\\n\\n.fa-heart::before {\\n content: \\\"\\\\f004\\\"; }\\n\\n.fa-mars-and-venus::before {\\n content: \\\"\\\\f224\\\"; }\\n\\n.fa-house-user::before {\\n content: \\\"\\\\e1b0\\\"; }\\n\\n.fa-home-user::before {\\n content: \\\"\\\\e1b0\\\"; }\\n\\n.fa-dumpster-fire::before {\\n content: \\\"\\\\f794\\\"; }\\n\\n.fa-house-crack::before {\\n content: \\\"\\\\e3b1\\\"; }\\n\\n.fa-martini-glass-citrus::before {\\n content: \\\"\\\\f561\\\"; }\\n\\n.fa-cocktail::before {\\n content: \\\"\\\\f561\\\"; }\\n\\n.fa-face-surprise::before {\\n content: \\\"\\\\f5c2\\\"; }\\n\\n.fa-surprise::before {\\n content: \\\"\\\\f5c2\\\"; }\\n\\n.fa-bottle-water::before {\\n content: \\\"\\\\e4c5\\\"; }\\n\\n.fa-circle-pause::before {\\n content: \\\"\\\\f28b\\\"; }\\n\\n.fa-pause-circle::before {\\n content: \\\"\\\\f28b\\\"; }\\n\\n.fa-toilet-paper-slash::before {\\n content: \\\"\\\\e072\\\"; }\\n\\n.fa-apple-whole::before {\\n content: \\\"\\\\f5d1\\\"; }\\n\\n.fa-apple-alt::before {\\n content: \\\"\\\\f5d1\\\"; }\\n\\n.fa-kitchen-set::before {\\n content: \\\"\\\\e51a\\\"; }\\n\\n.fa-r::before {\\n content: \\\"\\\\52\\\"; }\\n\\n.fa-temperature-quarter::before {\\n content: \\\"\\\\f2ca\\\"; }\\n\\n.fa-temperature-1::before {\\n content: \\\"\\\\f2ca\\\"; }\\n\\n.fa-thermometer-1::before {\\n content: \\\"\\\\f2ca\\\"; }\\n\\n.fa-thermometer-quarter::before {\\n content: \\\"\\\\f2ca\\\"; }\\n\\n.fa-cube::before {\\n content: \\\"\\\\f1b2\\\"; }\\n\\n.fa-bitcoin-sign::before {\\n content: \\\"\\\\e0b4\\\"; }\\n\\n.fa-shield-dog::before {\\n content: \\\"\\\\e573\\\"; }\\n\\n.fa-solar-panel::before {\\n content: \\\"\\\\f5ba\\\"; }\\n\\n.fa-lock-open::before {\\n content: \\\"\\\\f3c1\\\"; }\\n\\n.fa-elevator::before {\\n content: \\\"\\\\e16d\\\"; }\\n\\n.fa-money-bill-transfer::before {\\n content: \\\"\\\\e528\\\"; }\\n\\n.fa-money-bill-trend-up::before {\\n content: \\\"\\\\e529\\\"; }\\n\\n.fa-house-flood-water-circle-arrow-right::before {\\n content: \\\"\\\\e50f\\\"; }\\n\\n.fa-square-poll-horizontal::before {\\n content: \\\"\\\\f682\\\"; }\\n\\n.fa-poll-h::before {\\n content: \\\"\\\\f682\\\"; }\\n\\n.fa-circle::before {\\n content: \\\"\\\\f111\\\"; }\\n\\n.fa-backward-fast::before {\\n content: \\\"\\\\f049\\\"; }\\n\\n.fa-fast-backward::before {\\n content: \\\"\\\\f049\\\"; }\\n\\n.fa-recycle::before {\\n content: \\\"\\\\f1b8\\\"; }\\n\\n.fa-user-astronaut::before {\\n content: \\\"\\\\f4fb\\\"; }\\n\\n.fa-plane-slash::before {\\n content: \\\"\\\\e069\\\"; }\\n\\n.fa-trademark::before {\\n content: \\\"\\\\f25c\\\"; }\\n\\n.fa-basketball::before {\\n content: \\\"\\\\f434\\\"; }\\n\\n.fa-basketball-ball::before {\\n content: \\\"\\\\f434\\\"; }\\n\\n.fa-satellite-dish::before {\\n content: \\\"\\\\f7c0\\\"; }\\n\\n.fa-circle-up::before {\\n content: \\\"\\\\f35b\\\"; }\\n\\n.fa-arrow-alt-circle-up::before {\\n content: \\\"\\\\f35b\\\"; }\\n\\n.fa-mobile-screen-button::before {\\n content: \\\"\\\\f3cd\\\"; }\\n\\n.fa-mobile-alt::before {\\n content: \\\"\\\\f3cd\\\"; }\\n\\n.fa-volume-high::before {\\n content: \\\"\\\\f028\\\"; }\\n\\n.fa-volume-up::before {\\n content: \\\"\\\\f028\\\"; }\\n\\n.fa-users-rays::before {\\n content: \\\"\\\\e593\\\"; }\\n\\n.fa-wallet::before {\\n content: \\\"\\\\f555\\\"; }\\n\\n.fa-clipboard-check::before {\\n content: \\\"\\\\f46c\\\"; }\\n\\n.fa-file-audio::before {\\n content: \\\"\\\\f1c7\\\"; }\\n\\n.fa-burger::before {\\n content: \\\"\\\\f805\\\"; }\\n\\n.fa-hamburger::before {\\n content: \\\"\\\\f805\\\"; }\\n\\n.fa-wrench::before {\\n content: \\\"\\\\f0ad\\\"; }\\n\\n.fa-bugs::before {\\n content: \\\"\\\\e4d0\\\"; }\\n\\n.fa-rupee-sign::before {\\n content: \\\"\\\\f156\\\"; }\\n\\n.fa-rupee::before {\\n content: \\\"\\\\f156\\\"; }\\n\\n.fa-file-image::before {\\n content: \\\"\\\\f1c5\\\"; }\\n\\n.fa-circle-question::before {\\n content: \\\"\\\\f059\\\"; }\\n\\n.fa-question-circle::before {\\n content: \\\"\\\\f059\\\"; }\\n\\n.fa-plane-departure::before {\\n content: \\\"\\\\f5b0\\\"; }\\n\\n.fa-handshake-slash::before {\\n content: \\\"\\\\e060\\\"; }\\n\\n.fa-book-bookmark::before {\\n content: \\\"\\\\e0bb\\\"; }\\n\\n.fa-code-branch::before {\\n content: \\\"\\\\f126\\\"; }\\n\\n.fa-hat-cowboy::before {\\n content: \\\"\\\\f8c0\\\"; }\\n\\n.fa-bridge::before {\\n content: \\\"\\\\e4c8\\\"; }\\n\\n.fa-phone-flip::before {\\n content: \\\"\\\\f879\\\"; }\\n\\n.fa-phone-alt::before {\\n content: \\\"\\\\f879\\\"; }\\n\\n.fa-truck-front::before {\\n content: \\\"\\\\e2b7\\\"; }\\n\\n.fa-cat::before {\\n content: \\\"\\\\f6be\\\"; }\\n\\n.fa-anchor-circle-exclamation::before {\\n content: \\\"\\\\e4ab\\\"; }\\n\\n.fa-truck-field::before {\\n content: \\\"\\\\e58d\\\"; }\\n\\n.fa-route::before {\\n content: \\\"\\\\f4d7\\\"; }\\n\\n.fa-clipboard-question::before {\\n content: \\\"\\\\e4e3\\\"; }\\n\\n.fa-panorama::before {\\n content: \\\"\\\\e209\\\"; }\\n\\n.fa-comment-medical::before {\\n content: \\\"\\\\f7f5\\\"; }\\n\\n.fa-teeth-open::before {\\n content: \\\"\\\\f62f\\\"; }\\n\\n.fa-file-circle-minus::before {\\n content: \\\"\\\\e4ed\\\"; }\\n\\n.fa-tags::before {\\n content: \\\"\\\\f02c\\\"; }\\n\\n.fa-wine-glass::before {\\n content: \\\"\\\\f4e3\\\"; }\\n\\n.fa-forward-fast::before {\\n content: \\\"\\\\f050\\\"; }\\n\\n.fa-fast-forward::before {\\n content: \\\"\\\\f050\\\"; }\\n\\n.fa-face-meh-blank::before {\\n content: \\\"\\\\f5a4\\\"; }\\n\\n.fa-meh-blank::before {\\n content: \\\"\\\\f5a4\\\"; }\\n\\n.fa-square-parking::before {\\n content: \\\"\\\\f540\\\"; }\\n\\n.fa-parking::before {\\n content: \\\"\\\\f540\\\"; }\\n\\n.fa-house-signal::before {\\n content: \\\"\\\\e012\\\"; }\\n\\n.fa-bars-progress::before {\\n content: \\\"\\\\f828\\\"; }\\n\\n.fa-tasks-alt::before {\\n content: \\\"\\\\f828\\\"; }\\n\\n.fa-faucet-drip::before {\\n content: \\\"\\\\e006\\\"; }\\n\\n.fa-cart-flatbed::before {\\n content: \\\"\\\\f474\\\"; }\\n\\n.fa-dolly-flatbed::before {\\n content: \\\"\\\\f474\\\"; }\\n\\n.fa-ban-smoking::before {\\n content: \\\"\\\\f54d\\\"; }\\n\\n.fa-smoking-ban::before {\\n content: \\\"\\\\f54d\\\"; }\\n\\n.fa-terminal::before {\\n content: \\\"\\\\f120\\\"; }\\n\\n.fa-mobile-button::before {\\n content: \\\"\\\\f10b\\\"; }\\n\\n.fa-house-medical-flag::before {\\n content: \\\"\\\\e514\\\"; }\\n\\n.fa-basket-shopping::before {\\n content: \\\"\\\\f291\\\"; }\\n\\n.fa-shopping-basket::before {\\n content: \\\"\\\\f291\\\"; }\\n\\n.fa-tape::before {\\n content: \\\"\\\\f4db\\\"; }\\n\\n.fa-bus-simple::before {\\n content: \\\"\\\\f55e\\\"; }\\n\\n.fa-bus-alt::before {\\n content: \\\"\\\\f55e\\\"; }\\n\\n.fa-eye::before {\\n content: \\\"\\\\f06e\\\"; }\\n\\n.fa-face-sad-cry::before {\\n content: \\\"\\\\f5b3\\\"; }\\n\\n.fa-sad-cry::before {\\n content: \\\"\\\\f5b3\\\"; }\\n\\n.fa-audio-description::before {\\n content: \\\"\\\\f29e\\\"; }\\n\\n.fa-person-military-to-person::before {\\n content: \\\"\\\\e54c\\\"; }\\n\\n.fa-file-shield::before {\\n content: \\\"\\\\e4f0\\\"; }\\n\\n.fa-user-slash::before {\\n content: \\\"\\\\f506\\\"; }\\n\\n.fa-pen::before {\\n content: \\\"\\\\f304\\\"; }\\n\\n.fa-tower-observation::before {\\n content: \\\"\\\\e586\\\"; }\\n\\n.fa-file-code::before {\\n content: \\\"\\\\f1c9\\\"; }\\n\\n.fa-signal::before {\\n content: \\\"\\\\f012\\\"; }\\n\\n.fa-signal-5::before {\\n content: \\\"\\\\f012\\\"; }\\n\\n.fa-signal-perfect::before {\\n content: \\\"\\\\f012\\\"; }\\n\\n.fa-bus::before {\\n content: \\\"\\\\f207\\\"; }\\n\\n.fa-heart-circle-xmark::before {\\n content: \\\"\\\\e501\\\"; }\\n\\n.fa-house-chimney::before {\\n content: \\\"\\\\e3af\\\"; }\\n\\n.fa-home-lg::before {\\n content: \\\"\\\\e3af\\\"; }\\n\\n.fa-window-maximize::before {\\n content: \\\"\\\\f2d0\\\"; }\\n\\n.fa-face-frown::before {\\n content: \\\"\\\\f119\\\"; }\\n\\n.fa-frown::before {\\n content: \\\"\\\\f119\\\"; }\\n\\n.fa-prescription::before {\\n content: \\\"\\\\f5b1\\\"; }\\n\\n.fa-shop::before {\\n content: \\\"\\\\f54f\\\"; }\\n\\n.fa-store-alt::before {\\n content: \\\"\\\\f54f\\\"; }\\n\\n.fa-floppy-disk::before {\\n content: \\\"\\\\f0c7\\\"; }\\n\\n.fa-save::before {\\n content: \\\"\\\\f0c7\\\"; }\\n\\n.fa-vihara::before {\\n content: \\\"\\\\f6a7\\\"; }\\n\\n.fa-scale-unbalanced::before {\\n content: \\\"\\\\f515\\\"; }\\n\\n.fa-balance-scale-left::before {\\n content: \\\"\\\\f515\\\"; }\\n\\n.fa-sort-up::before {\\n content: \\\"\\\\f0de\\\"; }\\n\\n.fa-sort-asc::before {\\n content: \\\"\\\\f0de\\\"; }\\n\\n.fa-comment-dots::before {\\n content: \\\"\\\\f4ad\\\"; }\\n\\n.fa-commenting::before {\\n content: \\\"\\\\f4ad\\\"; }\\n\\n.fa-plant-wilt::before {\\n content: \\\"\\\\e5aa\\\"; }\\n\\n.fa-diamond::before {\\n content: \\\"\\\\f219\\\"; }\\n\\n.fa-face-grin-squint::before {\\n content: \\\"\\\\f585\\\"; }\\n\\n.fa-grin-squint::before {\\n content: \\\"\\\\f585\\\"; }\\n\\n.fa-hand-holding-dollar::before {\\n content: \\\"\\\\f4c0\\\"; }\\n\\n.fa-hand-holding-usd::before {\\n content: \\\"\\\\f4c0\\\"; }\\n\\n.fa-bacterium::before {\\n content: \\\"\\\\e05a\\\"; }\\n\\n.fa-hand-pointer::before {\\n content: \\\"\\\\f25a\\\"; }\\n\\n.fa-drum-steelpan::before {\\n content: \\\"\\\\f56a\\\"; }\\n\\n.fa-hand-scissors::before {\\n content: \\\"\\\\f257\\\"; }\\n\\n.fa-hands-praying::before {\\n content: \\\"\\\\f684\\\"; }\\n\\n.fa-praying-hands::before {\\n content: \\\"\\\\f684\\\"; }\\n\\n.fa-arrow-rotate-right::before {\\n content: \\\"\\\\f01e\\\"; }\\n\\n.fa-arrow-right-rotate::before {\\n content: \\\"\\\\f01e\\\"; }\\n\\n.fa-arrow-rotate-forward::before {\\n content: \\\"\\\\f01e\\\"; }\\n\\n.fa-redo::before {\\n content: \\\"\\\\f01e\\\"; }\\n\\n.fa-biohazard::before {\\n content: \\\"\\\\f780\\\"; }\\n\\n.fa-location-crosshairs::before {\\n content: \\\"\\\\f601\\\"; }\\n\\n.fa-location::before {\\n content: \\\"\\\\f601\\\"; }\\n\\n.fa-mars-double::before {\\n content: \\\"\\\\f227\\\"; }\\n\\n.fa-child-dress::before {\\n content: \\\"\\\\e59c\\\"; }\\n\\n.fa-users-between-lines::before {\\n content: \\\"\\\\e591\\\"; }\\n\\n.fa-lungs-virus::before {\\n content: \\\"\\\\e067\\\"; }\\n\\n.fa-face-grin-tears::before {\\n content: \\\"\\\\f588\\\"; }\\n\\n.fa-grin-tears::before {\\n content: \\\"\\\\f588\\\"; }\\n\\n.fa-phone::before {\\n content: \\\"\\\\f095\\\"; }\\n\\n.fa-calendar-xmark::before {\\n content: \\\"\\\\f273\\\"; }\\n\\n.fa-calendar-times::before {\\n content: \\\"\\\\f273\\\"; }\\n\\n.fa-child-reaching::before {\\n content: \\\"\\\\e59d\\\"; }\\n\\n.fa-head-side-virus::before {\\n content: \\\"\\\\e064\\\"; }\\n\\n.fa-user-gear::before {\\n content: \\\"\\\\f4fe\\\"; }\\n\\n.fa-user-cog::before {\\n content: \\\"\\\\f4fe\\\"; }\\n\\n.fa-arrow-up-1-9::before {\\n content: \\\"\\\\f163\\\"; }\\n\\n.fa-sort-numeric-up::before {\\n content: \\\"\\\\f163\\\"; }\\n\\n.fa-door-closed::before {\\n content: \\\"\\\\f52a\\\"; }\\n\\n.fa-shield-virus::before {\\n content: \\\"\\\\e06c\\\"; }\\n\\n.fa-dice-six::before {\\n content: \\\"\\\\f526\\\"; }\\n\\n.fa-mosquito-net::before {\\n content: \\\"\\\\e52c\\\"; }\\n\\n.fa-bridge-water::before {\\n content: \\\"\\\\e4ce\\\"; }\\n\\n.fa-person-booth::before {\\n content: \\\"\\\\f756\\\"; }\\n\\n.fa-text-width::before {\\n content: \\\"\\\\f035\\\"; }\\n\\n.fa-hat-wizard::before {\\n content: \\\"\\\\f6e8\\\"; }\\n\\n.fa-pen-fancy::before {\\n content: \\\"\\\\f5ac\\\"; }\\n\\n.fa-person-digging::before {\\n content: \\\"\\\\f85e\\\"; }\\n\\n.fa-digging::before {\\n content: \\\"\\\\f85e\\\"; }\\n\\n.fa-trash::before {\\n content: \\\"\\\\f1f8\\\"; }\\n\\n.fa-gauge-simple::before {\\n content: \\\"\\\\f629\\\"; }\\n\\n.fa-gauge-simple-med::before {\\n content: \\\"\\\\f629\\\"; }\\n\\n.fa-tachometer-average::before {\\n content: \\\"\\\\f629\\\"; }\\n\\n.fa-book-medical::before {\\n content: \\\"\\\\f7e6\\\"; }\\n\\n.fa-poo::before {\\n content: \\\"\\\\f2fe\\\"; }\\n\\n.fa-quote-right::before {\\n content: \\\"\\\\f10e\\\"; }\\n\\n.fa-quote-right-alt::before {\\n content: \\\"\\\\f10e\\\"; }\\n\\n.fa-shirt::before {\\n content: \\\"\\\\f553\\\"; }\\n\\n.fa-t-shirt::before {\\n content: \\\"\\\\f553\\\"; }\\n\\n.fa-tshirt::before {\\n content: \\\"\\\\f553\\\"; }\\n\\n.fa-cubes::before {\\n content: \\\"\\\\f1b3\\\"; }\\n\\n.fa-divide::before {\\n content: \\\"\\\\f529\\\"; }\\n\\n.fa-tenge-sign::before {\\n content: \\\"\\\\f7d7\\\"; }\\n\\n.fa-tenge::before {\\n content: \\\"\\\\f7d7\\\"; }\\n\\n.fa-headphones::before {\\n content: \\\"\\\\f025\\\"; }\\n\\n.fa-hands-holding::before {\\n content: \\\"\\\\f4c2\\\"; }\\n\\n.fa-hands-clapping::before {\\n content: \\\"\\\\e1a8\\\"; }\\n\\n.fa-republican::before {\\n content: \\\"\\\\f75e\\\"; }\\n\\n.fa-arrow-left::before {\\n content: \\\"\\\\f060\\\"; }\\n\\n.fa-person-circle-xmark::before {\\n content: \\\"\\\\e543\\\"; }\\n\\n.fa-ruler::before {\\n content: \\\"\\\\f545\\\"; }\\n\\n.fa-align-left::before {\\n content: \\\"\\\\f036\\\"; }\\n\\n.fa-dice-d6::before {\\n content: \\\"\\\\f6d1\\\"; }\\n\\n.fa-restroom::before {\\n content: \\\"\\\\f7bd\\\"; }\\n\\n.fa-j::before {\\n content: \\\"\\\\4a\\\"; }\\n\\n.fa-users-viewfinder::before {\\n content: \\\"\\\\e595\\\"; }\\n\\n.fa-file-video::before {\\n content: \\\"\\\\f1c8\\\"; }\\n\\n.fa-up-right-from-square::before {\\n content: \\\"\\\\f35d\\\"; }\\n\\n.fa-external-link-alt::before {\\n content: \\\"\\\\f35d\\\"; }\\n\\n.fa-table-cells::before {\\n content: \\\"\\\\f00a\\\"; }\\n\\n.fa-th::before {\\n content: \\\"\\\\f00a\\\"; }\\n\\n.fa-file-pdf::before {\\n content: \\\"\\\\f1c1\\\"; }\\n\\n.fa-book-bible::before {\\n content: \\\"\\\\f647\\\"; }\\n\\n.fa-bible::before {\\n content: \\\"\\\\f647\\\"; }\\n\\n.fa-o::before {\\n content: \\\"\\\\4f\\\"; }\\n\\n.fa-suitcase-medical::before {\\n content: \\\"\\\\f0fa\\\"; }\\n\\n.fa-medkit::before {\\n content: \\\"\\\\f0fa\\\"; }\\n\\n.fa-user-secret::before {\\n content: \\\"\\\\f21b\\\"; }\\n\\n.fa-otter::before {\\n content: \\\"\\\\f700\\\"; }\\n\\n.fa-person-dress::before {\\n content: \\\"\\\\f182\\\"; }\\n\\n.fa-female::before {\\n content: \\\"\\\\f182\\\"; }\\n\\n.fa-comment-dollar::before {\\n content: \\\"\\\\f651\\\"; }\\n\\n.fa-business-time::before {\\n content: \\\"\\\\f64a\\\"; }\\n\\n.fa-briefcase-clock::before {\\n content: \\\"\\\\f64a\\\"; }\\n\\n.fa-table-cells-large::before {\\n content: \\\"\\\\f009\\\"; }\\n\\n.fa-th-large::before {\\n content: \\\"\\\\f009\\\"; }\\n\\n.fa-book-tanakh::before {\\n content: \\\"\\\\f827\\\"; }\\n\\n.fa-tanakh::before {\\n content: \\\"\\\\f827\\\"; }\\n\\n.fa-phone-volume::before {\\n content: \\\"\\\\f2a0\\\"; }\\n\\n.fa-volume-control-phone::before {\\n content: \\\"\\\\f2a0\\\"; }\\n\\n.fa-hat-cowboy-side::before {\\n content: \\\"\\\\f8c1\\\"; }\\n\\n.fa-clipboard-user::before {\\n content: \\\"\\\\f7f3\\\"; }\\n\\n.fa-child::before {\\n content: \\\"\\\\f1ae\\\"; }\\n\\n.fa-lira-sign::before {\\n content: \\\"\\\\f195\\\"; }\\n\\n.fa-satellite::before {\\n content: \\\"\\\\f7bf\\\"; }\\n\\n.fa-plane-lock::before {\\n content: \\\"\\\\e558\\\"; }\\n\\n.fa-tag::before {\\n content: \\\"\\\\f02b\\\"; }\\n\\n.fa-comment::before {\\n content: \\\"\\\\f075\\\"; }\\n\\n.fa-cake-candles::before {\\n content: \\\"\\\\f1fd\\\"; }\\n\\n.fa-birthday-cake::before {\\n content: \\\"\\\\f1fd\\\"; }\\n\\n.fa-cake::before {\\n content: \\\"\\\\f1fd\\\"; }\\n\\n.fa-envelope::before {\\n content: \\\"\\\\f0e0\\\"; }\\n\\n.fa-angles-up::before {\\n content: \\\"\\\\f102\\\"; }\\n\\n.fa-angle-double-up::before {\\n content: \\\"\\\\f102\\\"; }\\n\\n.fa-paperclip::before {\\n content: \\\"\\\\f0c6\\\"; }\\n\\n.fa-arrow-right-to-city::before {\\n content: \\\"\\\\e4b3\\\"; }\\n\\n.fa-ribbon::before {\\n content: \\\"\\\\f4d6\\\"; }\\n\\n.fa-lungs::before {\\n content: \\\"\\\\f604\\\"; }\\n\\n.fa-arrow-up-9-1::before {\\n content: \\\"\\\\f887\\\"; }\\n\\n.fa-sort-numeric-up-alt::before {\\n content: \\\"\\\\f887\\\"; }\\n\\n.fa-litecoin-sign::before {\\n content: \\\"\\\\e1d3\\\"; }\\n\\n.fa-border-none::before {\\n content: \\\"\\\\f850\\\"; }\\n\\n.fa-circle-nodes::before {\\n content: \\\"\\\\e4e2\\\"; }\\n\\n.fa-parachute-box::before {\\n content: \\\"\\\\f4cd\\\"; }\\n\\n.fa-indent::before {\\n content: \\\"\\\\f03c\\\"; }\\n\\n.fa-truck-field-un::before {\\n content: \\\"\\\\e58e\\\"; }\\n\\n.fa-hourglass::before {\\n content: \\\"\\\\f254\\\"; }\\n\\n.fa-hourglass-empty::before {\\n content: \\\"\\\\f254\\\"; }\\n\\n.fa-mountain::before {\\n content: \\\"\\\\f6fc\\\"; }\\n\\n.fa-user-doctor::before {\\n content: \\\"\\\\f0f0\\\"; }\\n\\n.fa-user-md::before {\\n content: \\\"\\\\f0f0\\\"; }\\n\\n.fa-circle-info::before {\\n content: \\\"\\\\f05a\\\"; }\\n\\n.fa-info-circle::before {\\n content: \\\"\\\\f05a\\\"; }\\n\\n.fa-cloud-meatball::before {\\n content: \\\"\\\\f73b\\\"; }\\n\\n.fa-camera::before {\\n content: \\\"\\\\f030\\\"; }\\n\\n.fa-camera-alt::before {\\n content: \\\"\\\\f030\\\"; }\\n\\n.fa-square-virus::before {\\n content: \\\"\\\\e578\\\"; }\\n\\n.fa-meteor::before {\\n content: \\\"\\\\f753\\\"; }\\n\\n.fa-car-on::before {\\n content: \\\"\\\\e4dd\\\"; }\\n\\n.fa-sleigh::before {\\n content: \\\"\\\\f7cc\\\"; }\\n\\n.fa-arrow-down-1-9::before {\\n content: \\\"\\\\f162\\\"; }\\n\\n.fa-sort-numeric-asc::before {\\n content: \\\"\\\\f162\\\"; }\\n\\n.fa-sort-numeric-down::before {\\n content: \\\"\\\\f162\\\"; }\\n\\n.fa-hand-holding-droplet::before {\\n content: \\\"\\\\f4c1\\\"; }\\n\\n.fa-hand-holding-water::before {\\n content: \\\"\\\\f4c1\\\"; }\\n\\n.fa-water::before {\\n content: \\\"\\\\f773\\\"; }\\n\\n.fa-calendar-check::before {\\n content: \\\"\\\\f274\\\"; }\\n\\n.fa-braille::before {\\n content: \\\"\\\\f2a1\\\"; }\\n\\n.fa-prescription-bottle-medical::before {\\n content: \\\"\\\\f486\\\"; }\\n\\n.fa-prescription-bottle-alt::before {\\n content: \\\"\\\\f486\\\"; }\\n\\n.fa-landmark::before {\\n content: \\\"\\\\f66f\\\"; }\\n\\n.fa-truck::before {\\n content: \\\"\\\\f0d1\\\"; }\\n\\n.fa-crosshairs::before {\\n content: \\\"\\\\f05b\\\"; }\\n\\n.fa-person-cane::before {\\n content: \\\"\\\\e53c\\\"; }\\n\\n.fa-tent::before {\\n content: \\\"\\\\e57d\\\"; }\\n\\n.fa-vest-patches::before {\\n content: \\\"\\\\e086\\\"; }\\n\\n.fa-check-double::before {\\n content: \\\"\\\\f560\\\"; }\\n\\n.fa-arrow-down-a-z::before {\\n content: \\\"\\\\f15d\\\"; }\\n\\n.fa-sort-alpha-asc::before {\\n content: \\\"\\\\f15d\\\"; }\\n\\n.fa-sort-alpha-down::before {\\n content: \\\"\\\\f15d\\\"; }\\n\\n.fa-money-bill-wheat::before {\\n content: \\\"\\\\e52a\\\"; }\\n\\n.fa-cookie::before {\\n content: \\\"\\\\f563\\\"; }\\n\\n.fa-arrow-rotate-left::before {\\n content: \\\"\\\\f0e2\\\"; }\\n\\n.fa-arrow-left-rotate::before {\\n content: \\\"\\\\f0e2\\\"; }\\n\\n.fa-arrow-rotate-back::before {\\n content: \\\"\\\\f0e2\\\"; }\\n\\n.fa-arrow-rotate-backward::before {\\n content: \\\"\\\\f0e2\\\"; }\\n\\n.fa-undo::before {\\n content: \\\"\\\\f0e2\\\"; }\\n\\n.fa-hard-drive::before {\\n content: \\\"\\\\f0a0\\\"; }\\n\\n.fa-hdd::before {\\n content: \\\"\\\\f0a0\\\"; }\\n\\n.fa-face-grin-squint-tears::before {\\n content: \\\"\\\\f586\\\"; }\\n\\n.fa-grin-squint-tears::before {\\n content: \\\"\\\\f586\\\"; }\\n\\n.fa-dumbbell::before {\\n content: \\\"\\\\f44b\\\"; }\\n\\n.fa-rectangle-list::before {\\n content: \\\"\\\\f022\\\"; }\\n\\n.fa-list-alt::before {\\n content: \\\"\\\\f022\\\"; }\\n\\n.fa-tarp-droplet::before {\\n content: \\\"\\\\e57c\\\"; }\\n\\n.fa-house-medical-circle-check::before {\\n content: \\\"\\\\e511\\\"; }\\n\\n.fa-person-skiing-nordic::before {\\n content: \\\"\\\\f7ca\\\"; }\\n\\n.fa-skiing-nordic::before {\\n content: \\\"\\\\f7ca\\\"; }\\n\\n.fa-calendar-plus::before {\\n content: \\\"\\\\f271\\\"; }\\n\\n.fa-plane-arrival::before {\\n content: \\\"\\\\f5af\\\"; }\\n\\n.fa-circle-left::before {\\n content: \\\"\\\\f359\\\"; }\\n\\n.fa-arrow-alt-circle-left::before {\\n content: \\\"\\\\f359\\\"; }\\n\\n.fa-train-subway::before {\\n content: \\\"\\\\f239\\\"; }\\n\\n.fa-subway::before {\\n content: \\\"\\\\f239\\\"; }\\n\\n.fa-chart-gantt::before {\\n content: \\\"\\\\e0e4\\\"; }\\n\\n.fa-indian-rupee-sign::before {\\n content: \\\"\\\\e1bc\\\"; }\\n\\n.fa-indian-rupee::before {\\n content: \\\"\\\\e1bc\\\"; }\\n\\n.fa-inr::before {\\n content: \\\"\\\\e1bc\\\"; }\\n\\n.fa-crop-simple::before {\\n content: \\\"\\\\f565\\\"; }\\n\\n.fa-crop-alt::before {\\n content: \\\"\\\\f565\\\"; }\\n\\n.fa-money-bill-1::before {\\n content: \\\"\\\\f3d1\\\"; }\\n\\n.fa-money-bill-alt::before {\\n content: \\\"\\\\f3d1\\\"; }\\n\\n.fa-left-long::before {\\n content: \\\"\\\\f30a\\\"; }\\n\\n.fa-long-arrow-alt-left::before {\\n content: \\\"\\\\f30a\\\"; }\\n\\n.fa-dna::before {\\n content: \\\"\\\\f471\\\"; }\\n\\n.fa-virus-slash::before {\\n content: \\\"\\\\e075\\\"; }\\n\\n.fa-minus::before {\\n content: \\\"\\\\f068\\\"; }\\n\\n.fa-subtract::before {\\n content: \\\"\\\\f068\\\"; }\\n\\n.fa-child-rifle::before {\\n content: \\\"\\\\e4e0\\\"; }\\n\\n.fa-chess::before {\\n content: \\\"\\\\f439\\\"; }\\n\\n.fa-arrow-left-long::before {\\n content: \\\"\\\\f177\\\"; }\\n\\n.fa-long-arrow-left::before {\\n content: \\\"\\\\f177\\\"; }\\n\\n.fa-plug-circle-check::before {\\n content: \\\"\\\\e55c\\\"; }\\n\\n.fa-street-view::before {\\n content: \\\"\\\\f21d\\\"; }\\n\\n.fa-franc-sign::before {\\n content: \\\"\\\\e18f\\\"; }\\n\\n.fa-volume-off::before {\\n content: \\\"\\\\f026\\\"; }\\n\\n.fa-hands-asl-interpreting::before {\\n content: \\\"\\\\f2a3\\\"; }\\n\\n.fa-american-sign-language-interpreting::before {\\n content: \\\"\\\\f2a3\\\"; }\\n\\n.fa-asl-interpreting::before {\\n content: \\\"\\\\f2a3\\\"; }\\n\\n.fa-hands-american-sign-language-interpreting::before {\\n content: \\\"\\\\f2a3\\\"; }\\n\\n.fa-gear::before {\\n content: \\\"\\\\f013\\\"; }\\n\\n.fa-cog::before {\\n content: \\\"\\\\f013\\\"; }\\n\\n.fa-droplet-slash::before {\\n content: \\\"\\\\f5c7\\\"; }\\n\\n.fa-tint-slash::before {\\n content: \\\"\\\\f5c7\\\"; }\\n\\n.fa-mosque::before {\\n content: \\\"\\\\f678\\\"; }\\n\\n.fa-mosquito::before {\\n content: \\\"\\\\e52b\\\"; }\\n\\n.fa-star-of-david::before {\\n content: \\\"\\\\f69a\\\"; }\\n\\n.fa-person-military-rifle::before {\\n content: \\\"\\\\e54b\\\"; }\\n\\n.fa-cart-shopping::before {\\n content: \\\"\\\\f07a\\\"; }\\n\\n.fa-shopping-cart::before {\\n content: \\\"\\\\f07a\\\"; }\\n\\n.fa-vials::before {\\n content: \\\"\\\\f493\\\"; }\\n\\n.fa-plug-circle-plus::before {\\n content: \\\"\\\\e55f\\\"; }\\n\\n.fa-place-of-worship::before {\\n content: \\\"\\\\f67f\\\"; }\\n\\n.fa-grip-vertical::before {\\n content: \\\"\\\\f58e\\\"; }\\n\\n.fa-arrow-turn-up::before {\\n content: \\\"\\\\f148\\\"; }\\n\\n.fa-level-up::before {\\n content: \\\"\\\\f148\\\"; }\\n\\n.fa-u::before {\\n content: \\\"\\\\55\\\"; }\\n\\n.fa-square-root-variable::before {\\n content: \\\"\\\\f698\\\"; }\\n\\n.fa-square-root-alt::before {\\n content: \\\"\\\\f698\\\"; }\\n\\n.fa-clock::before {\\n content: \\\"\\\\f017\\\"; }\\n\\n.fa-clock-four::before {\\n content: \\\"\\\\f017\\\"; }\\n\\n.fa-backward-step::before {\\n content: \\\"\\\\f048\\\"; }\\n\\n.fa-step-backward::before {\\n content: \\\"\\\\f048\\\"; }\\n\\n.fa-pallet::before {\\n content: \\\"\\\\f482\\\"; }\\n\\n.fa-faucet::before {\\n content: \\\"\\\\e005\\\"; }\\n\\n.fa-baseball-bat-ball::before {\\n content: \\\"\\\\f432\\\"; }\\n\\n.fa-s::before {\\n content: \\\"\\\\53\\\"; }\\n\\n.fa-timeline::before {\\n content: \\\"\\\\e29c\\\"; }\\n\\n.fa-keyboard::before {\\n content: \\\"\\\\f11c\\\"; }\\n\\n.fa-caret-down::before {\\n content: \\\"\\\\f0d7\\\"; }\\n\\n.fa-house-chimney-medical::before {\\n content: \\\"\\\\f7f2\\\"; }\\n\\n.fa-clinic-medical::before {\\n content: \\\"\\\\f7f2\\\"; }\\n\\n.fa-temperature-three-quarters::before {\\n content: \\\"\\\\f2c8\\\"; }\\n\\n.fa-temperature-3::before {\\n content: \\\"\\\\f2c8\\\"; }\\n\\n.fa-thermometer-3::before {\\n content: \\\"\\\\f2c8\\\"; }\\n\\n.fa-thermometer-three-quarters::before {\\n content: \\\"\\\\f2c8\\\"; }\\n\\n.fa-mobile-screen::before {\\n content: \\\"\\\\f3cf\\\"; }\\n\\n.fa-mobile-android-alt::before {\\n content: \\\"\\\\f3cf\\\"; }\\n\\n.fa-plane-up::before {\\n content: \\\"\\\\e22d\\\"; }\\n\\n.fa-piggy-bank::before {\\n content: \\\"\\\\f4d3\\\"; }\\n\\n.fa-battery-half::before {\\n content: \\\"\\\\f242\\\"; }\\n\\n.fa-battery-3::before {\\n content: \\\"\\\\f242\\\"; }\\n\\n.fa-mountain-city::before {\\n content: \\\"\\\\e52e\\\"; }\\n\\n.fa-coins::before {\\n content: \\\"\\\\f51e\\\"; }\\n\\n.fa-khanda::before {\\n content: \\\"\\\\f66d\\\"; }\\n\\n.fa-sliders::before {\\n content: \\\"\\\\f1de\\\"; }\\n\\n.fa-sliders-h::before {\\n content: \\\"\\\\f1de\\\"; }\\n\\n.fa-folder-tree::before {\\n content: \\\"\\\\f802\\\"; }\\n\\n.fa-network-wired::before {\\n content: \\\"\\\\f6ff\\\"; }\\n\\n.fa-map-pin::before {\\n content: \\\"\\\\f276\\\"; }\\n\\n.fa-hamsa::before {\\n content: \\\"\\\\f665\\\"; }\\n\\n.fa-cent-sign::before {\\n content: \\\"\\\\e3f5\\\"; }\\n\\n.fa-flask::before {\\n content: \\\"\\\\f0c3\\\"; }\\n\\n.fa-person-pregnant::before {\\n content: \\\"\\\\e31e\\\"; }\\n\\n.fa-wand-sparkles::before {\\n content: \\\"\\\\f72b\\\"; }\\n\\n.fa-ellipsis-vertical::before {\\n content: \\\"\\\\f142\\\"; }\\n\\n.fa-ellipsis-v::before {\\n content: \\\"\\\\f142\\\"; }\\n\\n.fa-ticket::before {\\n content: \\\"\\\\f145\\\"; }\\n\\n.fa-power-off::before {\\n content: \\\"\\\\f011\\\"; }\\n\\n.fa-right-long::before {\\n content: \\\"\\\\f30b\\\"; }\\n\\n.fa-long-arrow-alt-right::before {\\n content: \\\"\\\\f30b\\\"; }\\n\\n.fa-flag-usa::before {\\n content: \\\"\\\\f74d\\\"; }\\n\\n.fa-laptop-file::before {\\n content: \\\"\\\\e51d\\\"; }\\n\\n.fa-tty::before {\\n content: \\\"\\\\f1e4\\\"; }\\n\\n.fa-teletype::before {\\n content: \\\"\\\\f1e4\\\"; }\\n\\n.fa-diagram-next::before {\\n content: \\\"\\\\e476\\\"; }\\n\\n.fa-person-rifle::before {\\n content: \\\"\\\\e54e\\\"; }\\n\\n.fa-house-medical-circle-exclamation::before {\\n content: \\\"\\\\e512\\\"; }\\n\\n.fa-closed-captioning::before {\\n content: \\\"\\\\f20a\\\"; }\\n\\n.fa-person-hiking::before {\\n content: \\\"\\\\f6ec\\\"; }\\n\\n.fa-hiking::before {\\n content: \\\"\\\\f6ec\\\"; }\\n\\n.fa-venus-double::before {\\n content: \\\"\\\\f226\\\"; }\\n\\n.fa-images::before {\\n content: \\\"\\\\f302\\\"; }\\n\\n.fa-calculator::before {\\n content: \\\"\\\\f1ec\\\"; }\\n\\n.fa-people-pulling::before {\\n content: \\\"\\\\e535\\\"; }\\n\\n.fa-n::before {\\n content: \\\"\\\\4e\\\"; }\\n\\n.fa-cable-car::before {\\n content: \\\"\\\\f7da\\\"; }\\n\\n.fa-tram::before {\\n content: \\\"\\\\f7da\\\"; }\\n\\n.fa-cloud-rain::before {\\n content: \\\"\\\\f73d\\\"; }\\n\\n.fa-building-circle-xmark::before {\\n content: \\\"\\\\e4d4\\\"; }\\n\\n.fa-ship::before {\\n content: \\\"\\\\f21a\\\"; }\\n\\n.fa-arrows-down-to-line::before {\\n content: \\\"\\\\e4b8\\\"; }\\n\\n.fa-download::before {\\n content: \\\"\\\\f019\\\"; }\\n\\n.fa-face-grin::before {\\n content: \\\"\\\\f580\\\"; }\\n\\n.fa-grin::before {\\n content: \\\"\\\\f580\\\"; }\\n\\n.fa-delete-left::before {\\n content: \\\"\\\\f55a\\\"; }\\n\\n.fa-backspace::before {\\n content: \\\"\\\\f55a\\\"; }\\n\\n.fa-eye-dropper::before {\\n content: \\\"\\\\f1fb\\\"; }\\n\\n.fa-eye-dropper-empty::before {\\n content: \\\"\\\\f1fb\\\"; }\\n\\n.fa-eyedropper::before {\\n content: \\\"\\\\f1fb\\\"; }\\n\\n.fa-file-circle-check::before {\\n content: \\\"\\\\e5a0\\\"; }\\n\\n.fa-forward::before {\\n content: \\\"\\\\f04e\\\"; }\\n\\n.fa-mobile::before {\\n content: \\\"\\\\f3ce\\\"; }\\n\\n.fa-mobile-android::before {\\n content: \\\"\\\\f3ce\\\"; }\\n\\n.fa-mobile-phone::before {\\n content: \\\"\\\\f3ce\\\"; }\\n\\n.fa-face-meh::before {\\n content: \\\"\\\\f11a\\\"; }\\n\\n.fa-meh::before {\\n content: \\\"\\\\f11a\\\"; }\\n\\n.fa-align-center::before {\\n content: \\\"\\\\f037\\\"; }\\n\\n.fa-book-skull::before {\\n content: \\\"\\\\f6b7\\\"; }\\n\\n.fa-book-dead::before {\\n content: \\\"\\\\f6b7\\\"; }\\n\\n.fa-id-card::before {\\n content: \\\"\\\\f2c2\\\"; }\\n\\n.fa-drivers-license::before {\\n content: \\\"\\\\f2c2\\\"; }\\n\\n.fa-outdent::before {\\n content: \\\"\\\\f03b\\\"; }\\n\\n.fa-dedent::before {\\n content: \\\"\\\\f03b\\\"; }\\n\\n.fa-heart-circle-exclamation::before {\\n content: \\\"\\\\e4fe\\\"; }\\n\\n.fa-house::before {\\n content: \\\"\\\\f015\\\"; }\\n\\n.fa-home::before {\\n content: \\\"\\\\f015\\\"; }\\n\\n.fa-home-alt::before {\\n content: \\\"\\\\f015\\\"; }\\n\\n.fa-home-lg-alt::before {\\n content: \\\"\\\\f015\\\"; }\\n\\n.fa-calendar-week::before {\\n content: \\\"\\\\f784\\\"; }\\n\\n.fa-laptop-medical::before {\\n content: \\\"\\\\f812\\\"; }\\n\\n.fa-b::before {\\n content: \\\"\\\\42\\\"; }\\n\\n.fa-file-medical::before {\\n content: \\\"\\\\f477\\\"; }\\n\\n.fa-dice-one::before {\\n content: \\\"\\\\f525\\\"; }\\n\\n.fa-kiwi-bird::before {\\n content: \\\"\\\\f535\\\"; }\\n\\n.fa-arrow-right-arrow-left::before {\\n content: \\\"\\\\f0ec\\\"; }\\n\\n.fa-exchange::before {\\n content: \\\"\\\\f0ec\\\"; }\\n\\n.fa-rotate-right::before {\\n content: \\\"\\\\f2f9\\\"; }\\n\\n.fa-redo-alt::before {\\n content: \\\"\\\\f2f9\\\"; }\\n\\n.fa-rotate-forward::before {\\n content: \\\"\\\\f2f9\\\"; }\\n\\n.fa-utensils::before {\\n content: \\\"\\\\f2e7\\\"; }\\n\\n.fa-cutlery::before {\\n content: \\\"\\\\f2e7\\\"; }\\n\\n.fa-arrow-up-wide-short::before {\\n content: \\\"\\\\f161\\\"; }\\n\\n.fa-sort-amount-up::before {\\n content: \\\"\\\\f161\\\"; }\\n\\n.fa-mill-sign::before {\\n content: \\\"\\\\e1ed\\\"; }\\n\\n.fa-bowl-rice::before {\\n content: \\\"\\\\e2eb\\\"; }\\n\\n.fa-skull::before {\\n content: \\\"\\\\f54c\\\"; }\\n\\n.fa-tower-broadcast::before {\\n content: \\\"\\\\f519\\\"; }\\n\\n.fa-broadcast-tower::before {\\n content: \\\"\\\\f519\\\"; }\\n\\n.fa-truck-pickup::before {\\n content: \\\"\\\\f63c\\\"; }\\n\\n.fa-up-long::before {\\n content: \\\"\\\\f30c\\\"; }\\n\\n.fa-long-arrow-alt-up::before {\\n content: \\\"\\\\f30c\\\"; }\\n\\n.fa-stop::before {\\n content: \\\"\\\\f04d\\\"; }\\n\\n.fa-code-merge::before {\\n content: \\\"\\\\f387\\\"; }\\n\\n.fa-upload::before {\\n content: \\\"\\\\f093\\\"; }\\n\\n.fa-hurricane::before {\\n content: \\\"\\\\f751\\\"; }\\n\\n.fa-mound::before {\\n content: \\\"\\\\e52d\\\"; }\\n\\n.fa-toilet-portable::before {\\n content: \\\"\\\\e583\\\"; }\\n\\n.fa-compact-disc::before {\\n content: \\\"\\\\f51f\\\"; }\\n\\n.fa-file-arrow-down::before {\\n content: \\\"\\\\f56d\\\"; }\\n\\n.fa-file-download::before {\\n content: \\\"\\\\f56d\\\"; }\\n\\n.fa-caravan::before {\\n content: \\\"\\\\f8ff\\\"; }\\n\\n.fa-shield-cat::before {\\n content: \\\"\\\\e572\\\"; }\\n\\n.fa-bolt::before {\\n content: \\\"\\\\f0e7\\\"; }\\n\\n.fa-zap::before {\\n content: \\\"\\\\f0e7\\\"; }\\n\\n.fa-glass-water::before {\\n content: \\\"\\\\e4f4\\\"; }\\n\\n.fa-oil-well::before {\\n content: \\\"\\\\e532\\\"; }\\n\\n.fa-vault::before {\\n content: \\\"\\\\e2c5\\\"; }\\n\\n.fa-mars::before {\\n content: \\\"\\\\f222\\\"; }\\n\\n.fa-toilet::before {\\n content: \\\"\\\\f7d8\\\"; }\\n\\n.fa-plane-circle-xmark::before {\\n content: \\\"\\\\e557\\\"; }\\n\\n.fa-yen-sign::before {\\n content: \\\"\\\\f157\\\"; }\\n\\n.fa-cny::before {\\n content: \\\"\\\\f157\\\"; }\\n\\n.fa-jpy::before {\\n content: \\\"\\\\f157\\\"; }\\n\\n.fa-rmb::before {\\n content: \\\"\\\\f157\\\"; }\\n\\n.fa-yen::before {\\n content: \\\"\\\\f157\\\"; }\\n\\n.fa-ruble-sign::before {\\n content: \\\"\\\\f158\\\"; }\\n\\n.fa-rouble::before {\\n content: \\\"\\\\f158\\\"; }\\n\\n.fa-rub::before {\\n content: \\\"\\\\f158\\\"; }\\n\\n.fa-ruble::before {\\n content: \\\"\\\\f158\\\"; }\\n\\n.fa-sun::before {\\n content: \\\"\\\\f185\\\"; }\\n\\n.fa-guitar::before {\\n content: \\\"\\\\f7a6\\\"; }\\n\\n.fa-face-laugh-wink::before {\\n content: \\\"\\\\f59c\\\"; }\\n\\n.fa-laugh-wink::before {\\n content: \\\"\\\\f59c\\\"; }\\n\\n.fa-horse-head::before {\\n content: \\\"\\\\f7ab\\\"; }\\n\\n.fa-bore-hole::before {\\n content: \\\"\\\\e4c3\\\"; }\\n\\n.fa-industry::before {\\n content: \\\"\\\\f275\\\"; }\\n\\n.fa-circle-down::before {\\n content: \\\"\\\\f358\\\"; }\\n\\n.fa-arrow-alt-circle-down::before {\\n content: \\\"\\\\f358\\\"; }\\n\\n.fa-arrows-turn-to-dots::before {\\n content: \\\"\\\\e4c1\\\"; }\\n\\n.fa-florin-sign::before {\\n content: \\\"\\\\e184\\\"; }\\n\\n.fa-arrow-down-short-wide::before {\\n content: \\\"\\\\f884\\\"; }\\n\\n.fa-sort-amount-desc::before {\\n content: \\\"\\\\f884\\\"; }\\n\\n.fa-sort-amount-down-alt::before {\\n content: \\\"\\\\f884\\\"; }\\n\\n.fa-less-than::before {\\n content: \\\"\\\\3c\\\"; }\\n\\n.fa-angle-down::before {\\n content: \\\"\\\\f107\\\"; }\\n\\n.fa-car-tunnel::before {\\n content: \\\"\\\\e4de\\\"; }\\n\\n.fa-head-side-cough::before {\\n content: \\\"\\\\e061\\\"; }\\n\\n.fa-grip-lines::before {\\n content: \\\"\\\\f7a4\\\"; }\\n\\n.fa-thumbs-down::before {\\n content: \\\"\\\\f165\\\"; }\\n\\n.fa-user-lock::before {\\n content: \\\"\\\\f502\\\"; }\\n\\n.fa-arrow-right-long::before {\\n content: \\\"\\\\f178\\\"; }\\n\\n.fa-long-arrow-right::before {\\n content: \\\"\\\\f178\\\"; }\\n\\n.fa-anchor-circle-xmark::before {\\n content: \\\"\\\\e4ac\\\"; }\\n\\n.fa-ellipsis::before {\\n content: \\\"\\\\f141\\\"; }\\n\\n.fa-ellipsis-h::before {\\n content: \\\"\\\\f141\\\"; }\\n\\n.fa-chess-pawn::before {\\n content: \\\"\\\\f443\\\"; }\\n\\n.fa-kit-medical::before {\\n content: \\\"\\\\f479\\\"; }\\n\\n.fa-first-aid::before {\\n content: \\\"\\\\f479\\\"; }\\n\\n.fa-person-through-window::before {\\n content: \\\"\\\\e5a9\\\"; }\\n\\n.fa-toolbox::before {\\n content: \\\"\\\\f552\\\"; }\\n\\n.fa-hands-holding-circle::before {\\n content: \\\"\\\\e4fb\\\"; }\\n\\n.fa-bug::before {\\n content: \\\"\\\\f188\\\"; }\\n\\n.fa-credit-card::before {\\n content: \\\"\\\\f09d\\\"; }\\n\\n.fa-credit-card-alt::before {\\n content: \\\"\\\\f09d\\\"; }\\n\\n.fa-car::before {\\n content: \\\"\\\\f1b9\\\"; }\\n\\n.fa-automobile::before {\\n content: \\\"\\\\f1b9\\\"; }\\n\\n.fa-hand-holding-hand::before {\\n content: \\\"\\\\e4f7\\\"; }\\n\\n.fa-book-open-reader::before {\\n content: \\\"\\\\f5da\\\"; }\\n\\n.fa-book-reader::before {\\n content: \\\"\\\\f5da\\\"; }\\n\\n.fa-mountain-sun::before {\\n content: \\\"\\\\e52f\\\"; }\\n\\n.fa-arrows-left-right-to-line::before {\\n content: \\\"\\\\e4ba\\\"; }\\n\\n.fa-dice-d20::before {\\n content: \\\"\\\\f6cf\\\"; }\\n\\n.fa-truck-droplet::before {\\n content: \\\"\\\\e58c\\\"; }\\n\\n.fa-file-circle-xmark::before {\\n content: \\\"\\\\e5a1\\\"; }\\n\\n.fa-temperature-arrow-up::before {\\n content: \\\"\\\\e040\\\"; }\\n\\n.fa-temperature-up::before {\\n content: \\\"\\\\e040\\\"; }\\n\\n.fa-medal::before {\\n content: \\\"\\\\f5a2\\\"; }\\n\\n.fa-bed::before {\\n content: \\\"\\\\f236\\\"; }\\n\\n.fa-square-h::before {\\n content: \\\"\\\\f0fd\\\"; }\\n\\n.fa-h-square::before {\\n content: \\\"\\\\f0fd\\\"; }\\n\\n.fa-podcast::before {\\n content: \\\"\\\\f2ce\\\"; }\\n\\n.fa-temperature-full::before {\\n content: \\\"\\\\f2c7\\\"; }\\n\\n.fa-temperature-4::before {\\n content: \\\"\\\\f2c7\\\"; }\\n\\n.fa-thermometer-4::before {\\n content: \\\"\\\\f2c7\\\"; }\\n\\n.fa-thermometer-full::before {\\n content: \\\"\\\\f2c7\\\"; }\\n\\n.fa-bell::before {\\n content: \\\"\\\\f0f3\\\"; }\\n\\n.fa-superscript::before {\\n content: \\\"\\\\f12b\\\"; }\\n\\n.fa-plug-circle-xmark::before {\\n content: \\\"\\\\e560\\\"; }\\n\\n.fa-star-of-life::before {\\n content: \\\"\\\\f621\\\"; }\\n\\n.fa-phone-slash::before {\\n content: \\\"\\\\f3dd\\\"; }\\n\\n.fa-paint-roller::before {\\n content: \\\"\\\\f5aa\\\"; }\\n\\n.fa-handshake-angle::before {\\n content: \\\"\\\\f4c4\\\"; }\\n\\n.fa-hands-helping::before {\\n content: \\\"\\\\f4c4\\\"; }\\n\\n.fa-location-dot::before {\\n content: \\\"\\\\f3c5\\\"; }\\n\\n.fa-map-marker-alt::before {\\n content: \\\"\\\\f3c5\\\"; }\\n\\n.fa-file::before {\\n content: \\\"\\\\f15b\\\"; }\\n\\n.fa-greater-than::before {\\n content: \\\"\\\\3e\\\"; }\\n\\n.fa-person-swimming::before {\\n content: \\\"\\\\f5c4\\\"; }\\n\\n.fa-swimmer::before {\\n content: \\\"\\\\f5c4\\\"; }\\n\\n.fa-arrow-down::before {\\n content: \\\"\\\\f063\\\"; }\\n\\n.fa-droplet::before {\\n content: \\\"\\\\f043\\\"; }\\n\\n.fa-tint::before {\\n content: \\\"\\\\f043\\\"; }\\n\\n.fa-eraser::before {\\n content: \\\"\\\\f12d\\\"; }\\n\\n.fa-earth-americas::before {\\n content: \\\"\\\\f57d\\\"; }\\n\\n.fa-earth::before {\\n content: \\\"\\\\f57d\\\"; }\\n\\n.fa-earth-america::before {\\n content: \\\"\\\\f57d\\\"; }\\n\\n.fa-globe-americas::before {\\n content: \\\"\\\\f57d\\\"; }\\n\\n.fa-person-burst::before {\\n content: \\\"\\\\e53b\\\"; }\\n\\n.fa-dove::before {\\n content: \\\"\\\\f4ba\\\"; }\\n\\n.fa-battery-empty::before {\\n content: \\\"\\\\f244\\\"; }\\n\\n.fa-battery-0::before {\\n content: \\\"\\\\f244\\\"; }\\n\\n.fa-socks::before {\\n content: \\\"\\\\f696\\\"; }\\n\\n.fa-inbox::before {\\n content: \\\"\\\\f01c\\\"; }\\n\\n.fa-section::before {\\n content: \\\"\\\\e447\\\"; }\\n\\n.fa-gauge-high::before {\\n content: \\\"\\\\f625\\\"; }\\n\\n.fa-tachometer-alt::before {\\n content: \\\"\\\\f625\\\"; }\\n\\n.fa-tachometer-alt-fast::before {\\n content: \\\"\\\\f625\\\"; }\\n\\n.fa-envelope-open-text::before {\\n content: \\\"\\\\f658\\\"; }\\n\\n.fa-hospital::before {\\n content: \\\"\\\\f0f8\\\"; }\\n\\n.fa-hospital-alt::before {\\n content: \\\"\\\\f0f8\\\"; }\\n\\n.fa-hospital-wide::before {\\n content: \\\"\\\\f0f8\\\"; }\\n\\n.fa-wine-bottle::before {\\n content: \\\"\\\\f72f\\\"; }\\n\\n.fa-chess-rook::before {\\n content: \\\"\\\\f447\\\"; }\\n\\n.fa-bars-staggered::before {\\n content: \\\"\\\\f550\\\"; }\\n\\n.fa-reorder::before {\\n content: \\\"\\\\f550\\\"; }\\n\\n.fa-stream::before {\\n content: \\\"\\\\f550\\\"; }\\n\\n.fa-dharmachakra::before {\\n content: \\\"\\\\f655\\\"; }\\n\\n.fa-hotdog::before {\\n content: \\\"\\\\f80f\\\"; }\\n\\n.fa-person-walking-with-cane::before {\\n content: \\\"\\\\f29d\\\"; }\\n\\n.fa-blind::before {\\n content: \\\"\\\\f29d\\\"; }\\n\\n.fa-drum::before {\\n content: \\\"\\\\f569\\\"; }\\n\\n.fa-ice-cream::before {\\n content: \\\"\\\\f810\\\"; }\\n\\n.fa-heart-circle-bolt::before {\\n content: \\\"\\\\e4fc\\\"; }\\n\\n.fa-fax::before {\\n content: \\\"\\\\f1ac\\\"; }\\n\\n.fa-paragraph::before {\\n content: \\\"\\\\f1dd\\\"; }\\n\\n.fa-check-to-slot::before {\\n content: \\\"\\\\f772\\\"; }\\n\\n.fa-vote-yea::before {\\n content: \\\"\\\\f772\\\"; }\\n\\n.fa-star-half::before {\\n content: \\\"\\\\f089\\\"; }\\n\\n.fa-boxes-stacked::before {\\n content: \\\"\\\\f468\\\"; }\\n\\n.fa-boxes::before {\\n content: \\\"\\\\f468\\\"; }\\n\\n.fa-boxes-alt::before {\\n content: \\\"\\\\f468\\\"; }\\n\\n.fa-link::before {\\n content: \\\"\\\\f0c1\\\"; }\\n\\n.fa-chain::before {\\n content: \\\"\\\\f0c1\\\"; }\\n\\n.fa-ear-listen::before {\\n content: \\\"\\\\f2a2\\\"; }\\n\\n.fa-assistive-listening-systems::before {\\n content: \\\"\\\\f2a2\\\"; }\\n\\n.fa-tree-city::before {\\n content: \\\"\\\\e587\\\"; }\\n\\n.fa-play::before {\\n content: \\\"\\\\f04b\\\"; }\\n\\n.fa-font::before {\\n content: \\\"\\\\f031\\\"; }\\n\\n.fa-rupiah-sign::before {\\n content: \\\"\\\\e23d\\\"; }\\n\\n.fa-magnifying-glass::before {\\n content: \\\"\\\\f002\\\"; }\\n\\n.fa-search::before {\\n content: \\\"\\\\f002\\\"; }\\n\\n.fa-table-tennis-paddle-ball::before {\\n content: \\\"\\\\f45d\\\"; }\\n\\n.fa-ping-pong-paddle-ball::before {\\n content: \\\"\\\\f45d\\\"; }\\n\\n.fa-table-tennis::before {\\n content: \\\"\\\\f45d\\\"; }\\n\\n.fa-person-dots-from-line::before {\\n content: \\\"\\\\f470\\\"; }\\n\\n.fa-diagnoses::before {\\n content: \\\"\\\\f470\\\"; }\\n\\n.fa-trash-can-arrow-up::before {\\n content: \\\"\\\\f82a\\\"; }\\n\\n.fa-trash-restore-alt::before {\\n content: \\\"\\\\f82a\\\"; }\\n\\n.fa-naira-sign::before {\\n content: \\\"\\\\e1f6\\\"; }\\n\\n.fa-cart-arrow-down::before {\\n content: \\\"\\\\f218\\\"; }\\n\\n.fa-walkie-talkie::before {\\n content: \\\"\\\\f8ef\\\"; }\\n\\n.fa-file-pen::before {\\n content: \\\"\\\\f31c\\\"; }\\n\\n.fa-file-edit::before {\\n content: \\\"\\\\f31c\\\"; }\\n\\n.fa-receipt::before {\\n content: \\\"\\\\f543\\\"; }\\n\\n.fa-square-pen::before {\\n content: \\\"\\\\f14b\\\"; }\\n\\n.fa-pen-square::before {\\n content: \\\"\\\\f14b\\\"; }\\n\\n.fa-pencil-square::before {\\n content: \\\"\\\\f14b\\\"; }\\n\\n.fa-suitcase-rolling::before {\\n content: \\\"\\\\f5c1\\\"; }\\n\\n.fa-person-circle-exclamation::before {\\n content: \\\"\\\\e53f\\\"; }\\n\\n.fa-chevron-down::before {\\n content: \\\"\\\\f078\\\"; }\\n\\n.fa-battery-full::before {\\n content: \\\"\\\\f240\\\"; }\\n\\n.fa-battery::before {\\n content: \\\"\\\\f240\\\"; }\\n\\n.fa-battery-5::before {\\n content: \\\"\\\\f240\\\"; }\\n\\n.fa-skull-crossbones::before {\\n content: \\\"\\\\f714\\\"; }\\n\\n.fa-code-compare::before {\\n content: \\\"\\\\e13a\\\"; }\\n\\n.fa-list-ul::before {\\n content: \\\"\\\\f0ca\\\"; }\\n\\n.fa-list-dots::before {\\n content: \\\"\\\\f0ca\\\"; }\\n\\n.fa-school-lock::before {\\n content: \\\"\\\\e56f\\\"; }\\n\\n.fa-tower-cell::before {\\n content: \\\"\\\\e585\\\"; }\\n\\n.fa-down-long::before {\\n content: \\\"\\\\f309\\\"; }\\n\\n.fa-long-arrow-alt-down::before {\\n content: \\\"\\\\f309\\\"; }\\n\\n.fa-ranking-star::before {\\n content: \\\"\\\\e561\\\"; }\\n\\n.fa-chess-king::before {\\n content: \\\"\\\\f43f\\\"; }\\n\\n.fa-person-harassing::before {\\n content: \\\"\\\\e549\\\"; }\\n\\n.fa-brazilian-real-sign::before {\\n content: \\\"\\\\e46c\\\"; }\\n\\n.fa-landmark-dome::before {\\n content: \\\"\\\\f752\\\"; }\\n\\n.fa-landmark-alt::before {\\n content: \\\"\\\\f752\\\"; }\\n\\n.fa-arrow-up::before {\\n content: \\\"\\\\f062\\\"; }\\n\\n.fa-tv::before {\\n content: \\\"\\\\f26c\\\"; }\\n\\n.fa-television::before {\\n content: \\\"\\\\f26c\\\"; }\\n\\n.fa-tv-alt::before {\\n content: \\\"\\\\f26c\\\"; }\\n\\n.fa-shrimp::before {\\n content: \\\"\\\\e448\\\"; }\\n\\n.fa-list-check::before {\\n content: \\\"\\\\f0ae\\\"; }\\n\\n.fa-tasks::before {\\n content: \\\"\\\\f0ae\\\"; }\\n\\n.fa-jug-detergent::before {\\n content: \\\"\\\\e519\\\"; }\\n\\n.fa-circle-user::before {\\n content: \\\"\\\\f2bd\\\"; }\\n\\n.fa-user-circle::before {\\n content: \\\"\\\\f2bd\\\"; }\\n\\n.fa-user-shield::before {\\n content: \\\"\\\\f505\\\"; }\\n\\n.fa-wind::before {\\n content: \\\"\\\\f72e\\\"; }\\n\\n.fa-car-burst::before {\\n content: \\\"\\\\f5e1\\\"; }\\n\\n.fa-car-crash::before {\\n content: \\\"\\\\f5e1\\\"; }\\n\\n.fa-y::before {\\n content: \\\"\\\\59\\\"; }\\n\\n.fa-person-snowboarding::before {\\n content: \\\"\\\\f7ce\\\"; }\\n\\n.fa-snowboarding::before {\\n content: \\\"\\\\f7ce\\\"; }\\n\\n.fa-truck-fast::before {\\n content: \\\"\\\\f48b\\\"; }\\n\\n.fa-shipping-fast::before {\\n content: \\\"\\\\f48b\\\"; }\\n\\n.fa-fish::before {\\n content: \\\"\\\\f578\\\"; }\\n\\n.fa-user-graduate::before {\\n content: \\\"\\\\f501\\\"; }\\n\\n.fa-circle-half-stroke::before {\\n content: \\\"\\\\f042\\\"; }\\n\\n.fa-adjust::before {\\n content: \\\"\\\\f042\\\"; }\\n\\n.fa-clapperboard::before {\\n content: \\\"\\\\e131\\\"; }\\n\\n.fa-circle-radiation::before {\\n content: \\\"\\\\f7ba\\\"; }\\n\\n.fa-radiation-alt::before {\\n content: \\\"\\\\f7ba\\\"; }\\n\\n.fa-baseball::before {\\n content: \\\"\\\\f433\\\"; }\\n\\n.fa-baseball-ball::before {\\n content: \\\"\\\\f433\\\"; }\\n\\n.fa-jet-fighter-up::before {\\n content: \\\"\\\\e518\\\"; }\\n\\n.fa-diagram-project::before {\\n content: \\\"\\\\f542\\\"; }\\n\\n.fa-project-diagram::before {\\n content: \\\"\\\\f542\\\"; }\\n\\n.fa-copy::before {\\n content: \\\"\\\\f0c5\\\"; }\\n\\n.fa-volume-xmark::before {\\n content: \\\"\\\\f6a9\\\"; }\\n\\n.fa-volume-mute::before {\\n content: \\\"\\\\f6a9\\\"; }\\n\\n.fa-volume-times::before {\\n content: \\\"\\\\f6a9\\\"; }\\n\\n.fa-hand-sparkles::before {\\n content: \\\"\\\\e05d\\\"; }\\n\\n.fa-grip::before {\\n content: \\\"\\\\f58d\\\"; }\\n\\n.fa-grip-horizontal::before {\\n content: \\\"\\\\f58d\\\"; }\\n\\n.fa-share-from-square::before {\\n content: \\\"\\\\f14d\\\"; }\\n\\n.fa-share-square::before {\\n content: \\\"\\\\f14d\\\"; }\\n\\n.fa-gun::before {\\n content: \\\"\\\\e19b\\\"; }\\n\\n.fa-square-phone::before {\\n content: \\\"\\\\f098\\\"; }\\n\\n.fa-phone-square::before {\\n content: \\\"\\\\f098\\\"; }\\n\\n.fa-plus::before {\\n content: \\\"\\\\2b\\\"; }\\n\\n.fa-add::before {\\n content: \\\"\\\\2b\\\"; }\\n\\n.fa-expand::before {\\n content: \\\"\\\\f065\\\"; }\\n\\n.fa-computer::before {\\n content: \\\"\\\\e4e5\\\"; }\\n\\n.fa-xmark::before {\\n content: \\\"\\\\f00d\\\"; }\\n\\n.fa-close::before {\\n content: \\\"\\\\f00d\\\"; }\\n\\n.fa-multiply::before {\\n content: \\\"\\\\f00d\\\"; }\\n\\n.fa-remove::before {\\n content: \\\"\\\\f00d\\\"; }\\n\\n.fa-times::before {\\n content: \\\"\\\\f00d\\\"; }\\n\\n.fa-arrows-up-down-left-right::before {\\n content: \\\"\\\\f047\\\"; }\\n\\n.fa-arrows::before {\\n content: \\\"\\\\f047\\\"; }\\n\\n.fa-chalkboard-user::before {\\n content: \\\"\\\\f51c\\\"; }\\n\\n.fa-chalkboard-teacher::before {\\n content: \\\"\\\\f51c\\\"; }\\n\\n.fa-peso-sign::before {\\n content: \\\"\\\\e222\\\"; }\\n\\n.fa-building-shield::before {\\n content: \\\"\\\\e4d8\\\"; }\\n\\n.fa-baby::before {\\n content: \\\"\\\\f77c\\\"; }\\n\\n.fa-users-line::before {\\n content: \\\"\\\\e592\\\"; }\\n\\n.fa-quote-left::before {\\n content: \\\"\\\\f10d\\\"; }\\n\\n.fa-quote-left-alt::before {\\n content: \\\"\\\\f10d\\\"; }\\n\\n.fa-tractor::before {\\n content: \\\"\\\\f722\\\"; }\\n\\n.fa-trash-arrow-up::before {\\n content: \\\"\\\\f829\\\"; }\\n\\n.fa-trash-restore::before {\\n content: \\\"\\\\f829\\\"; }\\n\\n.fa-arrow-down-up-lock::before {\\n content: \\\"\\\\e4b0\\\"; }\\n\\n.fa-lines-leaning::before {\\n content: \\\"\\\\e51e\\\"; }\\n\\n.fa-ruler-combined::before {\\n content: \\\"\\\\f546\\\"; }\\n\\n.fa-copyright::before {\\n content: \\\"\\\\f1f9\\\"; }\\n\\n.fa-equals::before {\\n content: \\\"\\\\3d\\\"; }\\n\\n.fa-blender::before {\\n content: \\\"\\\\f517\\\"; }\\n\\n.fa-teeth::before {\\n content: \\\"\\\\f62e\\\"; }\\n\\n.fa-shekel-sign::before {\\n content: \\\"\\\\f20b\\\"; }\\n\\n.fa-ils::before {\\n content: \\\"\\\\f20b\\\"; }\\n\\n.fa-shekel::before {\\n content: \\\"\\\\f20b\\\"; }\\n\\n.fa-sheqel::before {\\n content: \\\"\\\\f20b\\\"; }\\n\\n.fa-sheqel-sign::before {\\n content: \\\"\\\\f20b\\\"; }\\n\\n.fa-map::before {\\n content: \\\"\\\\f279\\\"; }\\n\\n.fa-rocket::before {\\n content: \\\"\\\\f135\\\"; }\\n\\n.fa-photo-film::before {\\n content: \\\"\\\\f87c\\\"; }\\n\\n.fa-photo-video::before {\\n content: \\\"\\\\f87c\\\"; }\\n\\n.fa-folder-minus::before {\\n content: \\\"\\\\f65d\\\"; }\\n\\n.fa-store::before {\\n content: \\\"\\\\f54e\\\"; }\\n\\n.fa-arrow-trend-up::before {\\n content: \\\"\\\\e098\\\"; }\\n\\n.fa-plug-circle-minus::before {\\n content: \\\"\\\\e55e\\\"; }\\n\\n.fa-sign-hanging::before {\\n content: \\\"\\\\f4d9\\\"; }\\n\\n.fa-sign::before {\\n content: \\\"\\\\f4d9\\\"; }\\n\\n.fa-bezier-curve::before {\\n content: \\\"\\\\f55b\\\"; }\\n\\n.fa-bell-slash::before {\\n content: \\\"\\\\f1f6\\\"; }\\n\\n.fa-tablet::before {\\n content: \\\"\\\\f3fb\\\"; }\\n\\n.fa-tablet-android::before {\\n content: \\\"\\\\f3fb\\\"; }\\n\\n.fa-school-flag::before {\\n content: \\\"\\\\e56e\\\"; }\\n\\n.fa-fill::before {\\n content: \\\"\\\\f575\\\"; }\\n\\n.fa-angle-up::before {\\n content: \\\"\\\\f106\\\"; }\\n\\n.fa-drumstick-bite::before {\\n content: \\\"\\\\f6d7\\\"; }\\n\\n.fa-holly-berry::before {\\n content: \\\"\\\\f7aa\\\"; }\\n\\n.fa-chevron-left::before {\\n content: \\\"\\\\f053\\\"; }\\n\\n.fa-bacteria::before {\\n content: \\\"\\\\e059\\\"; }\\n\\n.fa-hand-lizard::before {\\n content: \\\"\\\\f258\\\"; }\\n\\n.fa-disease::before {\\n content: \\\"\\\\f7fa\\\"; }\\n\\n.fa-briefcase-medical::before {\\n content: \\\"\\\\f469\\\"; }\\n\\n.fa-genderless::before {\\n content: \\\"\\\\f22d\\\"; }\\n\\n.fa-chevron-right::before {\\n content: \\\"\\\\f054\\\"; }\\n\\n.fa-retweet::before {\\n content: \\\"\\\\f079\\\"; }\\n\\n.fa-car-rear::before {\\n content: \\\"\\\\f5de\\\"; }\\n\\n.fa-car-alt::before {\\n content: \\\"\\\\f5de\\\"; }\\n\\n.fa-pump-soap::before {\\n content: \\\"\\\\e06b\\\"; }\\n\\n.fa-video-slash::before {\\n content: \\\"\\\\f4e2\\\"; }\\n\\n.fa-battery-quarter::before {\\n content: \\\"\\\\f243\\\"; }\\n\\n.fa-battery-2::before {\\n content: \\\"\\\\f243\\\"; }\\n\\n.fa-radio::before {\\n content: \\\"\\\\f8d7\\\"; }\\n\\n.fa-baby-carriage::before {\\n content: \\\"\\\\f77d\\\"; }\\n\\n.fa-carriage-baby::before {\\n content: \\\"\\\\f77d\\\"; }\\n\\n.fa-traffic-light::before {\\n content: \\\"\\\\f637\\\"; }\\n\\n.fa-thermometer::before {\\n content: \\\"\\\\f491\\\"; }\\n\\n.fa-vr-cardboard::before {\\n content: \\\"\\\\f729\\\"; }\\n\\n.fa-hand-middle-finger::before {\\n content: \\\"\\\\f806\\\"; }\\n\\n.fa-percent::before {\\n content: \\\"\\\\25\\\"; }\\n\\n.fa-percentage::before {\\n content: \\\"\\\\25\\\"; }\\n\\n.fa-truck-moving::before {\\n content: \\\"\\\\f4df\\\"; }\\n\\n.fa-glass-water-droplet::before {\\n content: \\\"\\\\e4f5\\\"; }\\n\\n.fa-display::before {\\n content: \\\"\\\\e163\\\"; }\\n\\n.fa-face-smile::before {\\n content: \\\"\\\\f118\\\"; }\\n\\n.fa-smile::before {\\n content: \\\"\\\\f118\\\"; }\\n\\n.fa-thumbtack::before {\\n content: \\\"\\\\f08d\\\"; }\\n\\n.fa-thumb-tack::before {\\n content: \\\"\\\\f08d\\\"; }\\n\\n.fa-trophy::before {\\n content: \\\"\\\\f091\\\"; }\\n\\n.fa-person-praying::before {\\n content: \\\"\\\\f683\\\"; }\\n\\n.fa-pray::before {\\n content: \\\"\\\\f683\\\"; }\\n\\n.fa-hammer::before {\\n content: \\\"\\\\f6e3\\\"; }\\n\\n.fa-hand-peace::before {\\n content: \\\"\\\\f25b\\\"; }\\n\\n.fa-rotate::before {\\n content: \\\"\\\\f2f1\\\"; }\\n\\n.fa-sync-alt::before {\\n content: \\\"\\\\f2f1\\\"; }\\n\\n.fa-spinner::before {\\n content: \\\"\\\\f110\\\"; }\\n\\n.fa-robot::before {\\n content: \\\"\\\\f544\\\"; }\\n\\n.fa-peace::before {\\n content: \\\"\\\\f67c\\\"; }\\n\\n.fa-gears::before {\\n content: \\\"\\\\f085\\\"; }\\n\\n.fa-cogs::before {\\n content: \\\"\\\\f085\\\"; }\\n\\n.fa-warehouse::before {\\n content: \\\"\\\\f494\\\"; }\\n\\n.fa-arrow-up-right-dots::before {\\n content: \\\"\\\\e4b7\\\"; }\\n\\n.fa-splotch::before {\\n content: \\\"\\\\f5bc\\\"; }\\n\\n.fa-face-grin-hearts::before {\\n content: \\\"\\\\f584\\\"; }\\n\\n.fa-grin-hearts::before {\\n content: \\\"\\\\f584\\\"; }\\n\\n.fa-dice-four::before {\\n content: \\\"\\\\f524\\\"; }\\n\\n.fa-sim-card::before {\\n content: \\\"\\\\f7c4\\\"; }\\n\\n.fa-transgender::before {\\n content: \\\"\\\\f225\\\"; }\\n\\n.fa-transgender-alt::before {\\n content: \\\"\\\\f225\\\"; }\\n\\n.fa-mercury::before {\\n content: \\\"\\\\f223\\\"; }\\n\\n.fa-arrow-turn-down::before {\\n content: \\\"\\\\f149\\\"; }\\n\\n.fa-level-down::before {\\n content: \\\"\\\\f149\\\"; }\\n\\n.fa-person-falling-burst::before {\\n content: \\\"\\\\e547\\\"; }\\n\\n.fa-award::before {\\n content: \\\"\\\\f559\\\"; }\\n\\n.fa-ticket-simple::before {\\n content: \\\"\\\\f3ff\\\"; }\\n\\n.fa-ticket-alt::before {\\n content: \\\"\\\\f3ff\\\"; }\\n\\n.fa-building::before {\\n content: \\\"\\\\f1ad\\\"; }\\n\\n.fa-angles-left::before {\\n content: \\\"\\\\f100\\\"; }\\n\\n.fa-angle-double-left::before {\\n content: \\\"\\\\f100\\\"; }\\n\\n.fa-qrcode::before {\\n content: \\\"\\\\f029\\\"; }\\n\\n.fa-clock-rotate-left::before {\\n content: \\\"\\\\f1da\\\"; }\\n\\n.fa-history::before {\\n content: \\\"\\\\f1da\\\"; }\\n\\n.fa-face-grin-beam-sweat::before {\\n content: \\\"\\\\f583\\\"; }\\n\\n.fa-grin-beam-sweat::before {\\n content: \\\"\\\\f583\\\"; }\\n\\n.fa-file-export::before {\\n content: \\\"\\\\f56e\\\"; }\\n\\n.fa-arrow-right-from-file::before {\\n content: \\\"\\\\f56e\\\"; }\\n\\n.fa-shield::before {\\n content: \\\"\\\\f132\\\"; }\\n\\n.fa-shield-blank::before {\\n content: \\\"\\\\f132\\\"; }\\n\\n.fa-arrow-up-short-wide::before {\\n content: \\\"\\\\f885\\\"; }\\n\\n.fa-sort-amount-up-alt::before {\\n content: \\\"\\\\f885\\\"; }\\n\\n.fa-house-medical::before {\\n content: \\\"\\\\e3b2\\\"; }\\n\\n.fa-golf-ball-tee::before {\\n content: \\\"\\\\f450\\\"; }\\n\\n.fa-golf-ball::before {\\n content: \\\"\\\\f450\\\"; }\\n\\n.fa-circle-chevron-left::before {\\n content: \\\"\\\\f137\\\"; }\\n\\n.fa-chevron-circle-left::before {\\n content: \\\"\\\\f137\\\"; }\\n\\n.fa-house-chimney-window::before {\\n content: \\\"\\\\e00d\\\"; }\\n\\n.fa-pen-nib::before {\\n content: \\\"\\\\f5ad\\\"; }\\n\\n.fa-tent-arrow-turn-left::before {\\n content: \\\"\\\\e580\\\"; }\\n\\n.fa-tents::before {\\n content: \\\"\\\\e582\\\"; }\\n\\n.fa-wand-magic::before {\\n content: \\\"\\\\f0d0\\\"; }\\n\\n.fa-magic::before {\\n content: \\\"\\\\f0d0\\\"; }\\n\\n.fa-dog::before {\\n content: \\\"\\\\f6d3\\\"; }\\n\\n.fa-carrot::before {\\n content: \\\"\\\\f787\\\"; }\\n\\n.fa-moon::before {\\n content: \\\"\\\\f186\\\"; }\\n\\n.fa-wine-glass-empty::before {\\n content: \\\"\\\\f5ce\\\"; }\\n\\n.fa-wine-glass-alt::before {\\n content: \\\"\\\\f5ce\\\"; }\\n\\n.fa-cheese::before {\\n content: \\\"\\\\f7ef\\\"; }\\n\\n.fa-yin-yang::before {\\n content: \\\"\\\\f6ad\\\"; }\\n\\n.fa-music::before {\\n content: \\\"\\\\f001\\\"; }\\n\\n.fa-code-commit::before {\\n content: \\\"\\\\f386\\\"; }\\n\\n.fa-temperature-low::before {\\n content: \\\"\\\\f76b\\\"; }\\n\\n.fa-person-biking::before {\\n content: \\\"\\\\f84a\\\"; }\\n\\n.fa-biking::before {\\n content: \\\"\\\\f84a\\\"; }\\n\\n.fa-broom::before {\\n content: \\\"\\\\f51a\\\"; }\\n\\n.fa-shield-heart::before {\\n content: \\\"\\\\e574\\\"; }\\n\\n.fa-gopuram::before {\\n content: \\\"\\\\f664\\\"; }\\n\\n.fa-earth-oceania::before {\\n content: \\\"\\\\e47b\\\"; }\\n\\n.fa-globe-oceania::before {\\n content: \\\"\\\\e47b\\\"; }\\n\\n.fa-square-xmark::before {\\n content: \\\"\\\\f2d3\\\"; }\\n\\n.fa-times-square::before {\\n content: \\\"\\\\f2d3\\\"; }\\n\\n.fa-xmark-square::before {\\n content: \\\"\\\\f2d3\\\"; }\\n\\n.fa-hashtag::before {\\n content: \\\"\\\\23\\\"; }\\n\\n.fa-up-right-and-down-left-from-center::before {\\n content: \\\"\\\\f424\\\"; }\\n\\n.fa-expand-alt::before {\\n content: \\\"\\\\f424\\\"; }\\n\\n.fa-oil-can::before {\\n content: \\\"\\\\f613\\\"; }\\n\\n.fa-t::before {\\n content: \\\"\\\\54\\\"; }\\n\\n.fa-hippo::before {\\n content: \\\"\\\\f6ed\\\"; }\\n\\n.fa-chart-column::before {\\n content: \\\"\\\\e0e3\\\"; }\\n\\n.fa-infinity::before {\\n content: \\\"\\\\f534\\\"; }\\n\\n.fa-vial-circle-check::before {\\n content: \\\"\\\\e596\\\"; }\\n\\n.fa-person-arrow-down-to-line::before {\\n content: \\\"\\\\e538\\\"; }\\n\\n.fa-voicemail::before {\\n content: \\\"\\\\f897\\\"; }\\n\\n.fa-fan::before {\\n content: \\\"\\\\f863\\\"; }\\n\\n.fa-person-walking-luggage::before {\\n content: \\\"\\\\e554\\\"; }\\n\\n.fa-up-down::before {\\n content: \\\"\\\\f338\\\"; }\\n\\n.fa-arrows-alt-v::before {\\n content: \\\"\\\\f338\\\"; }\\n\\n.fa-cloud-moon-rain::before {\\n content: \\\"\\\\f73c\\\"; }\\n\\n.fa-calendar::before {\\n content: \\\"\\\\f133\\\"; }\\n\\n.fa-trailer::before {\\n content: \\\"\\\\e041\\\"; }\\n\\n.fa-bahai::before {\\n content: \\\"\\\\f666\\\"; }\\n\\n.fa-haykal::before {\\n content: \\\"\\\\f666\\\"; }\\n\\n.fa-sd-card::before {\\n content: \\\"\\\\f7c2\\\"; }\\n\\n.fa-dragon::before {\\n content: \\\"\\\\f6d5\\\"; }\\n\\n.fa-shoe-prints::before {\\n content: \\\"\\\\f54b\\\"; }\\n\\n.fa-circle-plus::before {\\n content: \\\"\\\\f055\\\"; }\\n\\n.fa-plus-circle::before {\\n content: \\\"\\\\f055\\\"; }\\n\\n.fa-face-grin-tongue-wink::before {\\n content: \\\"\\\\f58b\\\"; }\\n\\n.fa-grin-tongue-wink::before {\\n content: \\\"\\\\f58b\\\"; }\\n\\n.fa-hand-holding::before {\\n content: \\\"\\\\f4bd\\\"; }\\n\\n.fa-plug-circle-exclamation::before {\\n content: \\\"\\\\e55d\\\"; }\\n\\n.fa-link-slash::before {\\n content: \\\"\\\\f127\\\"; }\\n\\n.fa-chain-broken::before {\\n content: \\\"\\\\f127\\\"; }\\n\\n.fa-chain-slash::before {\\n content: \\\"\\\\f127\\\"; }\\n\\n.fa-unlink::before {\\n content: \\\"\\\\f127\\\"; }\\n\\n.fa-clone::before {\\n content: \\\"\\\\f24d\\\"; }\\n\\n.fa-person-walking-arrow-loop-left::before {\\n content: \\\"\\\\e551\\\"; }\\n\\n.fa-arrow-up-z-a::before {\\n content: \\\"\\\\f882\\\"; }\\n\\n.fa-sort-alpha-up-alt::before {\\n content: \\\"\\\\f882\\\"; }\\n\\n.fa-fire-flame-curved::before {\\n content: \\\"\\\\f7e4\\\"; }\\n\\n.fa-fire-alt::before {\\n content: \\\"\\\\f7e4\\\"; }\\n\\n.fa-tornado::before {\\n content: \\\"\\\\f76f\\\"; }\\n\\n.fa-file-circle-plus::before {\\n content: \\\"\\\\e494\\\"; }\\n\\n.fa-book-quran::before {\\n content: \\\"\\\\f687\\\"; }\\n\\n.fa-quran::before {\\n content: \\\"\\\\f687\\\"; }\\n\\n.fa-anchor::before {\\n content: \\\"\\\\f13d\\\"; }\\n\\n.fa-border-all::before {\\n content: \\\"\\\\f84c\\\"; }\\n\\n.fa-face-angry::before {\\n content: \\\"\\\\f556\\\"; }\\n\\n.fa-angry::before {\\n content: \\\"\\\\f556\\\"; }\\n\\n.fa-cookie-bite::before {\\n content: \\\"\\\\f564\\\"; }\\n\\n.fa-arrow-trend-down::before {\\n content: \\\"\\\\e097\\\"; }\\n\\n.fa-rss::before {\\n content: \\\"\\\\f09e\\\"; }\\n\\n.fa-feed::before {\\n content: \\\"\\\\f09e\\\"; }\\n\\n.fa-draw-polygon::before {\\n content: \\\"\\\\f5ee\\\"; }\\n\\n.fa-scale-balanced::before {\\n content: \\\"\\\\f24e\\\"; }\\n\\n.fa-balance-scale::before {\\n content: \\\"\\\\f24e\\\"; }\\n\\n.fa-gauge-simple-high::before {\\n content: \\\"\\\\f62a\\\"; }\\n\\n.fa-tachometer::before {\\n content: \\\"\\\\f62a\\\"; }\\n\\n.fa-tachometer-fast::before {\\n content: \\\"\\\\f62a\\\"; }\\n\\n.fa-shower::before {\\n content: \\\"\\\\f2cc\\\"; }\\n\\n.fa-desktop::before {\\n content: \\\"\\\\f390\\\"; }\\n\\n.fa-desktop-alt::before {\\n content: \\\"\\\\f390\\\"; }\\n\\n.fa-m::before {\\n content: \\\"\\\\4d\\\"; }\\n\\n.fa-table-list::before {\\n content: \\\"\\\\f00b\\\"; }\\n\\n.fa-th-list::before {\\n content: \\\"\\\\f00b\\\"; }\\n\\n.fa-comment-sms::before {\\n content: \\\"\\\\f7cd\\\"; }\\n\\n.fa-sms::before {\\n content: \\\"\\\\f7cd\\\"; }\\n\\n.fa-book::before {\\n content: \\\"\\\\f02d\\\"; }\\n\\n.fa-user-plus::before {\\n content: \\\"\\\\f234\\\"; }\\n\\n.fa-check::before {\\n content: \\\"\\\\f00c\\\"; }\\n\\n.fa-battery-three-quarters::before {\\n content: \\\"\\\\f241\\\"; }\\n\\n.fa-battery-4::before {\\n content: \\\"\\\\f241\\\"; }\\n\\n.fa-house-circle-check::before {\\n content: \\\"\\\\e509\\\"; }\\n\\n.fa-angle-left::before {\\n content: \\\"\\\\f104\\\"; }\\n\\n.fa-diagram-successor::before {\\n content: \\\"\\\\e47a\\\"; }\\n\\n.fa-truck-arrow-right::before {\\n content: \\\"\\\\e58b\\\"; }\\n\\n.fa-arrows-split-up-and-left::before {\\n content: \\\"\\\\e4bc\\\"; }\\n\\n.fa-hand-fist::before {\\n content: \\\"\\\\f6de\\\"; }\\n\\n.fa-fist-raised::before {\\n content: \\\"\\\\f6de\\\"; }\\n\\n.fa-cloud-moon::before {\\n content: \\\"\\\\f6c3\\\"; }\\n\\n.fa-briefcase::before {\\n content: \\\"\\\\f0b1\\\"; }\\n\\n.fa-person-falling::before {\\n content: \\\"\\\\e546\\\"; }\\n\\n.fa-image-portrait::before {\\n content: \\\"\\\\f3e0\\\"; }\\n\\n.fa-portrait::before {\\n content: \\\"\\\\f3e0\\\"; }\\n\\n.fa-user-tag::before {\\n content: \\\"\\\\f507\\\"; }\\n\\n.fa-rug::before {\\n content: \\\"\\\\e569\\\"; }\\n\\n.fa-earth-europe::before {\\n content: \\\"\\\\f7a2\\\"; }\\n\\n.fa-globe-europe::before {\\n content: \\\"\\\\f7a2\\\"; }\\n\\n.fa-cart-flatbed-suitcase::before {\\n content: \\\"\\\\f59d\\\"; }\\n\\n.fa-luggage-cart::before {\\n content: \\\"\\\\f59d\\\"; }\\n\\n.fa-rectangle-xmark::before {\\n content: \\\"\\\\f410\\\"; }\\n\\n.fa-rectangle-times::before {\\n content: \\\"\\\\f410\\\"; }\\n\\n.fa-times-rectangle::before {\\n content: \\\"\\\\f410\\\"; }\\n\\n.fa-window-close::before {\\n content: \\\"\\\\f410\\\"; }\\n\\n.fa-baht-sign::before {\\n content: \\\"\\\\e0ac\\\"; }\\n\\n.fa-book-open::before {\\n content: \\\"\\\\f518\\\"; }\\n\\n.fa-book-journal-whills::before {\\n content: \\\"\\\\f66a\\\"; }\\n\\n.fa-journal-whills::before {\\n content: \\\"\\\\f66a\\\"; }\\n\\n.fa-handcuffs::before {\\n content: \\\"\\\\e4f8\\\"; }\\n\\n.fa-triangle-exclamation::before {\\n content: \\\"\\\\f071\\\"; }\\n\\n.fa-exclamation-triangle::before {\\n content: \\\"\\\\f071\\\"; }\\n\\n.fa-warning::before {\\n content: \\\"\\\\f071\\\"; }\\n\\n.fa-database::before {\\n content: \\\"\\\\f1c0\\\"; }\\n\\n.fa-share::before {\\n content: \\\"\\\\f064\\\"; }\\n\\n.fa-arrow-turn-right::before {\\n content: \\\"\\\\f064\\\"; }\\n\\n.fa-mail-forward::before {\\n content: \\\"\\\\f064\\\"; }\\n\\n.fa-bottle-droplet::before {\\n content: \\\"\\\\e4c4\\\"; }\\n\\n.fa-mask-face::before {\\n content: \\\"\\\\e1d7\\\"; }\\n\\n.fa-hill-rockslide::before {\\n content: \\\"\\\\e508\\\"; }\\n\\n.fa-right-left::before {\\n content: \\\"\\\\f362\\\"; }\\n\\n.fa-exchange-alt::before {\\n content: \\\"\\\\f362\\\"; }\\n\\n.fa-paper-plane::before {\\n content: \\\"\\\\f1d8\\\"; }\\n\\n.fa-road-circle-exclamation::before {\\n content: \\\"\\\\e565\\\"; }\\n\\n.fa-dungeon::before {\\n content: \\\"\\\\f6d9\\\"; }\\n\\n.fa-align-right::before {\\n content: \\\"\\\\f038\\\"; }\\n\\n.fa-money-bill-1-wave::before {\\n content: \\\"\\\\f53b\\\"; }\\n\\n.fa-money-bill-wave-alt::before {\\n content: \\\"\\\\f53b\\\"; }\\n\\n.fa-life-ring::before {\\n content: \\\"\\\\f1cd\\\"; }\\n\\n.fa-hands::before {\\n content: \\\"\\\\f2a7\\\"; }\\n\\n.fa-sign-language::before {\\n content: \\\"\\\\f2a7\\\"; }\\n\\n.fa-signing::before {\\n content: \\\"\\\\f2a7\\\"; }\\n\\n.fa-calendar-day::before {\\n content: \\\"\\\\f783\\\"; }\\n\\n.fa-water-ladder::before {\\n content: \\\"\\\\f5c5\\\"; }\\n\\n.fa-ladder-water::before {\\n content: \\\"\\\\f5c5\\\"; }\\n\\n.fa-swimming-pool::before {\\n content: \\\"\\\\f5c5\\\"; }\\n\\n.fa-arrows-up-down::before {\\n content: \\\"\\\\f07d\\\"; }\\n\\n.fa-arrows-v::before {\\n content: \\\"\\\\f07d\\\"; }\\n\\n.fa-face-grimace::before {\\n content: \\\"\\\\f57f\\\"; }\\n\\n.fa-grimace::before {\\n content: \\\"\\\\f57f\\\"; }\\n\\n.fa-wheelchair-move::before {\\n content: \\\"\\\\e2ce\\\"; }\\n\\n.fa-wheelchair-alt::before {\\n content: \\\"\\\\e2ce\\\"; }\\n\\n.fa-turn-down::before {\\n content: \\\"\\\\f3be\\\"; }\\n\\n.fa-level-down-alt::before {\\n content: \\\"\\\\f3be\\\"; }\\n\\n.fa-person-walking-arrow-right::before {\\n content: \\\"\\\\e552\\\"; }\\n\\n.fa-square-envelope::before {\\n content: \\\"\\\\f199\\\"; }\\n\\n.fa-envelope-square::before {\\n content: \\\"\\\\f199\\\"; }\\n\\n.fa-dice::before {\\n content: \\\"\\\\f522\\\"; }\\n\\n.fa-bowling-ball::before {\\n content: \\\"\\\\f436\\\"; }\\n\\n.fa-brain::before {\\n content: \\\"\\\\f5dc\\\"; }\\n\\n.fa-bandage::before {\\n content: \\\"\\\\f462\\\"; }\\n\\n.fa-band-aid::before {\\n content: \\\"\\\\f462\\\"; }\\n\\n.fa-calendar-minus::before {\\n content: \\\"\\\\f272\\\"; }\\n\\n.fa-circle-xmark::before {\\n content: \\\"\\\\f057\\\"; }\\n\\n.fa-times-circle::before {\\n content: \\\"\\\\f057\\\"; }\\n\\n.fa-xmark-circle::before {\\n content: \\\"\\\\f057\\\"; }\\n\\n.fa-gifts::before {\\n content: \\\"\\\\f79c\\\"; }\\n\\n.fa-hotel::before {\\n content: \\\"\\\\f594\\\"; }\\n\\n.fa-earth-asia::before {\\n content: \\\"\\\\f57e\\\"; }\\n\\n.fa-globe-asia::before {\\n content: \\\"\\\\f57e\\\"; }\\n\\n.fa-id-card-clip::before {\\n content: \\\"\\\\f47f\\\"; }\\n\\n.fa-id-card-alt::before {\\n content: \\\"\\\\f47f\\\"; }\\n\\n.fa-magnifying-glass-plus::before {\\n content: \\\"\\\\f00e\\\"; }\\n\\n.fa-search-plus::before {\\n content: \\\"\\\\f00e\\\"; }\\n\\n.fa-thumbs-up::before {\\n content: \\\"\\\\f164\\\"; }\\n\\n.fa-user-clock::before {\\n content: \\\"\\\\f4fd\\\"; }\\n\\n.fa-hand-dots::before {\\n content: \\\"\\\\f461\\\"; }\\n\\n.fa-allergies::before {\\n content: \\\"\\\\f461\\\"; }\\n\\n.fa-file-invoice::before {\\n content: \\\"\\\\f570\\\"; }\\n\\n.fa-window-minimize::before {\\n content: \\\"\\\\f2d1\\\"; }\\n\\n.fa-mug-saucer::before {\\n content: \\\"\\\\f0f4\\\"; }\\n\\n.fa-coffee::before {\\n content: \\\"\\\\f0f4\\\"; }\\n\\n.fa-brush::before {\\n content: \\\"\\\\f55d\\\"; }\\n\\n.fa-mask::before {\\n content: \\\"\\\\f6fa\\\"; }\\n\\n.fa-magnifying-glass-minus::before {\\n content: \\\"\\\\f010\\\"; }\\n\\n.fa-search-minus::before {\\n content: \\\"\\\\f010\\\"; }\\n\\n.fa-ruler-vertical::before {\\n content: \\\"\\\\f548\\\"; }\\n\\n.fa-user-large::before {\\n content: \\\"\\\\f406\\\"; }\\n\\n.fa-user-alt::before {\\n content: \\\"\\\\f406\\\"; }\\n\\n.fa-train-tram::before {\\n content: \\\"\\\\e5b4\\\"; }\\n\\n.fa-user-nurse::before {\\n content: \\\"\\\\f82f\\\"; }\\n\\n.fa-syringe::before {\\n content: \\\"\\\\f48e\\\"; }\\n\\n.fa-cloud-sun::before {\\n content: \\\"\\\\f6c4\\\"; }\\n\\n.fa-stopwatch-20::before {\\n content: \\\"\\\\e06f\\\"; }\\n\\n.fa-square-full::before {\\n content: \\\"\\\\f45c\\\"; }\\n\\n.fa-magnet::before {\\n content: \\\"\\\\f076\\\"; }\\n\\n.fa-jar::before {\\n content: \\\"\\\\e516\\\"; }\\n\\n.fa-note-sticky::before {\\n content: \\\"\\\\f249\\\"; }\\n\\n.fa-sticky-note::before {\\n content: \\\"\\\\f249\\\"; }\\n\\n.fa-bug-slash::before {\\n content: \\\"\\\\e490\\\"; }\\n\\n.fa-arrow-up-from-water-pump::before {\\n content: \\\"\\\\e4b6\\\"; }\\n\\n.fa-bone::before {\\n content: \\\"\\\\f5d7\\\"; }\\n\\n.fa-user-injured::before {\\n content: \\\"\\\\f728\\\"; }\\n\\n.fa-face-sad-tear::before {\\n content: \\\"\\\\f5b4\\\"; }\\n\\n.fa-sad-tear::before {\\n content: \\\"\\\\f5b4\\\"; }\\n\\n.fa-plane::before {\\n content: \\\"\\\\f072\\\"; }\\n\\n.fa-tent-arrows-down::before {\\n content: \\\"\\\\e581\\\"; }\\n\\n.fa-exclamation::before {\\n content: \\\"\\\\21\\\"; }\\n\\n.fa-arrows-spin::before {\\n content: \\\"\\\\e4bb\\\"; }\\n\\n.fa-print::before {\\n content: \\\"\\\\f02f\\\"; }\\n\\n.fa-turkish-lira-sign::before {\\n content: \\\"\\\\e2bb\\\"; }\\n\\n.fa-try::before {\\n content: \\\"\\\\e2bb\\\"; }\\n\\n.fa-turkish-lira::before {\\n content: \\\"\\\\e2bb\\\"; }\\n\\n.fa-dollar-sign::before {\\n content: \\\"\\\\24\\\"; }\\n\\n.fa-dollar::before {\\n content: \\\"\\\\24\\\"; }\\n\\n.fa-usd::before {\\n content: \\\"\\\\24\\\"; }\\n\\n.fa-x::before {\\n content: \\\"\\\\58\\\"; }\\n\\n.fa-magnifying-glass-dollar::before {\\n content: \\\"\\\\f688\\\"; }\\n\\n.fa-search-dollar::before {\\n content: \\\"\\\\f688\\\"; }\\n\\n.fa-users-gear::before {\\n content: \\\"\\\\f509\\\"; }\\n\\n.fa-users-cog::before {\\n content: \\\"\\\\f509\\\"; }\\n\\n.fa-person-military-pointing::before {\\n content: \\\"\\\\e54a\\\"; }\\n\\n.fa-building-columns::before {\\n content: \\\"\\\\f19c\\\"; }\\n\\n.fa-bank::before {\\n content: \\\"\\\\f19c\\\"; }\\n\\n.fa-institution::before {\\n content: \\\"\\\\f19c\\\"; }\\n\\n.fa-museum::before {\\n content: \\\"\\\\f19c\\\"; }\\n\\n.fa-university::before {\\n content: \\\"\\\\f19c\\\"; }\\n\\n.fa-umbrella::before {\\n content: \\\"\\\\f0e9\\\"; }\\n\\n.fa-trowel::before {\\n content: \\\"\\\\e589\\\"; }\\n\\n.fa-d::before {\\n content: \\\"\\\\44\\\"; }\\n\\n.fa-stapler::before {\\n content: \\\"\\\\e5af\\\"; }\\n\\n.fa-masks-theater::before {\\n content: \\\"\\\\f630\\\"; }\\n\\n.fa-theater-masks::before {\\n content: \\\"\\\\f630\\\"; }\\n\\n.fa-kip-sign::before {\\n content: \\\"\\\\e1c4\\\"; }\\n\\n.fa-hand-point-left::before {\\n content: \\\"\\\\f0a5\\\"; }\\n\\n.fa-handshake-simple::before {\\n content: \\\"\\\\f4c6\\\"; }\\n\\n.fa-handshake-alt::before {\\n content: \\\"\\\\f4c6\\\"; }\\n\\n.fa-jet-fighter::before {\\n content: \\\"\\\\f0fb\\\"; }\\n\\n.fa-fighter-jet::before {\\n content: \\\"\\\\f0fb\\\"; }\\n\\n.fa-square-share-nodes::before {\\n content: \\\"\\\\f1e1\\\"; }\\n\\n.fa-share-alt-square::before {\\n content: \\\"\\\\f1e1\\\"; }\\n\\n.fa-barcode::before {\\n content: \\\"\\\\f02a\\\"; }\\n\\n.fa-plus-minus::before {\\n content: \\\"\\\\e43c\\\"; }\\n\\n.fa-video::before {\\n content: \\\"\\\\f03d\\\"; }\\n\\n.fa-video-camera::before {\\n content: \\\"\\\\f03d\\\"; }\\n\\n.fa-graduation-cap::before {\\n content: \\\"\\\\f19d\\\"; }\\n\\n.fa-mortar-board::before {\\n content: \\\"\\\\f19d\\\"; }\\n\\n.fa-hand-holding-medical::before {\\n content: \\\"\\\\e05c\\\"; }\\n\\n.fa-person-circle-check::before {\\n content: \\\"\\\\e53e\\\"; }\\n\\n.fa-turn-up::before {\\n content: \\\"\\\\f3bf\\\"; }\\n\\n.fa-level-up-alt::before {\\n content: \\\"\\\\f3bf\\\"; }\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0; }\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0; }\\n:root, :host {\\n --fa-style-family-brands: 'Font Awesome 6 Brands';\\n --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }\\n\\n@font-face {\\n font-family: 'Font Awesome 6 Brands';\\n font-style: normal;\\n font-weight: 400;\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\"); }\\n\\n.fab,\\n.fa-brands {\\n font-weight: 400; }\\n\\n.fa-monero:before {\\n content: \\\"\\\\f3d0\\\"; }\\n\\n.fa-hooli:before {\\n content: \\\"\\\\f427\\\"; }\\n\\n.fa-yelp:before {\\n content: \\\"\\\\f1e9\\\"; }\\n\\n.fa-cc-visa:before {\\n content: \\\"\\\\f1f0\\\"; }\\n\\n.fa-lastfm:before {\\n content: \\\"\\\\f202\\\"; }\\n\\n.fa-shopware:before {\\n content: \\\"\\\\f5b5\\\"; }\\n\\n.fa-creative-commons-nc:before {\\n content: \\\"\\\\f4e8\\\"; }\\n\\n.fa-aws:before {\\n content: \\\"\\\\f375\\\"; }\\n\\n.fa-redhat:before {\\n content: \\\"\\\\f7bc\\\"; }\\n\\n.fa-yoast:before {\\n content: \\\"\\\\f2b1\\\"; }\\n\\n.fa-cloudflare:before {\\n content: \\\"\\\\e07d\\\"; }\\n\\n.fa-ups:before {\\n content: \\\"\\\\f7e0\\\"; }\\n\\n.fa-wpexplorer:before {\\n content: \\\"\\\\f2de\\\"; }\\n\\n.fa-dyalog:before {\\n content: \\\"\\\\f399\\\"; }\\n\\n.fa-bity:before {\\n content: \\\"\\\\f37a\\\"; }\\n\\n.fa-stackpath:before {\\n content: \\\"\\\\f842\\\"; }\\n\\n.fa-buysellads:before {\\n content: \\\"\\\\f20d\\\"; }\\n\\n.fa-first-order:before {\\n content: \\\"\\\\f2b0\\\"; }\\n\\n.fa-modx:before {\\n content: \\\"\\\\f285\\\"; }\\n\\n.fa-guilded:before {\\n content: \\\"\\\\e07e\\\"; }\\n\\n.fa-vnv:before {\\n content: \\\"\\\\f40b\\\"; }\\n\\n.fa-square-js:before {\\n content: \\\"\\\\f3b9\\\"; }\\n\\n.fa-js-square:before {\\n content: \\\"\\\\f3b9\\\"; }\\n\\n.fa-microsoft:before {\\n content: \\\"\\\\f3ca\\\"; }\\n\\n.fa-qq:before {\\n content: \\\"\\\\f1d6\\\"; }\\n\\n.fa-orcid:before {\\n content: \\\"\\\\f8d2\\\"; }\\n\\n.fa-java:before {\\n content: \\\"\\\\f4e4\\\"; }\\n\\n.fa-invision:before {\\n content: \\\"\\\\f7b0\\\"; }\\n\\n.fa-creative-commons-pd-alt:before {\\n content: \\\"\\\\f4ed\\\"; }\\n\\n.fa-centercode:before {\\n content: \\\"\\\\f380\\\"; }\\n\\n.fa-glide-g:before {\\n content: \\\"\\\\f2a6\\\"; }\\n\\n.fa-drupal:before {\\n content: \\\"\\\\f1a9\\\"; }\\n\\n.fa-hire-a-helper:before {\\n content: \\\"\\\\f3b0\\\"; }\\n\\n.fa-creative-commons-by:before {\\n content: \\\"\\\\f4e7\\\"; }\\n\\n.fa-unity:before {\\n content: \\\"\\\\e049\\\"; }\\n\\n.fa-whmcs:before {\\n content: \\\"\\\\f40d\\\"; }\\n\\n.fa-rocketchat:before {\\n content: \\\"\\\\f3e8\\\"; }\\n\\n.fa-vk:before {\\n content: \\\"\\\\f189\\\"; }\\n\\n.fa-untappd:before {\\n content: \\\"\\\\f405\\\"; }\\n\\n.fa-mailchimp:before {\\n content: \\\"\\\\f59e\\\"; }\\n\\n.fa-css3-alt:before {\\n content: \\\"\\\\f38b\\\"; }\\n\\n.fa-square-reddit:before {\\n content: \\\"\\\\f1a2\\\"; }\\n\\n.fa-reddit-square:before {\\n content: \\\"\\\\f1a2\\\"; }\\n\\n.fa-vimeo-v:before {\\n content: \\\"\\\\f27d\\\"; }\\n\\n.fa-contao:before {\\n content: \\\"\\\\f26d\\\"; }\\n\\n.fa-square-font-awesome:before {\\n content: \\\"\\\\e5ad\\\"; }\\n\\n.fa-deskpro:before {\\n content: \\\"\\\\f38f\\\"; }\\n\\n.fa-sistrix:before {\\n content: \\\"\\\\f3ee\\\"; }\\n\\n.fa-square-instagram:before {\\n content: \\\"\\\\e055\\\"; }\\n\\n.fa-instagram-square:before {\\n content: \\\"\\\\e055\\\"; }\\n\\n.fa-battle-net:before {\\n content: \\\"\\\\f835\\\"; }\\n\\n.fa-the-red-yeti:before {\\n content: \\\"\\\\f69d\\\"; }\\n\\n.fa-square-hacker-news:before {\\n content: \\\"\\\\f3af\\\"; }\\n\\n.fa-hacker-news-square:before {\\n content: \\\"\\\\f3af\\\"; }\\n\\n.fa-edge:before {\\n content: \\\"\\\\f282\\\"; }\\n\\n.fa-napster:before {\\n content: \\\"\\\\f3d2\\\"; }\\n\\n.fa-square-snapchat:before {\\n content: \\\"\\\\f2ad\\\"; }\\n\\n.fa-snapchat-square:before {\\n content: \\\"\\\\f2ad\\\"; }\\n\\n.fa-google-plus-g:before {\\n content: \\\"\\\\f0d5\\\"; }\\n\\n.fa-artstation:before {\\n content: \\\"\\\\f77a\\\"; }\\n\\n.fa-markdown:before {\\n content: \\\"\\\\f60f\\\"; }\\n\\n.fa-sourcetree:before {\\n content: \\\"\\\\f7d3\\\"; }\\n\\n.fa-google-plus:before {\\n content: \\\"\\\\f2b3\\\"; }\\n\\n.fa-diaspora:before {\\n content: \\\"\\\\f791\\\"; }\\n\\n.fa-foursquare:before {\\n content: \\\"\\\\f180\\\"; }\\n\\n.fa-stack-overflow:before {\\n content: \\\"\\\\f16c\\\"; }\\n\\n.fa-github-alt:before {\\n content: \\\"\\\\f113\\\"; }\\n\\n.fa-phoenix-squadron:before {\\n content: \\\"\\\\f511\\\"; }\\n\\n.fa-pagelines:before {\\n content: \\\"\\\\f18c\\\"; }\\n\\n.fa-algolia:before {\\n content: \\\"\\\\f36c\\\"; }\\n\\n.fa-red-river:before {\\n content: \\\"\\\\f3e3\\\"; }\\n\\n.fa-creative-commons-sa:before {\\n content: \\\"\\\\f4ef\\\"; }\\n\\n.fa-safari:before {\\n content: \\\"\\\\f267\\\"; }\\n\\n.fa-google:before {\\n content: \\\"\\\\f1a0\\\"; }\\n\\n.fa-square-font-awesome-stroke:before {\\n content: \\\"\\\\f35c\\\"; }\\n\\n.fa-font-awesome-alt:before {\\n content: \\\"\\\\f35c\\\"; }\\n\\n.fa-atlassian:before {\\n content: \\\"\\\\f77b\\\"; }\\n\\n.fa-linkedin-in:before {\\n content: \\\"\\\\f0e1\\\"; }\\n\\n.fa-digital-ocean:before {\\n content: \\\"\\\\f391\\\"; }\\n\\n.fa-nimblr:before {\\n content: \\\"\\\\f5a8\\\"; }\\n\\n.fa-chromecast:before {\\n content: \\\"\\\\f838\\\"; }\\n\\n.fa-evernote:before {\\n content: \\\"\\\\f839\\\"; }\\n\\n.fa-hacker-news:before {\\n content: \\\"\\\\f1d4\\\"; }\\n\\n.fa-creative-commons-sampling:before {\\n content: \\\"\\\\f4f0\\\"; }\\n\\n.fa-adversal:before {\\n content: \\\"\\\\f36a\\\"; }\\n\\n.fa-creative-commons:before {\\n content: \\\"\\\\f25e\\\"; }\\n\\n.fa-watchman-monitoring:before {\\n content: \\\"\\\\e087\\\"; }\\n\\n.fa-fonticons:before {\\n content: \\\"\\\\f280\\\"; }\\n\\n.fa-weixin:before {\\n content: \\\"\\\\f1d7\\\"; }\\n\\n.fa-shirtsinbulk:before {\\n content: \\\"\\\\f214\\\"; }\\n\\n.fa-codepen:before {\\n content: \\\"\\\\f1cb\\\"; }\\n\\n.fa-git-alt:before {\\n content: \\\"\\\\f841\\\"; }\\n\\n.fa-lyft:before {\\n content: \\\"\\\\f3c3\\\"; }\\n\\n.fa-rev:before {\\n content: \\\"\\\\f5b2\\\"; }\\n\\n.fa-windows:before {\\n content: \\\"\\\\f17a\\\"; }\\n\\n.fa-wizards-of-the-coast:before {\\n content: \\\"\\\\f730\\\"; }\\n\\n.fa-square-viadeo:before {\\n content: \\\"\\\\f2aa\\\"; }\\n\\n.fa-viadeo-square:before {\\n content: \\\"\\\\f2aa\\\"; }\\n\\n.fa-meetup:before {\\n content: \\\"\\\\f2e0\\\"; }\\n\\n.fa-centos:before {\\n content: \\\"\\\\f789\\\"; }\\n\\n.fa-adn:before {\\n content: \\\"\\\\f170\\\"; }\\n\\n.fa-cloudsmith:before {\\n content: \\\"\\\\f384\\\"; }\\n\\n.fa-pied-piper-alt:before {\\n content: \\\"\\\\f1a8\\\"; }\\n\\n.fa-square-dribbble:before {\\n content: \\\"\\\\f397\\\"; }\\n\\n.fa-dribbble-square:before {\\n content: \\\"\\\\f397\\\"; }\\n\\n.fa-codiepie:before {\\n content: \\\"\\\\f284\\\"; }\\n\\n.fa-node:before {\\n content: \\\"\\\\f419\\\"; }\\n\\n.fa-mix:before {\\n content: \\\"\\\\f3cb\\\"; }\\n\\n.fa-steam:before {\\n content: \\\"\\\\f1b6\\\"; }\\n\\n.fa-cc-apple-pay:before {\\n content: \\\"\\\\f416\\\"; }\\n\\n.fa-scribd:before {\\n content: \\\"\\\\f28a\\\"; }\\n\\n.fa-openid:before {\\n content: \\\"\\\\f19b\\\"; }\\n\\n.fa-instalod:before {\\n content: \\\"\\\\e081\\\"; }\\n\\n.fa-expeditedssl:before {\\n content: \\\"\\\\f23e\\\"; }\\n\\n.fa-sellcast:before {\\n content: \\\"\\\\f2da\\\"; }\\n\\n.fa-square-twitter:before {\\n content: \\\"\\\\f081\\\"; }\\n\\n.fa-twitter-square:before {\\n content: \\\"\\\\f081\\\"; }\\n\\n.fa-r-project:before {\\n content: \\\"\\\\f4f7\\\"; }\\n\\n.fa-delicious:before {\\n content: \\\"\\\\f1a5\\\"; }\\n\\n.fa-freebsd:before {\\n content: \\\"\\\\f3a4\\\"; }\\n\\n.fa-vuejs:before {\\n content: \\\"\\\\f41f\\\"; }\\n\\n.fa-accusoft:before {\\n content: \\\"\\\\f369\\\"; }\\n\\n.fa-ioxhost:before {\\n content: \\\"\\\\f208\\\"; }\\n\\n.fa-fonticons-fi:before {\\n content: \\\"\\\\f3a2\\\"; }\\n\\n.fa-app-store:before {\\n content: \\\"\\\\f36f\\\"; }\\n\\n.fa-cc-mastercard:before {\\n content: \\\"\\\\f1f1\\\"; }\\n\\n.fa-itunes-note:before {\\n content: \\\"\\\\f3b5\\\"; }\\n\\n.fa-golang:before {\\n content: \\\"\\\\e40f\\\"; }\\n\\n.fa-kickstarter:before {\\n content: \\\"\\\\f3bb\\\"; }\\n\\n.fa-grav:before {\\n content: \\\"\\\\f2d6\\\"; }\\n\\n.fa-weibo:before {\\n content: \\\"\\\\f18a\\\"; }\\n\\n.fa-uncharted:before {\\n content: \\\"\\\\e084\\\"; }\\n\\n.fa-firstdraft:before {\\n content: \\\"\\\\f3a1\\\"; }\\n\\n.fa-square-youtube:before {\\n content: \\\"\\\\f431\\\"; }\\n\\n.fa-youtube-square:before {\\n content: \\\"\\\\f431\\\"; }\\n\\n.fa-wikipedia-w:before {\\n content: \\\"\\\\f266\\\"; }\\n\\n.fa-wpressr:before {\\n content: \\\"\\\\f3e4\\\"; }\\n\\n.fa-rendact:before {\\n content: \\\"\\\\f3e4\\\"; }\\n\\n.fa-angellist:before {\\n content: \\\"\\\\f209\\\"; }\\n\\n.fa-galactic-republic:before {\\n content: \\\"\\\\f50c\\\"; }\\n\\n.fa-nfc-directional:before {\\n content: \\\"\\\\e530\\\"; }\\n\\n.fa-skype:before {\\n content: \\\"\\\\f17e\\\"; }\\n\\n.fa-joget:before {\\n content: \\\"\\\\f3b7\\\"; }\\n\\n.fa-fedora:before {\\n content: \\\"\\\\f798\\\"; }\\n\\n.fa-stripe-s:before {\\n content: \\\"\\\\f42a\\\"; }\\n\\n.fa-meta:before {\\n content: \\\"\\\\e49b\\\"; }\\n\\n.fa-laravel:before {\\n content: \\\"\\\\f3bd\\\"; }\\n\\n.fa-hotjar:before {\\n content: \\\"\\\\f3b1\\\"; }\\n\\n.fa-bluetooth-b:before {\\n content: \\\"\\\\f294\\\"; }\\n\\n.fa-sticker-mule:before {\\n content: \\\"\\\\f3f7\\\"; }\\n\\n.fa-creative-commons-zero:before {\\n content: \\\"\\\\f4f3\\\"; }\\n\\n.fa-hips:before {\\n content: \\\"\\\\f452\\\"; }\\n\\n.fa-behance:before {\\n content: \\\"\\\\f1b4\\\"; }\\n\\n.fa-reddit:before {\\n content: \\\"\\\\f1a1\\\"; }\\n\\n.fa-discord:before {\\n content: \\\"\\\\f392\\\"; }\\n\\n.fa-chrome:before {\\n content: \\\"\\\\f268\\\"; }\\n\\n.fa-app-store-ios:before {\\n content: \\\"\\\\f370\\\"; }\\n\\n.fa-cc-discover:before {\\n content: \\\"\\\\f1f2\\\"; }\\n\\n.fa-wpbeginner:before {\\n content: \\\"\\\\f297\\\"; }\\n\\n.fa-confluence:before {\\n content: \\\"\\\\f78d\\\"; }\\n\\n.fa-mdb:before {\\n content: \\\"\\\\f8ca\\\"; }\\n\\n.fa-dochub:before {\\n content: \\\"\\\\f394\\\"; }\\n\\n.fa-accessible-icon:before {\\n content: \\\"\\\\f368\\\"; }\\n\\n.fa-ebay:before {\\n content: \\\"\\\\f4f4\\\"; }\\n\\n.fa-amazon:before {\\n content: \\\"\\\\f270\\\"; }\\n\\n.fa-unsplash:before {\\n content: \\\"\\\\e07c\\\"; }\\n\\n.fa-yarn:before {\\n content: \\\"\\\\f7e3\\\"; }\\n\\n.fa-square-steam:before {\\n content: \\\"\\\\f1b7\\\"; }\\n\\n.fa-steam-square:before {\\n content: \\\"\\\\f1b7\\\"; }\\n\\n.fa-500px:before {\\n content: \\\"\\\\f26e\\\"; }\\n\\n.fa-square-vimeo:before {\\n content: \\\"\\\\f194\\\"; }\\n\\n.fa-vimeo-square:before {\\n content: \\\"\\\\f194\\\"; }\\n\\n.fa-asymmetrik:before {\\n content: \\\"\\\\f372\\\"; }\\n\\n.fa-font-awesome:before {\\n content: \\\"\\\\f2b4\\\"; }\\n\\n.fa-font-awesome-flag:before {\\n content: \\\"\\\\f2b4\\\"; }\\n\\n.fa-font-awesome-logo-full:before {\\n content: \\\"\\\\f2b4\\\"; }\\n\\n.fa-gratipay:before {\\n content: \\\"\\\\f184\\\"; }\\n\\n.fa-apple:before {\\n content: \\\"\\\\f179\\\"; }\\n\\n.fa-hive:before {\\n content: \\\"\\\\e07f\\\"; }\\n\\n.fa-gitkraken:before {\\n content: \\\"\\\\f3a6\\\"; }\\n\\n.fa-keybase:before {\\n content: \\\"\\\\f4f5\\\"; }\\n\\n.fa-apple-pay:before {\\n content: \\\"\\\\f415\\\"; }\\n\\n.fa-padlet:before {\\n content: \\\"\\\\e4a0\\\"; }\\n\\n.fa-amazon-pay:before {\\n content: \\\"\\\\f42c\\\"; }\\n\\n.fa-square-github:before {\\n content: \\\"\\\\f092\\\"; }\\n\\n.fa-github-square:before {\\n content: \\\"\\\\f092\\\"; }\\n\\n.fa-stumbleupon:before {\\n content: \\\"\\\\f1a4\\\"; }\\n\\n.fa-fedex:before {\\n content: \\\"\\\\f797\\\"; }\\n\\n.fa-phoenix-framework:before {\\n content: \\\"\\\\f3dc\\\"; }\\n\\n.fa-shopify:before {\\n content: \\\"\\\\e057\\\"; }\\n\\n.fa-neos:before {\\n content: \\\"\\\\f612\\\"; }\\n\\n.fa-hackerrank:before {\\n content: \\\"\\\\f5f7\\\"; }\\n\\n.fa-researchgate:before {\\n content: \\\"\\\\f4f8\\\"; }\\n\\n.fa-swift:before {\\n content: \\\"\\\\f8e1\\\"; }\\n\\n.fa-angular:before {\\n content: \\\"\\\\f420\\\"; }\\n\\n.fa-speakap:before {\\n content: \\\"\\\\f3f3\\\"; }\\n\\n.fa-angrycreative:before {\\n content: \\\"\\\\f36e\\\"; }\\n\\n.fa-y-combinator:before {\\n content: \\\"\\\\f23b\\\"; }\\n\\n.fa-empire:before {\\n content: \\\"\\\\f1d1\\\"; }\\n\\n.fa-envira:before {\\n content: \\\"\\\\f299\\\"; }\\n\\n.fa-square-gitlab:before {\\n content: \\\"\\\\e5ae\\\"; }\\n\\n.fa-gitlab-square:before {\\n content: \\\"\\\\e5ae\\\"; }\\n\\n.fa-studiovinari:before {\\n content: \\\"\\\\f3f8\\\"; }\\n\\n.fa-pied-piper:before {\\n content: \\\"\\\\f2ae\\\"; }\\n\\n.fa-wordpress:before {\\n content: \\\"\\\\f19a\\\"; }\\n\\n.fa-product-hunt:before {\\n content: \\\"\\\\f288\\\"; }\\n\\n.fa-firefox:before {\\n content: \\\"\\\\f269\\\"; }\\n\\n.fa-linode:before {\\n content: \\\"\\\\f2b8\\\"; }\\n\\n.fa-goodreads:before {\\n content: \\\"\\\\f3a8\\\"; }\\n\\n.fa-square-odnoklassniki:before {\\n content: \\\"\\\\f264\\\"; }\\n\\n.fa-odnoklassniki-square:before {\\n content: \\\"\\\\f264\\\"; }\\n\\n.fa-jsfiddle:before {\\n content: \\\"\\\\f1cc\\\"; }\\n\\n.fa-sith:before {\\n content: \\\"\\\\f512\\\"; }\\n\\n.fa-themeisle:before {\\n content: \\\"\\\\f2b2\\\"; }\\n\\n.fa-page4:before {\\n content: \\\"\\\\f3d7\\\"; }\\n\\n.fa-hashnode:before {\\n content: \\\"\\\\e499\\\"; }\\n\\n.fa-react:before {\\n content: \\\"\\\\f41b\\\"; }\\n\\n.fa-cc-paypal:before {\\n content: \\\"\\\\f1f4\\\"; }\\n\\n.fa-squarespace:before {\\n content: \\\"\\\\f5be\\\"; }\\n\\n.fa-cc-stripe:before {\\n content: \\\"\\\\f1f5\\\"; }\\n\\n.fa-creative-commons-share:before {\\n content: \\\"\\\\f4f2\\\"; }\\n\\n.fa-bitcoin:before {\\n content: \\\"\\\\f379\\\"; }\\n\\n.fa-keycdn:before {\\n content: \\\"\\\\f3ba\\\"; }\\n\\n.fa-opera:before {\\n content: \\\"\\\\f26a\\\"; }\\n\\n.fa-itch-io:before {\\n content: \\\"\\\\f83a\\\"; }\\n\\n.fa-umbraco:before {\\n content: \\\"\\\\f8e8\\\"; }\\n\\n.fa-galactic-senate:before {\\n content: \\\"\\\\f50d\\\"; }\\n\\n.fa-ubuntu:before {\\n content: \\\"\\\\f7df\\\"; }\\n\\n.fa-draft2digital:before {\\n content: \\\"\\\\f396\\\"; }\\n\\n.fa-stripe:before {\\n content: \\\"\\\\f429\\\"; }\\n\\n.fa-houzz:before {\\n content: \\\"\\\\f27c\\\"; }\\n\\n.fa-gg:before {\\n content: \\\"\\\\f260\\\"; }\\n\\n.fa-dhl:before {\\n content: \\\"\\\\f790\\\"; }\\n\\n.fa-square-pinterest:before {\\n content: \\\"\\\\f0d3\\\"; }\\n\\n.fa-pinterest-square:before {\\n content: \\\"\\\\f0d3\\\"; }\\n\\n.fa-xing:before {\\n content: \\\"\\\\f168\\\"; }\\n\\n.fa-blackberry:before {\\n content: \\\"\\\\f37b\\\"; }\\n\\n.fa-creative-commons-pd:before {\\n content: \\\"\\\\f4ec\\\"; }\\n\\n.fa-playstation:before {\\n content: \\\"\\\\f3df\\\"; }\\n\\n.fa-quinscape:before {\\n content: \\\"\\\\f459\\\"; }\\n\\n.fa-less:before {\\n content: \\\"\\\\f41d\\\"; }\\n\\n.fa-blogger-b:before {\\n content: \\\"\\\\f37d\\\"; }\\n\\n.fa-opencart:before {\\n content: \\\"\\\\f23d\\\"; }\\n\\n.fa-vine:before {\\n content: \\\"\\\\f1ca\\\"; }\\n\\n.fa-paypal:before {\\n content: \\\"\\\\f1ed\\\"; }\\n\\n.fa-gitlab:before {\\n content: \\\"\\\\f296\\\"; }\\n\\n.fa-typo3:before {\\n content: \\\"\\\\f42b\\\"; }\\n\\n.fa-reddit-alien:before {\\n content: \\\"\\\\f281\\\"; }\\n\\n.fa-yahoo:before {\\n content: \\\"\\\\f19e\\\"; }\\n\\n.fa-dailymotion:before {\\n content: \\\"\\\\e052\\\"; }\\n\\n.fa-affiliatetheme:before {\\n content: \\\"\\\\f36b\\\"; }\\n\\n.fa-pied-piper-pp:before {\\n content: \\\"\\\\f1a7\\\"; }\\n\\n.fa-bootstrap:before {\\n content: \\\"\\\\f836\\\"; }\\n\\n.fa-odnoklassniki:before {\\n content: \\\"\\\\f263\\\"; }\\n\\n.fa-nfc-symbol:before {\\n content: \\\"\\\\e531\\\"; }\\n\\n.fa-ethereum:before {\\n content: \\\"\\\\f42e\\\"; }\\n\\n.fa-speaker-deck:before {\\n content: \\\"\\\\f83c\\\"; }\\n\\n.fa-creative-commons-nc-eu:before {\\n content: \\\"\\\\f4e9\\\"; }\\n\\n.fa-patreon:before {\\n content: \\\"\\\\f3d9\\\"; }\\n\\n.fa-avianex:before {\\n content: \\\"\\\\f374\\\"; }\\n\\n.fa-ello:before {\\n content: \\\"\\\\f5f1\\\"; }\\n\\n.fa-gofore:before {\\n content: \\\"\\\\f3a7\\\"; }\\n\\n.fa-bimobject:before {\\n content: \\\"\\\\f378\\\"; }\\n\\n.fa-facebook-f:before {\\n content: \\\"\\\\f39e\\\"; }\\n\\n.fa-square-google-plus:before {\\n content: \\\"\\\\f0d4\\\"; }\\n\\n.fa-google-plus-square:before {\\n content: \\\"\\\\f0d4\\\"; }\\n\\n.fa-mandalorian:before {\\n content: \\\"\\\\f50f\\\"; }\\n\\n.fa-first-order-alt:before {\\n content: \\\"\\\\f50a\\\"; }\\n\\n.fa-osi:before {\\n content: \\\"\\\\f41a\\\"; }\\n\\n.fa-google-wallet:before {\\n content: \\\"\\\\f1ee\\\"; }\\n\\n.fa-d-and-d-beyond:before {\\n content: \\\"\\\\f6ca\\\"; }\\n\\n.fa-periscope:before {\\n content: \\\"\\\\f3da\\\"; }\\n\\n.fa-fulcrum:before {\\n content: \\\"\\\\f50b\\\"; }\\n\\n.fa-cloudscale:before {\\n content: \\\"\\\\f383\\\"; }\\n\\n.fa-forumbee:before {\\n content: \\\"\\\\f211\\\"; }\\n\\n.fa-mizuni:before {\\n content: \\\"\\\\f3cc\\\"; }\\n\\n.fa-schlix:before {\\n content: \\\"\\\\f3ea\\\"; }\\n\\n.fa-square-xing:before {\\n content: \\\"\\\\f169\\\"; }\\n\\n.fa-xing-square:before {\\n content: \\\"\\\\f169\\\"; }\\n\\n.fa-bandcamp:before {\\n content: \\\"\\\\f2d5\\\"; }\\n\\n.fa-wpforms:before {\\n content: \\\"\\\\f298\\\"; }\\n\\n.fa-cloudversify:before {\\n content: \\\"\\\\f385\\\"; }\\n\\n.fa-usps:before {\\n content: \\\"\\\\f7e1\\\"; }\\n\\n.fa-megaport:before {\\n content: \\\"\\\\f5a3\\\"; }\\n\\n.fa-magento:before {\\n content: \\\"\\\\f3c4\\\"; }\\n\\n.fa-spotify:before {\\n content: \\\"\\\\f1bc\\\"; }\\n\\n.fa-optin-monster:before {\\n content: \\\"\\\\f23c\\\"; }\\n\\n.fa-fly:before {\\n content: \\\"\\\\f417\\\"; }\\n\\n.fa-aviato:before {\\n content: \\\"\\\\f421\\\"; }\\n\\n.fa-itunes:before {\\n content: \\\"\\\\f3b4\\\"; }\\n\\n.fa-cuttlefish:before {\\n content: \\\"\\\\f38c\\\"; }\\n\\n.fa-blogger:before {\\n content: \\\"\\\\f37c\\\"; }\\n\\n.fa-flickr:before {\\n content: \\\"\\\\f16e\\\"; }\\n\\n.fa-viber:before {\\n content: \\\"\\\\f409\\\"; }\\n\\n.fa-soundcloud:before {\\n content: \\\"\\\\f1be\\\"; }\\n\\n.fa-digg:before {\\n content: \\\"\\\\f1a6\\\"; }\\n\\n.fa-tencent-weibo:before {\\n content: \\\"\\\\f1d5\\\"; }\\n\\n.fa-symfony:before {\\n content: \\\"\\\\f83d\\\"; }\\n\\n.fa-maxcdn:before {\\n content: \\\"\\\\f136\\\"; }\\n\\n.fa-etsy:before {\\n content: \\\"\\\\f2d7\\\"; }\\n\\n.fa-facebook-messenger:before {\\n content: \\\"\\\\f39f\\\"; }\\n\\n.fa-audible:before {\\n content: \\\"\\\\f373\\\"; }\\n\\n.fa-think-peaks:before {\\n content: \\\"\\\\f731\\\"; }\\n\\n.fa-bilibili:before {\\n content: \\\"\\\\e3d9\\\"; }\\n\\n.fa-erlang:before {\\n content: \\\"\\\\f39d\\\"; }\\n\\n.fa-cotton-bureau:before {\\n content: \\\"\\\\f89e\\\"; }\\n\\n.fa-dashcube:before {\\n content: \\\"\\\\f210\\\"; }\\n\\n.fa-42-group:before {\\n content: \\\"\\\\e080\\\"; }\\n\\n.fa-innosoft:before {\\n content: \\\"\\\\e080\\\"; }\\n\\n.fa-stack-exchange:before {\\n content: \\\"\\\\f18d\\\"; }\\n\\n.fa-elementor:before {\\n content: \\\"\\\\f430\\\"; }\\n\\n.fa-square-pied-piper:before {\\n content: \\\"\\\\e01e\\\"; }\\n\\n.fa-pied-piper-square:before {\\n content: \\\"\\\\e01e\\\"; }\\n\\n.fa-creative-commons-nd:before {\\n content: \\\"\\\\f4eb\\\"; }\\n\\n.fa-palfed:before {\\n content: \\\"\\\\f3d8\\\"; }\\n\\n.fa-superpowers:before {\\n content: \\\"\\\\f2dd\\\"; }\\n\\n.fa-resolving:before {\\n content: \\\"\\\\f3e7\\\"; }\\n\\n.fa-xbox:before {\\n content: \\\"\\\\f412\\\"; }\\n\\n.fa-searchengin:before {\\n content: \\\"\\\\f3eb\\\"; }\\n\\n.fa-tiktok:before {\\n content: \\\"\\\\e07b\\\"; }\\n\\n.fa-square-facebook:before {\\n content: \\\"\\\\f082\\\"; }\\n\\n.fa-facebook-square:before {\\n content: \\\"\\\\f082\\\"; }\\n\\n.fa-renren:before {\\n content: \\\"\\\\f18b\\\"; }\\n\\n.fa-linux:before {\\n content: \\\"\\\\f17c\\\"; }\\n\\n.fa-glide:before {\\n content: \\\"\\\\f2a5\\\"; }\\n\\n.fa-linkedin:before {\\n content: \\\"\\\\f08c\\\"; }\\n\\n.fa-hubspot:before {\\n content: \\\"\\\\f3b2\\\"; }\\n\\n.fa-deploydog:before {\\n content: \\\"\\\\f38e\\\"; }\\n\\n.fa-twitch:before {\\n content: \\\"\\\\f1e8\\\"; }\\n\\n.fa-ravelry:before {\\n content: \\\"\\\\f2d9\\\"; }\\n\\n.fa-mixer:before {\\n content: \\\"\\\\e056\\\"; }\\n\\n.fa-square-lastfm:before {\\n content: \\\"\\\\f203\\\"; }\\n\\n.fa-lastfm-square:before {\\n content: \\\"\\\\f203\\\"; }\\n\\n.fa-vimeo:before {\\n content: \\\"\\\\f40a\\\"; }\\n\\n.fa-mendeley:before {\\n content: \\\"\\\\f7b3\\\"; }\\n\\n.fa-uniregistry:before {\\n content: \\\"\\\\f404\\\"; }\\n\\n.fa-figma:before {\\n content: \\\"\\\\f799\\\"; }\\n\\n.fa-creative-commons-remix:before {\\n content: \\\"\\\\f4ee\\\"; }\\n\\n.fa-cc-amazon-pay:before {\\n content: \\\"\\\\f42d\\\"; }\\n\\n.fa-dropbox:before {\\n content: \\\"\\\\f16b\\\"; }\\n\\n.fa-instagram:before {\\n content: \\\"\\\\f16d\\\"; }\\n\\n.fa-cmplid:before {\\n content: \\\"\\\\e360\\\"; }\\n\\n.fa-facebook:before {\\n content: \\\"\\\\f09a\\\"; }\\n\\n.fa-gripfire:before {\\n content: \\\"\\\\f3ac\\\"; }\\n\\n.fa-jedi-order:before {\\n content: \\\"\\\\f50e\\\"; }\\n\\n.fa-uikit:before {\\n content: \\\"\\\\f403\\\"; }\\n\\n.fa-fort-awesome-alt:before {\\n content: \\\"\\\\f3a3\\\"; }\\n\\n.fa-phabricator:before {\\n content: \\\"\\\\f3db\\\"; }\\n\\n.fa-ussunnah:before {\\n content: \\\"\\\\f407\\\"; }\\n\\n.fa-earlybirds:before {\\n content: \\\"\\\\f39a\\\"; }\\n\\n.fa-trade-federation:before {\\n content: \\\"\\\\f513\\\"; }\\n\\n.fa-autoprefixer:before {\\n content: \\\"\\\\f41c\\\"; }\\n\\n.fa-whatsapp:before {\\n content: \\\"\\\\f232\\\"; }\\n\\n.fa-slideshare:before {\\n content: \\\"\\\\f1e7\\\"; }\\n\\n.fa-google-play:before {\\n content: \\\"\\\\f3ab\\\"; }\\n\\n.fa-viadeo:before {\\n content: \\\"\\\\f2a9\\\"; }\\n\\n.fa-line:before {\\n content: \\\"\\\\f3c0\\\"; }\\n\\n.fa-google-drive:before {\\n content: \\\"\\\\f3aa\\\"; }\\n\\n.fa-servicestack:before {\\n content: \\\"\\\\f3ec\\\"; }\\n\\n.fa-simplybuilt:before {\\n content: \\\"\\\\f215\\\"; }\\n\\n.fa-bitbucket:before {\\n content: \\\"\\\\f171\\\"; }\\n\\n.fa-imdb:before {\\n content: \\\"\\\\f2d8\\\"; }\\n\\n.fa-deezer:before {\\n content: \\\"\\\\e077\\\"; }\\n\\n.fa-raspberry-pi:before {\\n content: \\\"\\\\f7bb\\\"; }\\n\\n.fa-jira:before {\\n content: \\\"\\\\f7b1\\\"; }\\n\\n.fa-docker:before {\\n content: \\\"\\\\f395\\\"; }\\n\\n.fa-screenpal:before {\\n content: \\\"\\\\e570\\\"; }\\n\\n.fa-bluetooth:before {\\n content: \\\"\\\\f293\\\"; }\\n\\n.fa-gitter:before {\\n content: \\\"\\\\f426\\\"; }\\n\\n.fa-d-and-d:before {\\n content: \\\"\\\\f38d\\\"; }\\n\\n.fa-microblog:before {\\n content: \\\"\\\\e01a\\\"; }\\n\\n.fa-cc-diners-club:before {\\n content: \\\"\\\\f24c\\\"; }\\n\\n.fa-gg-circle:before {\\n content: \\\"\\\\f261\\\"; }\\n\\n.fa-pied-piper-hat:before {\\n content: \\\"\\\\f4e5\\\"; }\\n\\n.fa-kickstarter-k:before {\\n content: \\\"\\\\f3bc\\\"; }\\n\\n.fa-yandex:before {\\n content: \\\"\\\\f413\\\"; }\\n\\n.fa-readme:before {\\n content: \\\"\\\\f4d5\\\"; }\\n\\n.fa-html5:before {\\n content: \\\"\\\\f13b\\\"; }\\n\\n.fa-sellsy:before {\\n content: \\\"\\\\f213\\\"; }\\n\\n.fa-sass:before {\\n content: \\\"\\\\f41e\\\"; }\\n\\n.fa-wirsindhandwerk:before {\\n content: \\\"\\\\e2d0\\\"; }\\n\\n.fa-wsh:before {\\n content: \\\"\\\\e2d0\\\"; }\\n\\n.fa-buromobelexperte:before {\\n content: \\\"\\\\f37f\\\"; }\\n\\n.fa-salesforce:before {\\n content: \\\"\\\\f83b\\\"; }\\n\\n.fa-octopus-deploy:before {\\n content: \\\"\\\\e082\\\"; }\\n\\n.fa-medapps:before {\\n content: \\\"\\\\f3c6\\\"; }\\n\\n.fa-ns8:before {\\n content: \\\"\\\\f3d5\\\"; }\\n\\n.fa-pinterest-p:before {\\n content: \\\"\\\\f231\\\"; }\\n\\n.fa-apper:before {\\n content: \\\"\\\\f371\\\"; }\\n\\n.fa-fort-awesome:before {\\n content: \\\"\\\\f286\\\"; }\\n\\n.fa-waze:before {\\n content: \\\"\\\\f83f\\\"; }\\n\\n.fa-cc-jcb:before {\\n content: \\\"\\\\f24b\\\"; }\\n\\n.fa-snapchat:before {\\n content: \\\"\\\\f2ab\\\"; }\\n\\n.fa-snapchat-ghost:before {\\n content: \\\"\\\\f2ab\\\"; }\\n\\n.fa-fantasy-flight-games:before {\\n content: \\\"\\\\f6dc\\\"; }\\n\\n.fa-rust:before {\\n content: \\\"\\\\e07a\\\"; }\\n\\n.fa-wix:before {\\n content: \\\"\\\\f5cf\\\"; }\\n\\n.fa-square-behance:before {\\n content: \\\"\\\\f1b5\\\"; }\\n\\n.fa-behance-square:before {\\n content: \\\"\\\\f1b5\\\"; }\\n\\n.fa-supple:before {\\n content: \\\"\\\\f3f9\\\"; }\\n\\n.fa-rebel:before {\\n content: \\\"\\\\f1d0\\\"; }\\n\\n.fa-css3:before {\\n content: \\\"\\\\f13c\\\"; }\\n\\n.fa-staylinked:before {\\n content: \\\"\\\\f3f5\\\"; }\\n\\n.fa-kaggle:before {\\n content: \\\"\\\\f5fa\\\"; }\\n\\n.fa-space-awesome:before {\\n content: \\\"\\\\e5ac\\\"; }\\n\\n.fa-deviantart:before {\\n content: \\\"\\\\f1bd\\\"; }\\n\\n.fa-cpanel:before {\\n content: \\\"\\\\f388\\\"; }\\n\\n.fa-goodreads-g:before {\\n content: \\\"\\\\f3a9\\\"; }\\n\\n.fa-square-git:before {\\n content: \\\"\\\\f1d2\\\"; }\\n\\n.fa-git-square:before {\\n content: \\\"\\\\f1d2\\\"; }\\n\\n.fa-square-tumblr:before {\\n content: \\\"\\\\f174\\\"; }\\n\\n.fa-tumblr-square:before {\\n content: \\\"\\\\f174\\\"; }\\n\\n.fa-trello:before {\\n content: \\\"\\\\f181\\\"; }\\n\\n.fa-creative-commons-nc-jp:before {\\n content: \\\"\\\\f4ea\\\"; }\\n\\n.fa-get-pocket:before {\\n content: \\\"\\\\f265\\\"; }\\n\\n.fa-perbyte:before {\\n content: \\\"\\\\e083\\\"; }\\n\\n.fa-grunt:before {\\n content: \\\"\\\\f3ad\\\"; }\\n\\n.fa-weebly:before {\\n content: \\\"\\\\f5cc\\\"; }\\n\\n.fa-connectdevelop:before {\\n content: \\\"\\\\f20e\\\"; }\\n\\n.fa-leanpub:before {\\n content: \\\"\\\\f212\\\"; }\\n\\n.fa-black-tie:before {\\n content: \\\"\\\\f27e\\\"; }\\n\\n.fa-themeco:before {\\n content: \\\"\\\\f5c6\\\"; }\\n\\n.fa-python:before {\\n content: \\\"\\\\f3e2\\\"; }\\n\\n.fa-android:before {\\n content: \\\"\\\\f17b\\\"; }\\n\\n.fa-bots:before {\\n content: \\\"\\\\e340\\\"; }\\n\\n.fa-free-code-camp:before {\\n content: \\\"\\\\f2c5\\\"; }\\n\\n.fa-hornbill:before {\\n content: \\\"\\\\f592\\\"; }\\n\\n.fa-js:before {\\n content: \\\"\\\\f3b8\\\"; }\\n\\n.fa-ideal:before {\\n content: \\\"\\\\e013\\\"; }\\n\\n.fa-git:before {\\n content: \\\"\\\\f1d3\\\"; }\\n\\n.fa-dev:before {\\n content: \\\"\\\\f6cc\\\"; }\\n\\n.fa-sketch:before {\\n content: \\\"\\\\f7c6\\\"; }\\n\\n.fa-yandex-international:before {\\n content: \\\"\\\\f414\\\"; }\\n\\n.fa-cc-amex:before {\\n content: \\\"\\\\f1f3\\\"; }\\n\\n.fa-uber:before {\\n content: \\\"\\\\f402\\\"; }\\n\\n.fa-github:before {\\n content: \\\"\\\\f09b\\\"; }\\n\\n.fa-php:before {\\n content: \\\"\\\\f457\\\"; }\\n\\n.fa-alipay:before {\\n content: \\\"\\\\f642\\\"; }\\n\\n.fa-youtube:before {\\n content: \\\"\\\\f167\\\"; }\\n\\n.fa-skyatlas:before {\\n content: \\\"\\\\f216\\\"; }\\n\\n.fa-firefox-browser:before {\\n content: \\\"\\\\e007\\\"; }\\n\\n.fa-replyd:before {\\n content: \\\"\\\\f3e6\\\"; }\\n\\n.fa-suse:before {\\n content: \\\"\\\\f7d6\\\"; }\\n\\n.fa-jenkins:before {\\n content: \\\"\\\\f3b6\\\"; }\\n\\n.fa-twitter:before {\\n content: \\\"\\\\f099\\\"; }\\n\\n.fa-rockrms:before {\\n content: \\\"\\\\f3e9\\\"; }\\n\\n.fa-pinterest:before {\\n content: \\\"\\\\f0d2\\\"; }\\n\\n.fa-buffer:before {\\n content: \\\"\\\\f837\\\"; }\\n\\n.fa-npm:before {\\n content: \\\"\\\\f3d4\\\"; }\\n\\n.fa-yammer:before {\\n content: \\\"\\\\f840\\\"; }\\n\\n.fa-btc:before {\\n content: \\\"\\\\f15a\\\"; }\\n\\n.fa-dribbble:before {\\n content: \\\"\\\\f17d\\\"; }\\n\\n.fa-stumbleupon-circle:before {\\n content: \\\"\\\\f1a3\\\"; }\\n\\n.fa-internet-explorer:before {\\n content: \\\"\\\\f26b\\\"; }\\n\\n.fa-telegram:before {\\n content: \\\"\\\\f2c6\\\"; }\\n\\n.fa-telegram-plane:before {\\n content: \\\"\\\\f2c6\\\"; }\\n\\n.fa-old-republic:before {\\n content: \\\"\\\\f510\\\"; }\\n\\n.fa-square-whatsapp:before {\\n content: \\\"\\\\f40c\\\"; }\\n\\n.fa-whatsapp-square:before {\\n content: \\\"\\\\f40c\\\"; }\\n\\n.fa-node-js:before {\\n content: \\\"\\\\f3d3\\\"; }\\n\\n.fa-edge-legacy:before {\\n content: \\\"\\\\e078\\\"; }\\n\\n.fa-slack:before {\\n content: \\\"\\\\f198\\\"; }\\n\\n.fa-slack-hash:before {\\n content: \\\"\\\\f198\\\"; }\\n\\n.fa-medrt:before {\\n content: \\\"\\\\f3c8\\\"; }\\n\\n.fa-usb:before {\\n content: \\\"\\\\f287\\\"; }\\n\\n.fa-tumblr:before {\\n content: \\\"\\\\f173\\\"; }\\n\\n.fa-vaadin:before {\\n content: \\\"\\\\f408\\\"; }\\n\\n.fa-quora:before {\\n content: \\\"\\\\f2c4\\\"; }\\n\\n.fa-reacteurope:before {\\n content: \\\"\\\\f75d\\\"; }\\n\\n.fa-medium:before {\\n content: \\\"\\\\f23a\\\"; }\\n\\n.fa-medium-m:before {\\n content: \\\"\\\\f23a\\\"; }\\n\\n.fa-amilia:before {\\n content: \\\"\\\\f36d\\\"; }\\n\\n.fa-mixcloud:before {\\n content: \\\"\\\\f289\\\"; }\\n\\n.fa-flipboard:before {\\n content: \\\"\\\\f44d\\\"; }\\n\\n.fa-viacoin:before {\\n content: \\\"\\\\f237\\\"; }\\n\\n.fa-critical-role:before {\\n content: \\\"\\\\f6c9\\\"; }\\n\\n.fa-sitrox:before {\\n content: \\\"\\\\e44a\\\"; }\\n\\n.fa-discourse:before {\\n content: \\\"\\\\f393\\\"; }\\n\\n.fa-joomla:before {\\n content: \\\"\\\\f1aa\\\"; }\\n\\n.fa-mastodon:before {\\n content: \\\"\\\\f4f6\\\"; }\\n\\n.fa-airbnb:before {\\n content: \\\"\\\\f834\\\"; }\\n\\n.fa-wolf-pack-battalion:before {\\n content: \\\"\\\\f514\\\"; }\\n\\n.fa-buy-n-large:before {\\n content: \\\"\\\\f8a6\\\"; }\\n\\n.fa-gulp:before {\\n content: \\\"\\\\f3ae\\\"; }\\n\\n.fa-creative-commons-sampling-plus:before {\\n content: \\\"\\\\f4f1\\\"; }\\n\\n.fa-strava:before {\\n content: \\\"\\\\f428\\\"; }\\n\\n.fa-ember:before {\\n content: \\\"\\\\f423\\\"; }\\n\\n.fa-canadian-maple-leaf:before {\\n content: \\\"\\\\f785\\\"; }\\n\\n.fa-teamspeak:before {\\n content: \\\"\\\\f4f9\\\"; }\\n\\n.fa-pushed:before {\\n content: \\\"\\\\f3e1\\\"; }\\n\\n.fa-wordpress-simple:before {\\n content: \\\"\\\\f411\\\"; }\\n\\n.fa-nutritionix:before {\\n content: \\\"\\\\f3d6\\\"; }\\n\\n.fa-wodu:before {\\n content: \\\"\\\\e088\\\"; }\\n\\n.fa-google-pay:before {\\n content: \\\"\\\\e079\\\"; }\\n\\n.fa-intercom:before {\\n content: \\\"\\\\f7af\\\"; }\\n\\n.fa-zhihu:before {\\n content: \\\"\\\\f63f\\\"; }\\n\\n.fa-korvue:before {\\n content: \\\"\\\\f42f\\\"; }\\n\\n.fa-pix:before {\\n content: \\\"\\\\e43a\\\"; }\\n\\n.fa-steam-symbol:before {\\n content: \\\"\\\\f3f6\\\"; }\\n:root, :host {\\n --fa-style-family-classic: 'Font Awesome 6 Free';\\n --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }\\n\\n@font-face {\\n font-family: 'Font Awesome 6 Free';\\n font-style: normal;\\n font-weight: 400;\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"truetype\\\"); }\\n\\n.far,\\n.fa-regular {\\n font-weight: 400; }\\n:root, :host {\\n --fa-style-family-classic: 'Font Awesome 6 Free';\\n --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }\\n\\n@font-face {\\n font-family: 'Font Awesome 6 Free';\\n font-style: normal;\\n font-weight: 900;\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"truetype\\\"); }\\n\\n.fas,\\n.fa-solid {\\n font-weight: 900; }\\n@font-face {\\n font-family: 'Font Awesome 5 Brands';\\n font-display: block;\\n font-weight: 400;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\"); }\\n\\n@font-face {\\n font-family: 'Font Awesome 5 Free';\\n font-display: block;\\n font-weight: 900;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"truetype\\\"); }\\n\\n@font-face {\\n font-family: 'Font Awesome 5 Free';\\n font-display: block;\\n font-weight: 400;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"truetype\\\"); }\\n@font-face {\\n font-family: 'FontAwesome';\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"truetype\\\"); }\\n\\n@font-face {\\n font-family: 'FontAwesome';\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"truetype\\\"); }\\n\\n@font-face {\\n font-family: 'FontAwesome';\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"truetype\\\");\\n unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }\\n\\n@font-face {\\n font-family: 'FontAwesome';\\n font-display: block;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \") format(\\\"woff2\\\"), url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format(\\\"truetype\\\");\\n unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/css/all.css?./node_modules/css-loader/dist/cjs.js");
|
|
1240
|
-
|
|
1241
|
-
/***/ }),
|
|
1242
|
-
|
|
1243
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./src/interface.css":
|
|
1244
|
-
/*!*****************************************************************!*\
|
|
1245
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./src/interface.css ***!
|
|
1246
|
-
\*****************************************************************/
|
|
1247
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1248
|
-
|
|
1249
|
-
"use strict";
|
|
1250
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.corner_placeholder {\\n position: absolute;\\n display: flex;\\n padding: 8px;\\n z-index:10;\\n}\\n\\n.top { top: 0; }\\n.right { right: 0; }\\n.left { left: 0; }\\n.bottom { bottom: 0 }\\n\\n.square_button{\\n border-radius: 8px;\\n border:none;\\n padding: 8px;\\n cursor: pointer;\\n background-color: rgba(239, 239, 239, 0.95);\\n color:#555;\\n width: 56px;\\n height: 56px;\\n}\\n\\n.square_button:hover{\\n background-color: #ddd;\\n}\\n\\n/* TOGGLE */\\n\\n.screen_toggle{\\n cursor: default;\\n background-color: #ffffff;\\nmargin-left: 4px;\\nborder-radius : 0px;\\n padding-bottom: 0px ;\\n padding-top: 0px ;\\n}\\n\\n.screen_toggle:hover{\\n background-color: #ffffff;\\n}\\n\\n*[id^=\\\"button_edit_name_trash\\\"]{\\n display: none;\\n border-radius: 0px;\\n background-color: #dc3545;\\n margin-left: 4px;\\n margin-right: 4px;\\n}\\n\\n*[id^=\\\"button_edit_name_check\\\"]{\\ndisplay: none;\\nborder-radius: 0px;\\nbackground-color: #198754;\\n}\\n\\n/* BRANCH SCALE */\\n\\n.scale_line{\\n stroke-width: 1.2;\\n stroke: #555;\\n}\\n\\n.scale_text{\\n\\n}\\n\\n/* SEARCH */\\n\\n.search_input{\\n border: 1px solid #ddd;\\n border-right: none;\\n border-bottom-left-radius: 4px;\\n border-top-left-radius: 4px;\\n margin: 2px;\\n margin-right: 0;\\n background-color: white;\\n border-top-right-radius : 0;\\n border-bottom-right-radius : 0;\\n /*height: 13px !important;*/\\n}\\n\\n.search_input:hover{background-color: white;}\\n\\n.search_button {\\n margin: 2px;\\n margin-left: 0 !important;\\n\\n}\\n\\n/* TOP RIGHT SUB MENU */\\n\\n.tr-buttons{\\n flex-direction: column;\\n align-self: end;\\n display: flex;}\\n\\n.tr-buttons * {\\n align-self: flex-end;\\n}\\n\\n.tr-menus{\\n display: flex;\\n flex-direction: column;\\n margin-left: 4px;\\n\\n}\\n\\n.tr-menus > div {\\n align-self: flex-end;\\n width: 100%;\\n margin: 2px;\\n background-color: rgba(239, 239, 239, 0.95);\\n display: none;\\n}\\n\\n.menu_export{\\n border-radius: 4px;\\n\\n\\n}\\n\\n\\n.menu_export > div > button {\\n background-color: white;\\n}\\n\\n/* Accordion system for settings */\\n.menu_settings{\\n border-radius: 4px;\\n background-color: #aaa;\\n overflow-y: scroll;\\n max-height:95vh;\\n scrollbar-width: none; /* Firefox */\\n -ms-overflow-style: none; /* Internet Explorer 10+ */\\n}\\n\\n.menu_settings::-webkit-scrollbar { /* WebKit */\\n width: 0;\\n height: 0;\\n}\\n\\n/* Style the buttons that are used to open and close the accordion panel */\\n.accordion {\\n background-color: #eee;\\n color: #444;\\n cursor: pointer;\\n padding: 18px;\\n width: 100%;\\n text-align: left;\\n border: none;\\n outline: none;\\n transition: 0.4s;\\n}\\n\\n/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */\\n.active, .accordion:hover {\\n background-color: #ccc;\\n}\\n\\n/* Style the accordion panel. Note: hidden by default */\\n.panel {\\n background-color: rgba(250, 250, 250, 0.98) !important;\\n padding: 0 18px;\\n background-color: white;\\n max-height: 0;\\n overflow: hidden;\\n transition: max-height 0.2s ease-out;\\n\\n}\\n\\n.accordion:after {\\n content: '\\\\02795'; /* Unicode character for \\\"plus\\\" sign (+) */\\n font-size: 13px;\\n color: #777;\\n float: right;\\n margin-left: 5px;\\n}\\n\\n.active:after {\\n content: \\\"\\\\2796\\\"; /* Unicode character for \\\"minus\\\" sign (-) */\\n}\\n\\n/* SLIDER */\\n\\n.slidecontainer {\\n width: 100%; /* Width of the outside container */\\n}\\n\\n/* The slider itself */\\n.slider {\\n -webkit-appearance: none; /* Override default CSS styles */\\n appearance: none;\\n width: 100%; /* Full-width */\\n height: 12px; /* Specified height */\\n background: #d3d3d3; /* Grey background */\\n outline: none; /* Remove outline */\\n opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */\\n -webkit-transition: .2s; /* 0.2 seconds transition on hover */\\n transition: opacity .2s;\\n}\\n\\n/* Mouse-over effects */\\n.slider:hover {\\n opacity: 1; /* Fully shown on mouse-over */\\n}\\n\\n/* The slider handle (use -webkit- (Chrome, Opera, Safari, Edge) and -moz- (Firefox) to override default look) */\\n.slider::-webkit-slider-thumb {\\n -webkit-appearance: none; /* Override default look */\\n appearance: none;\\n width: 12px; /* Set a specific slider handle width */\\n height: 12px; /* Slider handle height */\\n background: #04AA6D; /* Green background */\\n cursor: pointer; /* Cursor on hover */\\n}\\n\\n.slider::-moz-range-thumb {\\n width: 12px; /* Set a specific slider handle width */\\n height: 12px; /* Slider handle height */\\n background: #04AA6D; /* Green background */\\n cursor: pointer; /* Cursor on hover */\\n}\\n\\n/* TOGGLE */\\n\\n/* The switch - the box around the slider */\\n.switch {\\n position: relative;\\n display: inline-block;\\n width: 30px;\\n height: 20px;\\n}\\n\\n/* Hide default HTML checkbox */\\n.switch input {\\n opacity: 0;\\n width: 0;\\n height: 0;\\n}\\n\\n/* The slider */\\n.slider_t {\\n position: absolute;\\n cursor: pointer;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: #ccc;\\n -webkit-transition: .4s;\\n transition: .4s;\\n}\\n\\n.slider_t:before {\\n position: absolute;\\n content: \\\"\\\";\\n height: 16px;\\n width: 16px;\\n left: 2px;\\n bottom: 2px;\\n background-color: white;\\n -webkit-transition: .4s;\\n transition: .4s;\\n}\\n\\ninput:checked + .slider_t {\\n background-color: #2196F3;\\n}\\n\\ninput:focus + .slider_t {\\n box-shadow: 0 0 1px #2196F3;\\n}\\n\\ninput:checked + .slider_t:before {\\n -webkit-transform: translateX(10px);\\n -ms-transform: translateX(10px);\\n transform: translateX(10px);\\n}\\n\\n/* Rounded sliders */\\n.slider_t.round {\\n border-radius: 20px;\\n}\\n\\n.slider_t.round:before {\\n border-radius: 50%;\\n}\\n\\n\\n\\n.autocomplete {\\n /*the container must be positioned relative:*/\\n position: relative;\\n display: inline-block;\\n}\\n\\n\\n.autocomplete-items {\\n position: absolute;\\n border: none;\\n z-index: 99;\\n /*position the autocomplete items to be the same width as the container:*/\\n top: 100%;\\n left: 0;\\n padding-left: 4px;\\n padding-right: 4px;\\n right: 0;\\n}\\n.autocomplete-items div {\\n padding: 10px;\\n cursor: pointer;\\n background-color: rgba(250, 250, 250, 0.98);\\n\\n}\\n.autocomplete-items div:hover {\\n /*when hovering an item:*/\\n background-color: #e9e9e9;\\n}\\n.autocomplete-active {\\n /*when navigating through the items using the arrow keys:*/\\n background-color: DodgerBlue !important;\\n color: #ffffff;\\n}\\n\\n\\n.d3-tip {\\n font-family: Arial, Helvetica, sans-serif;\\n line-height: 1.4;\\n padding: 20px;\\n pointer-events: none !important;\\n color: #203d5d;\\n box-shadow: 0 4px 20px 4px rgba(0, 20, 60, .1), 0 4px 80px -8px rgba(0, 20, 60, .2);\\n background-color: #fff;\\n border-radius: 4px;\\n}\\n\\n/* Creates a small triangle extender for the tooltip */\\n.d3-tip:after {\\n box-sizing: border-box;\\n display: inline;\\n font-size: 10px;\\n width: 100%;\\n line-height: 1;\\n color: #fff;\\n position: absolute;\\n pointer-events: none;\\n}\\n\\n/* Northward tooltips */\\n.d3-tip.n:after {\\n content: \\\"▼\\\";\\n margin: -1px 0 0 0;\\n top: 100%;\\n left: 0;\\n text-align: center;\\n}\\n\\n/* Eastward tooltips */\\n.d3-tip.e:after {\\n content: \\\"◀\\\";\\n margin: -4px 0 0 0;\\n top: 50%;\\n left: -8px;\\n}\\n\\n/* Southward tooltips */\\n.d3-tip.s:after {\\n content: \\\"▲\\\";\\n margin: 0 0 1px 0;\\n top: -8px;\\n left: 0;\\n text-align: center;\\n}\\n\\n/* Westward tooltips */\\n.d3-tip.w:after {\\n content: \\\"▶\\\";\\n margin: -4px 0 0 -1px;\\n top: 50%;\\n left: 100%;\\n}\\n\\nbody {font-family: Arial, Helvetica, sans-serif;}\\n\\n.dropdrop{\\n position: relative;\\n display: none;\\n margin-top: -24px;\\n\\n}\\n\\n.modal{\\n z-index: 1000000000 !important;\\n}\\n\\n.dashed_button{\\n background-color: white;\\n border: 2px dashed #ddd;\\n border-radius: 50px;\\n margin:auto;\\n height: 36px;\\n margin-left: 12px;\\n}\\n\\n\\n\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://PhyloIO/./src/interface.css?./node_modules/css-loader/dist/cjs.js");
|
|
1251
|
-
|
|
1252
|
-
/***/ }),
|
|
1253
|
-
|
|
1254
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./src/progress-wizard.min.css":
|
|
1255
|
-
/*!***************************************************************************!*\
|
|
1256
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./src/progress-wizard.min.css ***!
|
|
1257
|
-
\***************************************************************************/
|
|
1258
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1259
|
-
|
|
1260
|
-
"use strict";
|
|
1261
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".flexer, .progress-indicator {\\n display: -webkit-box;\\n display: -moz-box;\\n display: -ms-flexbox;\\n display: -webkit-flex;\\n display: flex\\n}\\n\\n.no-flexer, .progress-indicator.stacked {\\n display: block\\n}\\n\\n.no-flexer-element {\\n -ms-flex: 0;\\n -webkit-flex: 0;\\n -moz-flex: 0;\\n flex: 0\\n}\\n\\n.flexer-element, .progress-indicator > li {\\n -ms-flex: 1;\\n -webkit-flex: 1;\\n -moz-flex: 1;\\n flex: 1\\n}\\n\\n.progress-indicator {\\n margin: 0 0;\\n padding: 0;\\n font-size: 80%;\\n text-transform: uppercase\\n}\\n\\n.progress-indicator > li {\\n list-style: none;\\n text-align: center;\\n width: auto;\\n padding: 0;\\n margin: 0;\\n position: relative;\\n text-overflow: ellipsis;\\n color: #bbb;\\n display: block\\n}\\n\\n.progress-indicator > li:hover {\\n color: #6f6f6f\\n}\\n\\n.progress-indicator > li.completed, .progress-indicator > li.completed .bubble {\\n color: #65d074\\n}\\n\\n.progress-indicator > li .bubble {\\n border-radius: 1000px;\\n width: 8px;\\n height: 8px;\\n background-color: #bbb;\\n display: block;\\n margin: 0 auto .5em;\\n border-bottom: 1px solid #888\\n}\\n\\n.progress-indicator > li barren, .progress-indicator > li barren {\\n display: block;\\n position: absolute;\\n top: 3px;\\n width: 100%;\\n height: 3px;\\n content: '';\\n background-color: #bbb\\n}\\n\\n.progress-indicator > li.completed .bubble, .progress-indicator > li.completed barren, .progress-indicator > li.completed barren {\\n background-color: #65d074;\\n border-color: #247830\\n}\\n\\n.progress-indicator > li barren {\\n left: 0\\n}\\n\\n.progress-indicator > li barren {\\n right: 0\\n}\\n\\n.progress-indicator > li:first-child barren, .progress-indicator > li:first-child barren {\\n width: 50%;\\n margin-left: 50%\\n}\\n\\n.progress-indicator > li:last-child barren, .progress-indicator > li:last-child barren {\\n width: 50%;\\n margin-right: 50%\\n}\\n\\n.progress-indicator > li.active, .progress-indicator > li.active .bubble {\\n color: #337AB7\\n}\\n\\n.progress-indicator > li.active .bubble, .progress-indicator > li.active barren, .progress-indicator > li.active barren {\\n background-color: #337AB7;\\n border-color: #122a3f\\n}\\n\\n.progress-indicator > li a:hover .bubble, .progress-indicator > li a:hover barren, .progress-indicator > li a:hover barren {\\n background-color: #5671d0;\\n border-color: #1f306e\\n}\\n\\n.progress-indicator > li a:hover .bubble {\\n color: #5671d0\\n}\\n\\n.progress-indicator > li.danger .bubble, .progress-indicator > li.danger barren, .progress-indicator > li.danger barren {\\n background-color: #d3140f;\\n border-color: #440605\\n}\\n\\n.progress-indicator > li.danger .bubble {\\n color: #d3140f\\n}\\n\\n.progress-indicator > li.warning .bubble, .progress-indicator > li.warning barren, .progress-indicator > li.warning barren {\\n background-color: #edb10a;\\n border-color: #5a4304\\n}\\n\\n.progress-indicator > li.warning .bubble {\\n color: #edb10a\\n}\\n\\n.progress-indicator > li.info .bubble, .progress-indicator > li.info barren, .progress-indicator > li.info barren {\\n background-color: #5b32d6;\\n border-color: #25135d\\n}\\n\\n.progress-indicator > li.info .bubble {\\n color: #5b32d6\\n}\\n\\n.progress-indicator.stacked > li {\\n text-indent: -10px;\\n text-align: center;\\n display: block\\n}\\n\\n.progress-indicator.stacked > li barren, .progress-indicator.stacked > li barren {\\n left: 50%;\\n margin-left: -1.5px;\\n width: 3px;\\n height: 100%\\n}\\n\\n.progress-indicator.stacked .stacked-text {\\n position: relative;\\n z-index: 10;\\n top: 0;\\n margin-left: 60% !important;\\n width: 45% !important;\\n display: inline-block;\\n text-align: left;\\n line-height: 1.2em\\n}\\n\\n.progress-indicator.stacked > li a {\\n border: none\\n}\\n\\n.progress-indicator.stacked.nocenter > li .bubble {\\n margin-left: 0;\\n margin-right: 0\\n}\\n\\n.progress-indicator.stacked.nocenter > li barren, .progress-indicator.stacked.nocenter > li barren {\\n left: 10px\\n}\\n\\n.progress-indicator.stacked.nocenter .stacked-text {\\n width: auto !important;\\n display: block;\\n margin-left: 40px !important\\n}\\n\\n@media handheld, screen and (max-width: 400px) {\\n .progress-indicator {\\n font-size: 60%\\n }\\n}\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://PhyloIO/./src/progress-wizard.min.css?./node_modules/css-loader/dist/cjs.js");
|
|
1262
|
-
|
|
1263
|
-
/***/ }),
|
|
1264
|
-
|
|
1265
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./src/style.css":
|
|
1266
|
-
/*!*************************************************************!*\
|
|
1267
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./src/style.css ***!
|
|
1268
|
-
\*************************************************************/
|
|
1269
|
-
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
1270
|
-
|
|
1271
|
-
"use strict";
|
|
1272
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nbody{\\n background-color: #dddd;\\n overflow: hidden;\\n}\\n\\n.overlaid{\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 9;\\n background-color: rgba(240,240,240,0.9);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n font-size: 6em;\\n color: white;\\n animation: blinker 2s linear infinite;\\n}\\n\\n\\n\\n\\n@keyframes blinker {\\n 50% {\\n opacity: 0;\\n }\\n}\\n\\n\\n\\n#container1_stack{\\n display: inline-block;\\n width: 100%;\\n height: 600px;\\n\\n background-color: #fff;\\n}\\n\\n#container1{\\n display: inline-block;\\n width: 45%;\\n height: 600px;\\n\\n background-color: #fff;\\n\\n}\\n\\n#container2{\\n display: inline-block;\\n width: 45%;\\n height: 600px;\\n\\n background-color: #fff;\\n}\\n\\n.node circle {\\n fill: #fff;\\n}\\n\\n.node text {\\n font-family: sans-serif;\\n\\n}\\n\\n\\n\\n#histogram-legend text, .legendtxt, .legendsummarytxt {\\n font-family: 'Open Sans', sans-serif;\\n text-rendering: optimizeLegibility;\\n stroke: none;\\n}\\n\\n\\n\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://PhyloIO/./src/style.css?./node_modules/css-loader/dist/cjs.js");
|
|
1273
|
-
|
|
1274
|
-
/***/ }),
|
|
1275
|
-
|
|
1276
|
-
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
|
1277
|
-
/*!*****************************************************!*\
|
|
1278
|
-
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
|
1279
|
-
\*****************************************************/
|
|
1280
|
-
/***/ ((module) => {
|
|
1281
|
-
|
|
1282
|
-
"use strict";
|
|
1283
|
-
eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack://PhyloIO/./node_modules/css-loader/dist/runtime/api.js?");
|
|
1284
|
-
|
|
1285
|
-
/***/ }),
|
|
1286
|
-
|
|
1287
|
-
/***/ "./node_modules/css-loader/dist/runtime/getUrl.js":
|
|
1288
|
-
/*!********************************************************!*\
|
|
1289
|
-
!*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
|
|
1290
|
-
\********************************************************/
|
|
1291
|
-
/***/ ((module) => {
|
|
1292
|
-
|
|
1293
|
-
"use strict";
|
|
1294
|
-
eval("\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};\n\n//# sourceURL=webpack://PhyloIO/./node_modules/css-loader/dist/runtime/getUrl.js?");
|
|
1295
|
-
|
|
1296
|
-
/***/ }),
|
|
1297
|
-
|
|
1298
583
|
/***/ "./node_modules/d3-array/src/array.js":
|
|
1299
584
|
/*!********************************************!*\
|
|
1300
585
|
!*** ./node_modules/d3-array/src/array.js ***!
|
|
@@ -7323,16 +6608,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7323
6608
|
|
|
7324
6609
|
/***/ }),
|
|
7325
6610
|
|
|
7326
|
-
/***/ "./node_modules/d3-v6-tip/build/d3-v6-tip.js":
|
|
7327
|
-
/*!***************************************************!*\
|
|
7328
|
-
!*** ./node_modules/d3-v6-tip/build/d3-v6-tip.js ***!
|
|
7329
|
-
\***************************************************/
|
|
7330
|
-
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
7331
|
-
|
|
7332
|
-
eval("(function (global, factory) {\n true ? factory(exports, __webpack_require__(/*! d3-selection */ \"./node_modules/d3-selection/src/index.js\")) :\n 0;\n}(this, function (exports,d3Selection) { 'use strict';\n\n function d3Tip () {\n const functor = function functor(v) {\n return typeof v === \"function\" ? v : function () {\n return v;\n };\n };\n\n var direction = d3_tip_direction,\n offset = d3_tip_offset,\n html = d3_tip_html,\n node = initNode(),\n svg = null,\n point = null,\n target = null,\n rootElement = functor(document.body)\n\n function tip(vis) {\n svg = getSVGNode(vis)\n point = svg.createSVGPoint()\n rootElement().appendChild(node)\n }\n\n // Public - show the tooltip on the screen\n //\n // Returns a tip\n tip.show = function () {\n var args = Array.prototype.slice.call(arguments)\n if (args[0] instanceof Event) {\n target = args[0].target;\n }\n if (args[args.length - 1] instanceof SVGElement) target = args.pop()\n\n var content = html.apply(this, args),\n poffset = offset.apply(this, args),\n dir = direction.apply(this, args),\n nodel = getNodeEl(),\n i = directions.length,\n coords,\n scrollTop = document.documentElement.scrollTop || rootElement().scrollTop,\n scrollLeft = document.documentElement.scrollLeft || rootElement().scrollLeft\n\n nodel.html(content)\n .style('position', 'absolute')\n .style('opacity', 1)\n .style('pointer-events', 'all')\n\n while (i--) nodel.classed(directions[i], false)\n coords = direction_callbacks[dir].apply(this)\n nodel.classed(dir, true)\n .style('top', (coords.top + poffset[0]) + scrollTop + 'px')\n .style('left', (coords.left + poffset[1]) + scrollLeft + 'px')\n\n return tip\n }\n\n // Public - hide the tooltip\n //\n // Returns a tip\n tip.hide = function () {\n var nodel = getNodeEl()\n nodel\n .style('opacity', 0)\n .style('pointer-events', 'none')\n return tip\n }\n\n // Public: Proxy attr calls to the d3 tip container. Sets or gets attribute value.\n //\n // n - name of the attribute\n // v - value of the attribute\n //\n // Returns tip or attribute value\n tip.attr = function (n, v) {\n if (arguments.length < 2 && typeof n === 'string') {\n return getNodeEl().attr(n)\n } else {\n var args = Array.prototype.slice.call(arguments)\n if (n == 'class') {\n // Prevent internal class override internally\n getNodeEl()\n .classed(v, true);\n } else {\n d3Selection.selection.prototype.attr.apply(getNodeEl(), args)\n }\n\n }\n\n return tip\n }\n\n // Public: Proxy style calls to the d3 tip container. Sets or gets a style value.\n //\n // n - name of the property\n // v - value of the property\n //\n // Returns tip or style property value\n tip.style = function (n, v) {\n if (arguments.length < 2 && typeof n === 'string') {\n return getNodeEl().style(n)\n } else {\n var args = Array.prototype.slice.call(arguments);\n if (args.length === 1) {\n var styles = args[0];\n Object.keys(styles).forEach(function (key) {\n return d3Selection.selection.prototype.style.apply(getNodeEl(), [key, styles[key]]);\n });\n }\n }\n\n return tip\n }\n\n // Public: Set or get the direction of the tooltip\n //\n // v - One of n(north), s(south), e(east), or w(west), nw(northwest),\n // sw(southwest), ne(northeast) or se(southeast)\n //\n // Returns tip or direction\n tip.direction = function (v) {\n if (!arguments.length) return direction\n direction = v == null ? v : functor(v)\n\n return tip\n }\n\n // Public: Sets or gets the offset of the tip\n //\n // v - Array of [x, y] offset\n //\n // Returns offset or\n tip.offset = function (v) {\n if (!arguments.length) return offset\n offset = v == null ? v : functor(v)\n\n return tip;\n }\n\n // Public: sets or gets the html value of the tooltip\n //\n // v - String value of the tip\n //\n // Returns html value or tip\n tip.html = function (v) {\n if (!arguments.length) return html\n html = v == null ? v : functor(v)\n\n return tip\n }\n\n // Public: sets or gets the root element anchor of the tooltip\n //\n // v - the html rootElement \n //\n // Returns root node of tip\n tip.rootElement = function (v) {\n if (!arguments.length) return rootElement\n rootElement = v == null ? v : functor(v)\n\n return tip\n }\n\n // Public: destroys the tooltip and removes it from the DOM\n //\n // Returns a tip\n tip.destroy = function () {\n if (node) {\n getNodeEl().remove();\n node = null;\n }\n return tip;\n }\n\n function d3_tip_direction() { return 'n' }\n function d3_tip_offset() { return [0, 0] }\n function d3_tip_html() { return ' ' }\n\n var direction_callbacks = {\n n: direction_n,\n s: direction_s,\n e: direction_e,\n w: direction_w,\n nw: direction_nw,\n ne: direction_ne,\n sw: direction_sw,\n se: direction_se\n };\n\n var directions = Object.keys(direction_callbacks);\n\n function direction_n() {\n var bbox = getScreenBBox()\n return {\n top: bbox.n.y - node.offsetHeight,\n left: bbox.n.x - node.offsetWidth / 2\n }\n }\n\n function direction_s() {\n var bbox = getScreenBBox()\n return {\n top: bbox.s.y,\n left: bbox.s.x - node.offsetWidth / 2\n }\n }\n\n function direction_e() {\n var bbox = getScreenBBox()\n return {\n top: bbox.e.y - node.offsetHeight / 2,\n left: bbox.e.x\n }\n }\n\n function direction_w() {\n var bbox = getScreenBBox()\n return {\n top: bbox.w.y - node.offsetHeight / 2,\n left: bbox.w.x - node.offsetWidth\n }\n }\n\n function direction_nw() {\n var bbox = getScreenBBox()\n return {\n top: bbox.nw.y - node.offsetHeight,\n left: bbox.nw.x - node.offsetWidth\n }\n }\n\n function direction_ne() {\n var bbox = getScreenBBox()\n return {\n top: bbox.ne.y - node.offsetHeight,\n left: bbox.ne.x\n }\n }\n\n function direction_sw() {\n var bbox = getScreenBBox()\n return {\n top: bbox.sw.y,\n left: bbox.sw.x - node.offsetWidth\n }\n }\n\n function direction_se() {\n var bbox = getScreenBBox()\n return {\n top: bbox.se.y,\n left: bbox.e.x\n }\n }\n\n function initNode() {\n let tipNode2 = 2;\n let tipNode = d3Selection.select('.d3-tip-lib-node');\n if (!tipNode.node()) {\n tipNode = d3Selection.select(document.createElement('div'))\n }\n tipNode\n .classed('d3-tip-lib-node', true)\n .style('position', 'absolute')\n .style('top', '0')\n .style('opacity', '0')\n .style('pointer-events', 'none')\n .style('box-sizing', 'border-box')\n\n return tipNode.node()\n }\n\n function getSVGNode(el) {\n el = el.node()\n if (el.tagName.toLowerCase() === 'svg')\n return el\n\n return el.ownerSVGElement\n }\n\n function getNodeEl() {\n if (node === null) {\n node = initNode();\n // re-add node to DOM\n document.body.appendChild(node);\n };\n return d3Selection.select(node);\n }\n\n // Private - gets the screen coordinates of a shape\n //\n // Given a shape on the screen, will return an SVGPoint for the directions\n // n(north), s(south), e(east), w(west), ne(northeast), se(southeast), nw(northwest),\n // sw(southwest).\n //\n // +-+-+\n // | |\n // + +\n // | |\n // +-+-+\n //\n // Returns an Object {n, s, e, w, nw, sw, ne, se}\n function getScreenBBox() {\n var targetel = target || d3.event.target;\n\n while ('undefined' === typeof targetel.getScreenCTM && 'undefined' === targetel.parentNode) {\n targetel = targetel.parentNode;\n }\n\n var bbox = {},\n matrix = targetel.getScreenCTM(),\n tbbox = targetel.getBBox(),\n width = tbbox.width,\n height = tbbox.height,\n x = tbbox.x,\n y = tbbox.y\n\n point.x = x\n point.y = y\n bbox.nw = point.matrixTransform(matrix)\n point.x += width\n bbox.ne = point.matrixTransform(matrix)\n point.y += height\n bbox.se = point.matrixTransform(matrix)\n point.x -= width\n bbox.sw = point.matrixTransform(matrix)\n point.y -= height / 2\n bbox.w = point.matrixTransform(matrix)\n point.x += width\n bbox.e = point.matrixTransform(matrix)\n point.x -= width / 2\n point.y -= height / 2\n bbox.n = point.matrixTransform(matrix)\n point.y += height\n bbox.s = point.matrixTransform(matrix)\n\n return bbox\n }\n\n return tip\n };\n\n exports.tip = d3Tip;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n\n//# sourceURL=webpack://PhyloIO/./node_modules/d3-v6-tip/build/d3-v6-tip.js?");
|
|
7333
|
-
|
|
7334
|
-
/***/ }),
|
|
7335
|
-
|
|
7336
6611
|
/***/ "./node_modules/d3-zoom/src/constant.js":
|
|
7337
6612
|
/*!**********************************************!*\
|
|
7338
6613
|
!*** ./node_modules/d3-zoom/src/constant.js ***!
|
|
@@ -7733,94 +7008,6 @@ eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe
|
|
|
7733
7008
|
|
|
7734
7009
|
/***/ }),
|
|
7735
7010
|
|
|
7736
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.ttf":
|
|
7737
|
-
/*!*******************************************************************!*\
|
|
7738
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.ttf ***!
|
|
7739
|
-
\*******************************************************************/
|
|
7740
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7741
|
-
|
|
7742
|
-
"use strict";
|
|
7743
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-brands-400.ttf\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.ttf?");
|
|
7744
|
-
|
|
7745
|
-
/***/ }),
|
|
7746
|
-
|
|
7747
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.woff2":
|
|
7748
|
-
/*!*********************************************************************!*\
|
|
7749
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.woff2 ***!
|
|
7750
|
-
\*********************************************************************/
|
|
7751
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7752
|
-
|
|
7753
|
-
"use strict";
|
|
7754
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-brands-400.woff2\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-brands-400.woff2?");
|
|
7755
|
-
|
|
7756
|
-
/***/ }),
|
|
7757
|
-
|
|
7758
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.ttf":
|
|
7759
|
-
/*!********************************************************************!*\
|
|
7760
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.ttf ***!
|
|
7761
|
-
\********************************************************************/
|
|
7762
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7763
|
-
|
|
7764
|
-
"use strict";
|
|
7765
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-regular-400.ttf\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.ttf?");
|
|
7766
|
-
|
|
7767
|
-
/***/ }),
|
|
7768
|
-
|
|
7769
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.woff2":
|
|
7770
|
-
/*!**********************************************************************!*\
|
|
7771
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.woff2 ***!
|
|
7772
|
-
\**********************************************************************/
|
|
7773
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7774
|
-
|
|
7775
|
-
"use strict";
|
|
7776
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-regular-400.woff2\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-regular-400.woff2?");
|
|
7777
|
-
|
|
7778
|
-
/***/ }),
|
|
7779
|
-
|
|
7780
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.ttf":
|
|
7781
|
-
/*!******************************************************************!*\
|
|
7782
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.ttf ***!
|
|
7783
|
-
\******************************************************************/
|
|
7784
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7785
|
-
|
|
7786
|
-
"use strict";
|
|
7787
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-solid-900.ttf\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.ttf?");
|
|
7788
|
-
|
|
7789
|
-
/***/ }),
|
|
7790
|
-
|
|
7791
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.woff2":
|
|
7792
|
-
/*!********************************************************************!*\
|
|
7793
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.woff2 ***!
|
|
7794
|
-
\********************************************************************/
|
|
7795
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7796
|
-
|
|
7797
|
-
"use strict";
|
|
7798
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-solid-900.woff2\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-solid-900.woff2?");
|
|
7799
|
-
|
|
7800
|
-
/***/ }),
|
|
7801
|
-
|
|
7802
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.ttf":
|
|
7803
|
-
/*!************************************************************************!*\
|
|
7804
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.ttf ***!
|
|
7805
|
-
\************************************************************************/
|
|
7806
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7807
|
-
|
|
7808
|
-
"use strict";
|
|
7809
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-v4compatibility.ttf\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.ttf?");
|
|
7810
|
-
|
|
7811
|
-
/***/ }),
|
|
7812
|
-
|
|
7813
|
-
/***/ "./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.woff2":
|
|
7814
|
-
/*!**************************************************************************!*\
|
|
7815
|
-
!*** ./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.woff2 ***!
|
|
7816
|
-
\**************************************************************************/
|
|
7817
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7818
|
-
|
|
7819
|
-
"use strict";
|
|
7820
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"fonts/fa-v4compatibility.woff2\");\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/webfonts/fa-v4compatibility.woff2?");
|
|
7821
|
-
|
|
7822
|
-
/***/ }),
|
|
7823
|
-
|
|
7824
7011
|
/***/ "./node_modules/file-saver/dist/FileSaver.min.js":
|
|
7825
7012
|
/*!*******************************************************!*\
|
|
7826
7013
|
!*** ./node_modules/file-saver/dist/FileSaver.min.js ***!
|
|
@@ -8486,6 +7673,16 @@ eval("/* eslint-disable node/no-deprecated-api */\n\n\n\nvar buffer = __webpack_
|
|
|
8486
7673
|
|
|
8487
7674
|
/***/ }),
|
|
8488
7675
|
|
|
7676
|
+
/***/ "./node_modules/sax/lib/sax.js":
|
|
7677
|
+
/*!*************************************!*\
|
|
7678
|
+
!*** ./node_modules/sax/lib/sax.js ***!
|
|
7679
|
+
\*************************************/
|
|
7680
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
7681
|
+
|
|
7682
|
+
eval(";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // disallow unquoted attribute values if not otherwise configured\n // and strict mode is true\n if (parser.opt.unquotedAttributeValues === undefined) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = (__webpack_require__(/*! stream */ \"./node_modules/stream-browserify/index.js\").Stream)\n } catch (ex) {\n Stream = function () {}\n }\n if (!Stream) Stream = function () {}\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = (__webpack_require__(/*! string_decoder */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder)\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // & and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\""\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar="\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n continue;\n }\n\n if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n parser.state = S.DOCTYPE_DTD\n parser.doctype += '<!' + parser.sgmlDecl + c\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n if (c === ']') {\n parser.doctype += c\n parser.state = S.DOCTYPE\n } else if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (isQuote(c)) {\n parser.doctype += c\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n } else {\n parser.doctype += c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else if (parser.doctype && parser.doctype !== true) {\n parser.state = S.DOCTYPE_DTD\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n if (!parser.opt.unquotedAttributeValues) {\n error(parser, 'Unquoted attribute value')\n }\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n var parsedEntity = parseEntity(parser)\n if (parser.opt.unparsedEntities && !Object.values(sax.XML_ENTITIES).includes(parsedEntity)) {\n parser.entity = ''\n parser.state = returnState\n parser.write(parsedEntity)\n } else {\n parser[buffer] += parsedEntity\n parser.entity = ''\n parser.state = returnState\n }\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default: /* istanbul ignore next */ {\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})( false ? 0 : exports)\n\n\n//# sourceURL=webpack://PhyloIO/./node_modules/sax/lib/sax.js?");
|
|
7683
|
+
|
|
7684
|
+
/***/ }),
|
|
7685
|
+
|
|
8489
7686
|
/***/ "./node_modules/sha.js/hash.js":
|
|
8490
7687
|
/*!*************************************!*\
|
|
8491
7688
|
!*** ./node_modules/sha.js/hash.js ***!
|
|
@@ -8587,72 +7784,6 @@ eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission
|
|
|
8587
7784
|
|
|
8588
7785
|
/***/ }),
|
|
8589
7786
|
|
|
8590
|
-
/***/ "./node_modules/bootstrap/dist/css/bootstrap.css":
|
|
8591
|
-
/*!*******************************************************!*\
|
|
8592
|
-
!*** ./node_modules/bootstrap/dist/css/bootstrap.css ***!
|
|
8593
|
-
\*******************************************************/
|
|
8594
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8595
|
-
|
|
8596
|
-
"use strict";
|
|
8597
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _css_loader_dist_cjs_js_bootstrap_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../css-loader/dist/cjs.js!./bootstrap.css */ \"./node_modules/css-loader/dist/cjs.js!./node_modules/bootstrap/dist/css/bootstrap.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_bootstrap_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_bootstrap_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n//# sourceURL=webpack://PhyloIO/./node_modules/bootstrap/dist/css/bootstrap.css?");
|
|
8598
|
-
|
|
8599
|
-
/***/ }),
|
|
8600
|
-
|
|
8601
|
-
/***/ "./src/fontawesome-free-6.2.0-web/css/all.css":
|
|
8602
|
-
/*!****************************************************!*\
|
|
8603
|
-
!*** ./src/fontawesome-free-6.2.0-web/css/all.css ***!
|
|
8604
|
-
\****************************************************/
|
|
8605
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8606
|
-
|
|
8607
|
-
"use strict";
|
|
8608
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_all_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./all.css */ \"./node_modules/css-loader/dist/cjs.js!./src/fontawesome-free-6.2.0-web/css/all.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_all_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_all_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n//# sourceURL=webpack://PhyloIO/./src/fontawesome-free-6.2.0-web/css/all.css?");
|
|
8609
|
-
|
|
8610
|
-
/***/ }),
|
|
8611
|
-
|
|
8612
|
-
/***/ "./src/interface.css":
|
|
8613
|
-
/*!***************************!*\
|
|
8614
|
-
!*** ./src/interface.css ***!
|
|
8615
|
-
\***************************/
|
|
8616
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8617
|
-
|
|
8618
|
-
"use strict";
|
|
8619
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_interface_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./interface.css */ \"./node_modules/css-loader/dist/cjs.js!./src/interface.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_interface_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_interface_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n//# sourceURL=webpack://PhyloIO/./src/interface.css?");
|
|
8620
|
-
|
|
8621
|
-
/***/ }),
|
|
8622
|
-
|
|
8623
|
-
/***/ "./src/progress-wizard.min.css":
|
|
8624
|
-
/*!*************************************!*\
|
|
8625
|
-
!*** ./src/progress-wizard.min.css ***!
|
|
8626
|
-
\*************************************/
|
|
8627
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8628
|
-
|
|
8629
|
-
"use strict";
|
|
8630
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_progress_wizard_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./progress-wizard.min.css */ \"./node_modules/css-loader/dist/cjs.js!./src/progress-wizard.min.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_progress_wizard_min_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_progress_wizard_min_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n//# sourceURL=webpack://PhyloIO/./src/progress-wizard.min.css?");
|
|
8631
|
-
|
|
8632
|
-
/***/ }),
|
|
8633
|
-
|
|
8634
|
-
/***/ "./src/style.css":
|
|
8635
|
-
/*!***********************!*\
|
|
8636
|
-
!*** ./src/style.css ***!
|
|
8637
|
-
\***********************/
|
|
8638
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8639
|
-
|
|
8640
|
-
"use strict";
|
|
8641
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../node_modules/css-loader/dist/cjs.js!./style.css */ \"./node_modules/css-loader/dist/cjs.js!./src/style.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"], options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_style_css__WEBPACK_IMPORTED_MODULE_1__[\"default\"].locals || {});\n\n//# sourceURL=webpack://PhyloIO/./src/style.css?");
|
|
8642
|
-
|
|
8643
|
-
/***/ }),
|
|
8644
|
-
|
|
8645
|
-
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
|
8646
|
-
/*!****************************************************************************!*\
|
|
8647
|
-
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
8648
|
-
\****************************************************************************/
|
|
8649
|
-
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
8650
|
-
|
|
8651
|
-
"use strict";
|
|
8652
|
-
eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : 0;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://PhyloIO/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
|
|
8653
|
-
|
|
8654
|
-
/***/ }),
|
|
8655
|
-
|
|
8656
7787
|
/***/ "./node_modules/util-deprecate/browser.js":
|
|
8657
7788
|
/*!************************************************!*\
|
|
8658
7789
|
!*** ./node_modules/util-deprecate/browser.js ***!
|
|
@@ -8663,80 +7794,24 @@ eval("\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * M
|
|
|
8663
7794
|
|
|
8664
7795
|
/***/ }),
|
|
8665
7796
|
|
|
8666
|
-
/***/ "./src/
|
|
8667
|
-
/*!********************!*\
|
|
8668
|
-
!*** ./src/api.js ***!
|
|
8669
|
-
\********************/
|
|
8670
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8671
|
-
|
|
8672
|
-
"use strict";
|
|
8673
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ API)\n/* harmony export */ });\n/* harmony import */ var _container_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./container.js */ \"./src/container.js\");\n/* harmony import */ var _color_mapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./color_mapper */ \"./src/color_mapper.js\");\n/* harmony import */ var _keyboardManager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keyboardManager.js */ \"./src/keyboardManager.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./model */ \"./src/model.js\");\n/* harmony import */ var minhashjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! minhashjs */ \"./node_modules/minhashjs/index.js\");\n\n\nconst { screen_shot } = __webpack_require__(/*! ./utils.js */ \"./src/utils.js\")\n;\n\n\n\nconst { prepare_and_run_distance } = __webpack_require__(/*! ./utils.js */ \"./src/utils.js\")\n\n// Main class of phylo.io\nclass API {\n\n constructor() {\n\n this.settings = {\n 'phylostratigraphy' : false,\n 'share_phylo': 'https://zoo.vital-it.ch/viewer/',\n 'share_post': 'https://zoo.vital-it.ch/sharing/create/',\n 'share_get': 'https://zoo.vital-it.ch/sharing/load/?session=',\n 'sync_zoom': false,\n 'syncing_zoom': false,\n 'callback_ancestral_genome_redirection' : function(taxid){console.log(taxid)},\n 'callback_stack_redirection' : function(taxid, parent_taxid){console.log(taxid, parent_taxid)},\n };\n\n this.set_default_parameters() // Settings that can be reset later on (e.g. switch single to compare mode)\n\n }\n\n set_default_parameters(){\n this.workers = {}\n this.distance_computed= {}\n this.containers = {}; // {container id -> Container() }\n this.bound_container = [] // pair of container used for distance computation\n this.session_token = null // unique session token for cloud saving\n this.session_url = null // url for cloud saving\n this.phylo_embedded = false // phylo.io website mode\n this.distance = {\n 'RF' : false,\n \"Euc\": false,\n \"clade\": false,\n \"RF_good\" : false,\n \"RF_left\" : false,\n \"RF_right\" : false,\n \"Cl_good\" : false,\n \"Cl_left\" : false,\n \"Cl_right\" : false,\n } //\n\n let default_settings = {\n 'no_distance_message': true,\n 'compute_distance': false,\n \"compareMode\" : false, // compare for each pair of tree topological similarity\n };\n this.settings = {...this.settings, ...default_settings};\n this.undoing = false // specify is we are undoing an action to prevent infinite looping\n\n this.color_scales = {}\n }\n\n get_color_scale(name) {\n if (name in this.color_scales) {\n return this.color_scales[name]\n } else {\n this.color_scales[name] = new _color_mapper__WEBPACK_IMPORTED_MODULE_1__[\"default\"]()\n return this.color_scales[name]\n }\n }\n\n set_color_scales(color_scales){\n\n\n for (const [key, value] of Object.entries(color_scales)) {\n\n var newcs = this.get_color_scale(key)\n newcs.cpt = value.cpt\n newcs.scale = value.scale\n newcs.domain_mapping = value.domain_mapping\n newcs.update()\n\n this.color_scales[key] = newcs\n }\n\n }\n\n // create and return a new container and add it the dict using its div id\n create_container(container_id){ // container_id -> str\n let c = new _container_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](container_id, this);\n this.containers[container_id] = c;\n\n if (this.bound_container.length < 2) {this.bound_container.push(c)}\n return c;\n }\n\n // for unit testing only\n _create_model(data, settings, from_raw_data=true){\n return new _model__WEBPACK_IMPORTED_MODULE_4__[\"default\"](data, settings, from_raw_data)\n }\n\n // start the app by computing required information and starting each container\n start(recompute=false){\n\n\n var cs = Object.entries(this.containers)\n\n for (const [uid, container] of cs) {\n container.start(true)\n }\n\n var con1 = this.bound_container[0]\n var con2 = this.bound_container[1]\n\n if (this.settings.compareMode && con1.models.length > 0 && con2.models.length > 0 ){\n\n this.stop_worker('topology')\n this.compute_visible_topology_similarity(recompute)\n\n for (const [uid, container] of cs) {\n container.viewer.render(container.viewer.hierarchy);\n //container.viewer.update_collapse_level(container.models[container.current_model].settings.collapse_level, false)\n }\n\n if (this.settings.compute_distance){\n this.send_worker_distance()\n }\n\n }\n\n new _keyboardManager_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this);\n }\n\n compute_visible_topology_similarity(recompute=true){\n\n // If no container selected for comparison, takes first two\n if (this.bound_container.length < 2){\n\n let cs = Object.values(this.containers)\n\n this.bound_container = []\n this.bound_container.push(cs[0])\n this.bound_container.push(cs[1])\n }\n\n var con1 = this.bound_container[0]\n var con2 = this.bound_container[1]\n\n // check if already computed\n var todo1 = !(con2.viewer.model.settings.similarity.includes(con1.viewer.model.uid))\n var todo2 = !(con1.viewer.model.settings.similarity.includes(con2.viewer.model.uid))\n\n\n if (recompute || todo1 || todo2 ){\n\n function compute_similarity_container_pair(t1,t2){\n\n console.time(\"similarity\");\n\n // X = Intersection of T1 & T2 leaves.\n if (t1.leaves.length <= 0){\n t1.leaves = t1.get_leaves(t1.data)\n }\n if (t2.leaves.length <= 0){\n t2.leaves = t2.get_leaves(t2.data)\n }\n var common_leaves = t1.leaves.map(leaf => leaf.name).filter(value => t2.leaves.map(leaf => leaf.name).includes(value));\n console.log(\"Intersection\");\n console.timeLog(\"similarity\");\n\n // DeepLeaf with filter(X = True)\n t1.createDeepLeafList(common_leaves)\n t2.createDeepLeafList(common_leaves)\n console.log(\"DeepLeaf\");\n console.timeLog(\"similarity\");\n\n // MinHash\n t1.createMinHash()\n t2.createMinHash()\n console.log(\"MinHash\");\n console.timeLog(\"similarity\");\n\n // For all T1 & T2 Nodes compute the BCN with MinHash\n var nodes_t1 = []\n var nodes_t2 = []\n\n var forest1 = new minhashjs__WEBPACK_IMPORTED_MODULE_5__.MinHashLSHForest.MinHashLSHForest()\n var forest2 = new minhashjs__WEBPACK_IMPORTED_MODULE_5__.MinHashLSHForest.MinHashLSHForest()\n\n var cpt =0\n t1.traverse(t1.data, function(h,children){nodes_t1.push(h);forest1.add(h, h.min_hash);cpt++}, null)\n t2.traverse(t2.data, function(z,children){nodes_t2.push(z);forest2.add(z, z.min_hash);cpt++}, null)\n\n forest1.index()\n forest2.index()\n\n find_BCN(nodes_t1, forest2, t2.uid)\n find_BCN(nodes_t2, forest1, t1.uid)\n\n console.log(\"BCN done\");\n\n console.timeLog(\"similarity\");\n\n // Clean non essential datume\n t1.removeMinHash()\n t2.removeMinHash()\n\n console.timeEnd(\"similarity\");\n\n t1.settings.similarity.push(t2.uid)\n t2.settings.similarity.push(t1.uid)\n\n\n }\n\n function find_BCN(nodes_list, target_forest, target_uid){\n nodes_list.forEach((node) => {\n\n function is_leaf(str) {\n return !str.includes(\"||\");\n }\n\n var matches = target_forest.query(node.min_hash,10)\n\n var l = new Set(node.deepLeafList.filter(is_leaf))\n if (l.size > 0){\n\n var max_jacc = 0\n var BCN = null\n\n matches.forEach(e => {\n var r = new Set(e.deepLeafList.filter(is_leaf))\n\n if (r.size > 0){\n\n\n var inter = Array.from(r).filter(x => l.has(x)).length\n var union = [...new Set([...l, ...r])].length;\n\n var jj = inter/union\n\n\n\n if (jj > max_jacc){\n max_jacc = jj\n BCN = e\n }\n\n }\n\n\n\n\n\n })\n\n if (max_jacc > 0) {\n node.elementS[target_uid] = max_jacc\n if (!node.elementBCN){\n node.elementBCN = {}\n }\n node.elementBCN[target_uid] = BCN\n }\n\n\n }\n\n\n\n\n })\n }\n\n\n var time = parseInt((con1.viewer.model.leaves.length*2 + con2.viewer.model.leaves.length*2) / (40000/150))\n\n var msg = `Computing similarity... (~ ${time} seconds)`\n\n con1.message_loader = msg\n con1.viewer.interface.update_loader_message()\n\n con2.message_loader = msg\n con2.viewer.interface.update_loader_message()\n\n compute_similarity_container_pair(con1.viewer.model,con2.viewer.model)\n\n con1.viewer.render(con1.viewer.hierarchy);\n con2.viewer.render(con2.viewer.hierarchy);\n\n con1.message_loader = null\n con1.viewer.interface.update_loader_message()\n\n con2.message_loader = null\n con2.viewer.interface.update_loader_message()\n }\n\n\n }\n\n set_distance(m1,m2, distance){\n\n var tuple_key = [m1.uid, m2.uid].sort().join('---')\n\n this.distance_computed[tuple_key] = distance\n }\n\n get_distance(m1,m2){\n\n var tuple_key = [m1.uid, m2.uid].sort().join('---')\n\n\n return this.distance_computed[tuple_key]\n\n }\n\n delete_modele_distance(m){\n\n\n for (var key in this.distance_computed) {\n if (this.distance_computed.hasOwnProperty(key)) {\n\n var kd = key.split('---')\n\n if (kd[0] == m.uid || kd[kd.length -1] == m.uid){\n this.distance_computed[key] = undefined\n }\n\n\n }\n }\n\n\n\n }\n\n set_worker(key, worker){\n this.workers[key] = worker\n }\n\n stop_worker(key){\n try {\n for (const [uid, container] of this.containers) {\n container.message_loader = null\n }\n this.workers[key].terminate();\n } catch (error) {\n }\n\n\n }\n\n stop_all_workers(){\n for (const [key, worker] of Object.entries(this.workers)) {\n worker.terminate();\n }\n }\n\n get_json_pickle(){\n\n var pickle = {\n \"containers\" : [],\n 'settings' : this.settings,\n 'color_scales': this.color_scales\n }\n\n let cs = Object.values(this.containers)\n\n for (var i = 0; i < cs.length; i++) {\n\n let ms = cs[i].models\n\n let minput = []\n\n for (var j = 0; j < ms.length; j++) {\n\n var s = ms[j].settings\n\n s.labels_array_leaf= [...s.labels['leaf']];\n s.labels_array_node = [...s.labels['node']];\n\n s.colorlabels_array_leaf = [...s.colorlabels['leaf']];\n s.colorlabels_array_node = [...s.colorlabels['node']];\n\n minput.push({'settings':s, 'data':ms[j].remove_circularity(), 'zoom': ms[j].zoom })\n\n\n }\n\n pickle.containers.push({\n 'models' : minput,\n 'settings' : cs[i].settings,\n 'current_model': cs[i].current_model\n })\n\n }\n\n var string_pickle = JSON.stringify(pickle);\n\n for (var i = 0; i < cs.length; i++) {\n\n let ms = cs[i].models\n\n for (var j = 0; j < ms.length; j++) {\n\n ms[j].add_circularity_back()\n\n\n }\n\n }\n\n return string_pickle\n\n }\n\n save_session(){ // TODO not working since collapse or other info are store in circular data\n\n var blob = new Blob([this.get_json_pickle()], {type: \"text/plain;charset=utf-8\"});\n file_saver__WEBPACK_IMPORTED_MODULE_3___default().saveAs(blob, \"Session.phyloio\");\n\n }\n\n send_worker_distance(){\n\n if (!this.settings.compareMode){\n return\n }\n\n var mod1 = this.bound_container[0].models[this.bound_container[0].current_model]\n var mod2 = this.bound_container[1].models[this.bound_container[1].current_model]\n\n var distance = this.get_distance(mod1,mod2)\n\n\n if (typeof distance !== 'undefined') {\n\n this.distance = distance\n this.settings.no_distance_message = distance.no_distance_message\n\n if (this.phylo_embedded){\n this.display_distance_window()\n }\n\n return\n\n }\n\n\n var d = prepare_and_run_distance(mod1,mod2 )\n\n this.set_distance(mod1,mod2,d)\n\n this.distance = d\n\n this.settings.no_distance_message = d.no_distance_message\n\n if (this.phylo_embedded){\n this.display_distance_window()\n }\n\n }\n\n screen_shot(params){screen_shot(params)}\n\n generate_share_link(){\n\n var that = this\n var xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = function () {\n\n if (this.readyState != 4) return;\n\n else if (this.status == 201) {\n var data = JSON.parse(this.responseText);\n\n if (data.result = 'OK'){\n that.session_token = data.session\n that.session_url = that.settings.share_phylo + '?session=' + that.session_token\n }\n }\n\n else if (this.status == 413) {\n that.session_token = 'ERROR_SIZE';\n return\n }\n\n else if (this.status == 400) {\n return\n }\n };\n\n xhr.open(\"POST\", this.settings.share_post, false);\n\n xhr.setRequestHeader('Content-Type', 'application/json');\n\n var j = this.get_json_pickle()\n\n if (encodeURI(JSON.stringify(j)).split(/%..|./).length - 1 > 500000000){\n that.session_token = 'ERROR_SIZE';\n return;\n }\n\n xhr.send(j);\n\n}\n\n get_share_data(session_token, callback=null){\n\n\n var xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = function() {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n var j = xhr.responseText;\n callback.apply(this,[j])\n }\n }\n\n xhr.open('GET', this.settings.share_get + session_token, false);\n xhr.send(null);\n\n\n\n }\n\n display_distance_window(){\n\n\n function create_html_distance(title, d1, d2, d3, d4, d5, d6, d7){\n\n return `<li class=\"list-group-item d-flex justify-content-between align-items-start\">\n <div class=\"ms-2 me-auto\">\n <div class=\"fw-bold\" style=\"text-align:left;\">${title}</div>\n \n <span style=\"display: flex\"><small>Left tree: ${d1}/${d2} (${d3}%) </small> </span>\n <span style=\"display: flex\"><small>Right tree: ${d4}/${d5} (${d6}%) </small> </span>\n \n \n </div>\n <span class=\"badge bg-primary rounded-pill\">${d7}</span> \n </li>`\n }\n\n\n\n var bool_distance_computed = (this.distance.RF !== false || this.distance.Euc !== false || this.distance.clade !== false || this.settings.no_distance_message !== true )\n document.getElementById(\"distance_window\").style.display = (this.settings.compareMode && bool_distance_computed ) ? 'block': 'none';\n\n var divdiv = document.getElementById(\"mydivbody\");\n\n divdiv.innerHTML = \"<ol class=\\\"list-group \\\">\\n\"\n\n\n\n\n if (this.distance.RF !== false) {\n\n divdiv.innerHTML += create_html_distance('Robinson-Foulds',\n this.distance.RF_good, this.distance.RF_left,\n Math.round(this.distance.RF_good /this.distance.RF_left*100),this.distance.RF_good, this.distance.RF_right,\n Math.round(this.distance.RF_good /this.distance.RF_right*100),this.distance.RF\n )\n\n\n\n\n }\n\n if (this.distance.clade !== false) {\n\n divdiv.innerHTML += create_html_distance('Clade',this.distance.Cl_good, this.distance.Cl_left, Math.round(this.distance.Cl_good /this.distance.Cl_left*100),\n this.distance.Cl_good, this.distance.Cl_right, Math.round(this.distance.Cl_good/this.distance.Cl_right*100), this.distance.clade\n )\n\n }\n\n\n if (this.distance.Euc !== false) {\n\n divdiv.innerHTML += \"<li class=\\\"list-group-item d-flex justify-content-between align-items-start\\\">\\n\" +\n \" <div class=\\\"ms-2 me-auto\\\">\\n\" +\n \" <div class=\\\"fw-bold\\\" style=\\\"text-align:left;\\\">Euclidian</div> </div>\\n\" +\n \" <span class=\\\"badge bg-primary rounded-pill\\\">{}</span>\\n\".format(this.distance.Euc) +\n \" </li>\"\n }\n\n\n if (this.distance.LRF !== false) {\n\n divdiv.innerHTML += \"<li class=\\\"list-group-item d-flex justify-content-between align-items-start\\\">\\n\" +\n \" <div class=\\\"ms-2 me-auto\\\">\\n\" +\n \" <div class=\\\"fw-bold\\\" style=\\\"text-align:left;\\\">Labeled RF</div> </div>\\n\" +\n \" <span class=\\\"badge bg-primary rounded-pill\\\">{}</span>\\n\".format(this.distance.LRF) +\n \" </li>\"\n }\n\n\n\n if (this.settings.no_distance_message != true) {\n divdiv.innerHTML += \"<li class=\\\"list-group-item d-flex justify-content-between align-items-start\\\">\\n\" +\n \" <div class=\\\"ms-2 me-auto\\\">\\n\" +\n \" <div class=\\\"fw-bold\\\" style=\\\"text-align:left;\\\"><strong>Warning:</strong> {}</div> </div>\\n\".format(this.settings.no_distance_message)\n \" </li>\"\n }\n\n divdiv.innerHTML += \"</ol>\"\n\n\n }\n\n}\n\n\n//# sourceURL=webpack://PhyloIO/./src/api.js?");
|
|
8674
|
-
|
|
8675
|
-
/***/ }),
|
|
8676
|
-
|
|
8677
|
-
/***/ "./src/color_mapper.js":
|
|
8678
|
-
/*!*****************************!*\
|
|
8679
|
-
!*** ./src/color_mapper.js ***!
|
|
8680
|
-
\*****************************/
|
|
8681
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8682
|
-
|
|
8683
|
-
"use strict";
|
|
8684
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Color_mapper)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n\n\n\nclass Color_mapper {\n\n constructor() {\n\n this.cpt = 1\n\n this.scale = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear()\n .domain([0, this.cpt/2, this.cpt])\n .range([\"red\", \"green\", \"blue\"])\n\n this.domain_mapping = {}\n\n }\n\n get_color(val){\n return this.scale(this.domain_mapping[val])\n }\n\n add_value_to_map(val){\n if (!(val in this.domain_mapping)) {\n this.domain_mapping[val] = this.cpt\n this.cpt++\n }\n }\n\n update(){\n this.scale = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear()\n .domain([0, this.cpt/2, this.cpt])\n .range([\"red\", \"green\", \"blue\"])\n }\n\n}\n\n//# sourceURL=webpack://PhyloIO/./src/color_mapper.js?");
|
|
8685
|
-
|
|
8686
|
-
/***/ }),
|
|
8687
|
-
|
|
8688
|
-
/***/ "./src/container.js":
|
|
8689
|
-
/*!**************************!*\
|
|
8690
|
-
!*** ./src/container.js ***!
|
|
8691
|
-
\**************************/
|
|
8692
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8693
|
-
|
|
8694
|
-
"use strict";
|
|
8695
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Container)\n/* harmony export */ });\n/* harmony import */ var _viewer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./viewer.js */ \"./src/viewer.js\");\n/* harmony import */ var _model_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./model.js */ \"./src/model.js\");\n/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./interface */ \"./src/interface.js\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n\n\n\n\n\nconst { build_table, save_file_as } = __webpack_require__(/*! ./utils.js */ \"./src/utils.js\")\nvar parser = __webpack_require__(/*! biojs-io-newick */ \"./node_modules/biojs-io-newick/src/index.js\");\n\n\nvar uid_container = 0 // unique id generator is bound to a single Container()\n\n// Object that bind a div with a d3 Viewer() and one or multiple Model()\nclass Container {\n get uid() {\n return this._uid;\n }\n\n constructor(container_id, api) {\n\n this._uid = uid_container++; // unique container id\n this.div_id = container_id; // related div id\n this.models = []; // list of Model()\n this.settings = {}; // per container settings\n this.current_model = 0; // current model index\n this.viewer = new _viewer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this); // attach Viewer()\n this.history_actions = [] // for Undo feature\n this.api = api\n this.message_loader = null\n\n }\n\n replace_model(old_model,new_model){\n var index = this.models.indexOf(old_model);\n\n if (~index) {\n this.models[index] = new_model;\n }\n\n }\n\n add_action(name, fn_object, counter_fn, argu, refresh_interface){\n\n var refresh_interface = (typeof refresh_interface !== 'undefined') ? refresh_interface : false;\n\n if (!this.api.undoing){\n this.history_actions.push({'name': name, 'fonct':counter_fn, 'fonction_obj':fn_object, 'argu': argu, 'refresh_interface' : refresh_interface})\n }\n\n }\n\n get_last_action(){\n return this.history_actions[this.history_actions.length-1]\n }\n\n pop_last_action(){\n return this.history_actions.pop()\n }\n\n // create and add Model() configure with params\n add_tree(data, settings, from_raw_data=true){\n this.models.push(new _model_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](data, settings, from_raw_data))\n }\n\n remove_all_trees(){\n this.models = []\n }\n\n remove_current_tree(apply_change_UI){\n\n var apply_change_UI = (typeof apply_change_UI !== 'undefined') ? apply_change_UI : false;\n\n var current_model = this.models[this.current_model]\n\n const index = this.models.indexOf(current_model);\n if (index > -1) {\n this.models.splice(index, 1);\n\n if (this.current_model > this.models.length -1){\n console.log('out of index - recalibrating');\n this.current_model -= 1\n\n }\n\n if (apply_change_UI){\n if (this.models.length == 0){\n\n this.current_model = 0\n\n this.viewer.remove_data()\n this.interface = new _interface__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.viewer, this, true)\n }\n else{\n this.shift_model(0, false)\n }\n }\n\n }\n\n\n\n\n }\n\n // update the data viewer and render it\n start(rendering){\n\n\n if (this.models.length <= 0){\n this.interface = new _interface__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.viewer, this, true)\n return\n }\n\n var rendering = (typeof rendering !== 'undefined') ? rendering : false; // todo inverted ??\n\n this.viewer.set_data(this.models[this.current_model]);\n\n if (rendering){\n\n var z = this.models[this.current_model].zoom\n\n\n if (z) {\n this.viewer.set_zoom(z.k, z.x, z.y)\n }\n\n this.viewer.render(this.viewer.hierarchy);\n //this.viewer.update_collapse_level(this.models[this.current_model].settings.collapse_level)\n\n\n\n }\n\n //this.viewer.zoom_by(0.4) #STACK\n //this.viewer.render(this.viewer.hierarchy); #STACK\n\n }\n\n // shift the pointer (if possible) in the model list and update viewer model\n shift_model(offset, store_old) {\n\n\n var store_old = (typeof store_old !== 'undefined') ? store_old : true;\n\n\n if (this.current_model + offset >= 0 && this.current_model + offset <= this.models.length -1 ) {\n\n this.add_action('Change tree', this, this.shift_model, [-offset, store_old] )\n\n if (store_old){\n // store the current zoom information\n var old_m = this.models[this.current_model]\n old_m.store_zoomTransform(this.viewer.d3.zoomTransform(this.viewer.svg.node()))\n }\n\n // update new model data to viewer\n this.current_model += offset;\n var m = this.models[this.current_model]\n\n\n\n this.viewer.set_data(m)\n\n\n this.api.stop_all_workers()\n this.compute_topology_and_render_bounded_viewer(false)\n\n // apply if any stored zoom information\n var z = m.zoom\n if (z) {\n this.viewer.set_zoom(z.k, z.x, z.y)\n\n }\n\n this.viewer.render(this.viewer.hierarchy)\n\n if (this.api.settings.compute_distance && this.api.bound_container.includes(this)){\n this.api.send_worker_distance()\n }\n\n\n\n\n }\n\n }\n\n // send action trigger to model, update the data/build d3 data & render the viewer\n trigger_(action, data, node){\n\n var m = this.models[this.current_model];\n\n if (action === 'collapse') {\n this.add_action('Collapse', this, this.trigger_, [action, data, node] )\n m.collapse(data)\n this.viewer.apply_collapse_from_data_to_d3(data, node)\n this.viewer.build_d3_cluster()\n this.viewer.render(node)\n\n }\n else if (action === 'collapseAll') {\n this.add_action('Collapse All', this, this.trigger_, ['expandAll', data, node] )\n m.collapseAll(data, true)\n this.viewer.apply_collapseAll_from_data_to_d3(data, node)\n this.viewer.build_d3_cluster()\n this.viewer.render(node)\n\n }\n else if (action === 'expandAll') {\n this.add_action('Expand All', this, this.trigger_, ['collapseAll', data, node] )\n m.collapseAll(data, false)\n this.viewer.apply_expandAll_from_data_to_d3(data, node)\n this.viewer.build_d3_cluster()\n this.viewer.render(node)\n\n }\n else if (action === 'swap') {\n this.add_action('Swap', this, this.trigger_, ['unswap', data, node] )\n m.swap_subtrees(data)\n this.viewer.apply_swap_from_data_to_d3(data, node)\n this.viewer.build_d3_cluster()\n this.viewer.render(node)\n\n\n }\n else if (action === 'unswap') {\n m.unswap_subtrees(data)\n this.viewer.apply_unswap_from_data_to_d3(data, node)\n this.viewer.build_d3_cluster()\n this.viewer.render(node)\n\n\n }\n else if (action === 'reroot'){\n\n this.add_action('Reroot', this, this.trigger_, ['reroot', this.viewer.hierarchy.children[0].data, null] )\n m.reroot(data)\n m.rooted = true\n this.viewer.set_data(m)\n m.hierarchy_mockup = m.build_hierarchy_mockup()\n m.table = build_table(m.hierarchy_mockup)\n\n this.api.stop_all_workers()\n this.compute_topology_and_render_bounded_viewer(true)\n if (this.api.settings.compute_distance && this.api.bound_container.includes(this)){\n this.api.delete_modele_distance(m)\n this.api.send_worker_distance()\n }\n this.viewer.render(this.viewer.hierarchy)\n\n }\n else if (action === 'trim'){\n var untrim_data = m.trim(data.data)\n this.add_action('Trim', this, this.trigger_, ['untrim', untrim_data, null] )\n this.viewer.set_data(m)\n m.hierarchy_mockup = m.build_hierarchy_mockup()\n m.table = build_table(m.hierarchy_mockup)\n this.api.stop_all_workers()\n this.compute_topology_and_render_bounded_viewer(true)\n if (this.api.settings.compute_distance && this.api.bound_container.includes(this)){\n this.api.delete_modele_distance(m)\n this.api.send_worker_distance()\n }\n this.viewer.render(this.viewer.hierarchy)\n }\n else if (action === 'untrim'){\n m.untrim(data.parent, data.floating, data.child, data.index, data.root_mode)\n this.viewer.set_data(m)\n m.hierarchy_mockup = m.build_hierarchy_mockup()\n m.table = build_table(m.hierarchy_mockup)\n this.api.stop_all_workers()\n this.compute_topology_and_render_bounded_viewer(true)\n if (this.api.settings.compute_distance && this.api.bound_container.includes(this)){\n this.api.delete_modele_distance(m)\n this.api.send_worker_distance()\n }\n this.viewer.render(this.viewer.hierarchy)\n }\n\n }\n\n // collapse all node from depth todo create collapse/colllapse all function\n collapse_depth(depth, tree){\n\n var f\n\n var model = this.models[this.current_model];\n var viewer = this.viewer;\n\n\n if (depth == 0 ){\n\n f = function(n,c) {\n model.collapse(n.data, false)\n viewer.apply_collapse_from_data_to_d3(n.data, n)\n }\n }\n else {\n f = function(n,c){\n\n if (n.depth >= depth ){\n\n model.collapse(n.data, true)\n\n }\n else{\n model.collapse(n.data, false)\n }\n\n viewer.apply_collapse_from_data_to_d3(n.data, n)\n }\n }\n\n this.models[this.current_model].traverse_hierarchy(this.viewer.hierarchy, f )\n\n\n\n }\n\n zoom_to_node(name){\n\n if (name === ''){return}\n\n\n if(this.viewer.model.settings.multiple_search != true) {\n\n this.viewer.hierarchy.each(function (d) {\n d.data.search_path = false;\n d.data.search_node = false;\n })\n }\n\n\n function searchTree(obj,search,path){\n if(obj.data.name === search){ //if search is found return, add the object to the path and return it\n\n path.push(obj);\n return path;\n }\n else if(obj.children || obj._children){ //if children are collapsed d3 object will have them instantiated as _children\n var children = (obj.children) ? obj.children : obj._children;\n for(var i=0;i<children.length;i++){\n path.push(obj);// we assume this path is the right one\n var found = searchTree(children[i],search,path);\n if(found){// we were right, this should return the bubbled-up path from the first if statement\n return found;\n }\n else{//we were wrong, remove this parent from the path and continue iterating\n path.pop();\n }\n }\n }\n else{//not the right object, return false so it will continue to iterate in the loop\n return false;\n }\n }\n\n\n var p = searchTree(this.viewer.hierarchy, name, [])\n\n\n\n for(var i=1;i<p.length;i++){ // 1 is for skipping the root\n\n this.models[this.current_model].collapse(p[i].data, false)\n this.viewer.apply_collapse_from_data_to_d3(p[i].data, p[i])\n p[i].data.search_path = true;\n\n\n }\n\n p[p.length-1].data.search_node = true;\n\n this.viewer.set_data(this.models[this.current_model])\n this.viewer.render(this.viewer.hierarchy)\n var n= []\n this.viewer.hierarchy.each(function(d) { if (d.data.name === name){n.push(d)}})\n\n this.viewer.centerNode(n[0])\n\n\n }\n\n toggle_rooting(){\n this.models[this.current_model].rooted = !this.models[this.current_model].rooted\n this.interface = new _interface__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.viewer, this)\n this.viewer.render(this.viewer.hierarchy)\n\n if (this.api.settings.compute_distance && this.api.bound_container.includes(this)){\n this.api.delete_modele_distance(m)\n this.api.send_worker_distance()\n }\n\n }\n\n toggle_stack(){\n\n var ms = this.models[this.current_model].settings\n\n if (ms.has_histogram_data){\n\n ms.show_histogram = !ms.show_histogram;\n this.viewer.set_data(this.models[this.current_model])\n this.viewer.render(this.viewer.hierarchy)\n\n }\n\n\n\n }\n\n // INTERFACE CONTROL\n\n modify_node_size_percent(percent, axis ){\n\n var model = this.models[this.current_model]\n\n if (axis === 'vertical') {\n model.settings.tree.node_vertical_size = model.settings.tree.node_vertical_size * (1 + percent)\n }\n else if (axis === 'horizontal') {\n model.settings.tree.node_horizontal_size = model.settings.tree.node_horizontal_size * (1 + percent)\n }\n\n this.viewer.d3_cluster.nodeSize([ model.settings.tree.node_vertical_size,model.settings.tree.node_horizontal_size])\n this.viewer.build_d3_cluster()\n this.viewer.render(this.viewer.hierarchy)\n\n if (this.viewer.interface && model.settings.use_branch_lenght) {\n var k = this.viewer.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_4__.select(\"#master_g\" + this.viewer.uid).node()).k\n this.viewer.interface.update_scale_value(k);\n }\n\n }\n\n modify_node_size(axis, variation){\n\n var model = this.models[this.current_model]\n var viewer = this.viewer\n\n if (axis === 'vertical') {\n if ((model.settings.tree.node_vertical_size + variation) <= 0){return}\n model.settings.tree.node_vertical_size += variation\n }\n else if (axis === 'horizontal') {\n if ((model.settings.tree.node_horizontal_size + variation) <= 0){return}\n model.settings.tree.node_horizontal_size += variation\n }\n\n viewer.d3_cluster.nodeSize([ model.settings.tree.node_vertical_size,model.settings.tree.node_horizontal_size])\n viewer.build_d3_cluster()\n viewer.render(viewer.hierarchy)\n\n\n if (viewer.interface && model.settings.use_branch_lenght) {\n var k = viewer.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_4__.select(\"#master_g\" + viewer.uid).node()).k\n viewer.interface.update_scale_value(k);\n }\n\n }\n\n update_node_radius_percent(percent){\n\n var model = this.models[this.current_model]\n var viewer = this.viewer\n\n model.settings.tree.node_radius = model.settings.tree.node_radius * (1 + percent)\n viewer.render(viewer.hierarchy)\n }\n\n update_line_width_percent(percent){\n var model = this.models[this.current_model]\n var viewer = this.viewer\n\n model.settings.tree.line_width = model.settings.tree.line_width * (1 + percent)\n viewer.render(viewer.hierarchy)\n }\n\n update_font_size(val){\n this.viewer.model.settings.tree.font_size = val\n this.viewer.render(this.viewer.hierarchy)\n }\n\n update_font_size_node(val){\n this.viewer.model.settings.style.font_size_internal = val\n this.viewer.render(this.viewer.hierarchy)\n }\n\n update_font_size_leaf_percent(val){\n this.viewer.model.settings.tree.font_size = this.viewer.model.settings.tree.font_size * (1 + val)\n this.viewer.render(this.viewer.hierarchy)\n }\n\n update_font_size_node_percent(val){\n this.viewer.model.settings.style.font_size_internal = this.viewer.model.settings.style.font_size_internal * (1 + val)\n this.viewer.render(this.viewer.hierarchy)\n }\n\n //\n\n compute_topology_and_render_bounded_viewer(recompute=true){ // change to als eby default and deal with elementS -> one vlue instead of model uid to val\n\n // if bound container and compare mode activate, we need to update it too\n if (this.api.settings.compareMode && this.api.bound_container.includes(this)){\n\n\n\n var con1 = this.api.bound_container[0]\n var con2 = this.api.bound_container[1]\n\n\n\n if ( con1.models.length > 0 && con2.models.length > 0){\n this.api.compute_visible_topology_similarity( recompute)\n\n\n var ccc = (con1 == this) ? con2 : con1\n ccc.viewer.render(ccc.viewer.hierarchy)\n\n }\n }\n }\n\n reroot_to_compared_tree(){\n\n\n var con1 = this.api.bound_container[0]\n var con2 = this.api.bound_container[1]\n\n if (con1 && con2){\n\n if ( con1.models.length > 0 && con2.models.length > 0){\n var ccc = (con1 == this) ? con2 : con1\n var model = ccc.viewer.model\n\n var bcnode = model.data.children[0].elementBCN[this.viewer.model.uid]\n if(bcnode && bcnode.parent){\n this.trigger_(\"reroot\", bcnode)\n }\n }\n }\n }\n\n reorder_to_compared_tree(){\n\n var con1 = this.api.bound_container[0]\n var con2 = this.api.bound_container[1]\n\n if (con1 && con2){\n\n if ( con1.models.length > 0 && con2.models.length > 0){\n var ccc = (con1 == this) ? con2 : con1\n var model_reference = ccc.viewer.model\n\n\n this.viewer.model.traverse(this.viewer.model.data, null, (child,d) => {\n\n\n\n if (child.children || child._children) {\n var leaves = Array.from(child.leaves, (_, k) => _.name);\n var fixedLeaves = this.getCorrespondingNode(leaves, model_reference.data);\n\n if (leaves[0] !== fixedLeaves[0] && leaves[leaves.length - 1] !== fixedLeaves[fixedLeaves.length - 1]) {\n this.reorder_leaves(child);\n }\n }\n })\n\n this.viewer.set_data(this.viewer.model)\n this.viewer.render(this.viewer.hierarchy)\n\n }\n }\n\n }\n\n getCorrespondingNode(treeLeaves, ifixedTree) {\n\n var bestCorrespondingFixTreeLeaves = [];\n var bestCount = 0;\n\n this.viewer.model.traverse(ifixedTree, null, (child,d) => {\n\n\n if (child.children || child._children) {\n var fixedTreeLeaves = Array.from(child.leaves, (_, k) => _.name);\n var count = 0;\n for (var i = 0; i < fixedTreeLeaves.length; i++) {\n if (treeLeaves.indexOf(fixedTreeLeaves[i]) !== -1) {\n count += 1;\n }\n }\n\n if (count > bestCount) {\n bestCorrespondingFixTreeLeaves = fixedTreeLeaves;\n bestCount = count;\n }\n\n }\n\n })\n\n return bestCorrespondingFixTreeLeaves;\n }\n\n reorder_leaves(d){\n\n var bocal;\n\n if (d.children) {bocal = d.children }\n else if (d._children) {bocal = d._children }\n else {return}\n\n var e = bocal.pop()\n bocal.unshift(e)\n d.leaves = this.viewer.model.get_leaves(d)\n\n\n }\n\n create_model_from_hierarchy_node(node){\n\n var data = Object.assign({}, node.data);\n\n this.viewer.model.traverse(data, function(n,c){\n n.parent=null;\n n.leaves=null;\n n.correspondingLeaf = {}\n n.elementBCN = null})\n\n\n var data = JSON.parse(JSON.stringify(data))\n\n var model = this.viewer.model;\n this.add_tree(data, model.settings, false)\n\n this.models[this.models.length-1].add_circularity_back()\n\n this.viewer.model.add_circularity_back()\n\n this.interface = new _interface__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.viewer, this)\n\n\n\n }\n\n export_as_newick(){\n var nwk = parser.parse_json(this.viewer.model.remove_circularity())\n\n save_file_as(this.viewer.model.settings.name + \".nwk\", nwk)\n\n\n }\n\n};\n\n\n\n\n//# sourceURL=webpack://PhyloIO/./src/container.js?");
|
|
8696
|
-
|
|
8697
|
-
/***/ }),
|
|
8698
|
-
|
|
8699
|
-
/***/ "./src/index.js":
|
|
7797
|
+
/***/ "./src/model.js":
|
|
8700
7798
|
/*!**********************!*\
|
|
8701
|
-
!*** ./src/
|
|
7799
|
+
!*** ./src/model.js ***!
|
|
8702
7800
|
\**********************/
|
|
8703
7801
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8704
7802
|
|
|
8705
7803
|
"use strict";
|
|
8706
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ init: () => (/* binding */ init)\n/* harmony export */ });\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n/* harmony import */ var bootstrap_dist_css_bootstrap_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! bootstrap/dist/css/bootstrap.css */ \"./node_modules/bootstrap/dist/css/bootstrap.css\");\n/* harmony import */ var _style_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style.css */ \"./src/style.css\");\n/* harmony import */ var _interface_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./interface.css */ \"./src/interface.css\");\n/* harmony import */ var _progress_wizard_min_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./progress-wizard.min.css */ \"./src/progress-wizard.min.css\");\n/* harmony import */ var _fontawesome_free_6_2_0_web_css_all_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fontawesome-free-6.2.0-web/css/all.css */ \"./src/fontawesome-free-6.2.0-web/css/all.css\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./api.js */ \"./src/api.js\");\n/*\n\nPhylo.IO is build following the MVC architecture:\n- Container class (or Controller): the class that connects a single viewer (div) and the\nloaded model through user interactions.\n- Viewer class: the d3 viewer that can render any model object.\n- Model class: the data for a single tree with associated computed information (\nzoom, transform, annotated information, etc..)\n\nThe PhyloIO manage the app that can have any number of Container (associated to an unique DOM div) that each\ncontains a Viewer instance. Each Viewer (and by consequent Container) can have multiple models (trees)\n\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\nObject.values = Object.values || function(o){return Object.keys(o).map(function(k){return o[k]})};\nString.prototype.format = function () {\n var i = 0, args = arguments;\n return this.replace(/{}/g, function () {\n return typeof args[i] != 'undefined' ? args[i++] : '';\n });\n};\n\nconst init = function(){\n\n return new _api_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"]()\n}\n\n\n\n\n\n//# sourceURL=webpack://PhyloIO/./src/index.js?");
|
|
8707
|
-
|
|
8708
|
-
/***/ }),
|
|
8709
|
-
|
|
8710
|
-
/***/ "./src/interface.js":
|
|
8711
|
-
/*!**************************!*\
|
|
8712
|
-
!*** ./src/interface.js ***!
|
|
8713
|
-
\**************************/
|
|
8714
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8715
|
-
|
|
8716
|
-
"use strict";
|
|
8717
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Interface)\n/* harmony export */ });\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/bootstrap.esm.js\");\n\n\n\n\n// D3 viewer Interface that render UI elements(buttons, slider, menu)\nclass Interface {\n\n constructor(v,c, empty_mode){\n\n var empty_mode = (typeof empty_mode !== 'undefined') ? empty_mode : false;\n\n this.scale_pixel_length = 120;\n\n this.container_object = c\n this.viewer = v\n this.container_d3 = v.container_d3\n this.api = this.container_object.api\n\n //MISC\n this.dismiss_blur = false\n\n this.examples={\n \"small1\": \"((yli:1.0085614391793067,(((lel:0.2880678599618948,(cal:0.11643570498932501,ctr:0.12746420698315983):0.0877413194006926):0.12449843844102518,pst:0.20187483296288805):0.04951181210826987,(pgu:0.3208350693977453,dha:0.19121342958249643):0.0444880656387921):0.3761988962574594):0.22545281705785974,(((kla:0.32829009627835226,ago:0.35217085340006204):0.057415467336693615,(skl:0.15813405639248146,kwa:0.25658337062111586):0.04348414441988464):0.036897766465122404,(cgl:0.29957965624763355,(sca:0.24212307199678842,(sba:0.03984952076326609,(((sce:0.022286259220280224,spa:0.016875934069075366):0.01282179619059339,smi:0.03661027033511007):0.013312280806766753,sku:0.042685124078088485):0.014142671709463695):0.17548658899657893):0.03625000527459598):0.08921537612721808):0.22545281705785974):0;\",\n \"small2\": \"((sba:0.04645932805874481569,(smi:0.03315550229946162553,(spa:0.01466907419174275952,sce:0.02383733069302066895):0.01620853054082276729):0.01834962617511207497):0.06496501071301066799,(sca:0.21928497146352055047,((((ago:0.34529718349701971070,kla:0.26611733077459831520):0.04460721000595434249,(kwa:0.23458417353426505580,skl:0.38245746198409408256):0.02217438839159899949):0.02847427462232336726,(((pst:0.21220493191897629726,((cal:0.09792303271040220247,ctr:0.11778282966461572911):0.07993742108354510989,lel:0.23757786374413303321):0.09896075353236584438):0.04667831716440219020,(pgu:0.28475663985974825065,dha:0.17797706546403241346):0.04249479494672471491):0.29326816910580705278,yli:0.72911704942210797675):0.31199925135971823265):0.06946141605430436461,cgl:0.27125751484306920291):0.03678319509837457008):0.09011350505801994648,sku:3.28511106679567399524):0.0;\",\n \"big\": \"(((SOLTU34696:0.02229166687593289037,SOLLC24463:0.00709709081903918577):0.18421898265728259281,((((MEDTR17610:0.15714167879247994963,(SOYBN06937:0.02529940651188004874,SOYBN15364:0.00931421471673856902):0.03339587536636171722):0.04648572868545788189,(SOYBN40305:0.05161993270599975203,SOYBN06011:0.01868797976671805749):0.13262390593762377056):0.09574925506273131159,((POPTR14057:0.08501820169894380719,POPTR15493:0.03388172716526779982):0.04903132056086856316,(VITVI16878:0.15032892038600365048,(MANES09114:0.00455508973340297985,MANES09113:0.00000100000050002909):0.10960937493738516502):0.06005265654177237983):0.03327927635394690997):0.04169405035061653220,((((SELML14800:0.01085671843303792107,SELML05537:0.02039560840819776635):0.73478761253095836725,(((((((MUSAM01035:0.00000100000050002909,MUSAC06029:0.00000100000050002909):0.30554247145426172150,((((ARALY04176:0.03071803778508035501,ARATH04062:0.02390145058045729451):0.26881464177877639754,(ARATH20168:0.04620983006923840702,ARALY11148:0.00932022073022199457):0.20782072992434411085):0.09488068423975774823,(((SOYBN02845:0.00976170253766352886,SOYBN51173:0.02918590246006154409):0.08540209758062287937,((MEDTR41063:0.00000100000050002909,MEDTR41066:0.02017257537407208742):0.16176325397181906540,(SOYBN11067:0.03963088470198131846,SOYBN08966:0.01232745661039070031):0.08548569071631144378):0.04853822353702215431):0.14497593655405260904,(MANES12931:0.07738860904262530316,(MANES07497:0.09434645317867160208,POPTR11029:0.12695444105377301502):0.02979790056758981412):0.05775061588261572176):0.01638682789008762478):0.05403462689546538467,(((MUSAM29615:0.00000100000050002909,MUSAC32718:0.00000100000050002909):0.08299761701045121898,((MUSAM27485:0.00000100000050002909,MUSAC30588:0.00000100000050002909):0.06661990811446089067,(MUSAC19509:0.00000100000050002909,MUSAM13578:0.00000100000050002909):0.06965462171572417427):0.02546304953829388665):0.19603767643398820053,(SOLLC06707:0.01792241662639993890,SOLTU18103:0.01706502381760034368):0.18420517353108956105):0.02629729192908691893):0.18414179845688000148):0.53817024374636479589,((SELML06655:0.00000100000050002909,SELML08476:0.03320959111509765721):0.85020985387688086110,(SELML03696:0.00000100000050002909,SELML10004:0.00646896469865896381):0.70379805522375493698):0.08752580347866126265):0.06518214565099944569,(((SELML10585:0.09739496921243473437,((SELML09645:0.01874532851656703428,SELML09389:0.00461002747936521164):0.00923396102862936510,(((SELML20828:0.00466275631610225862,(((SELML20789:0.01052082189588285019,SELML01265:0.01037032025689046087):0.12574093071149400336,SELML20813:0.00000100000050002909):0.00927460510378439601,SELML09379:0.00932813396907514365):0.01397774234266347532):0.01871018274364625450,SELML09395:0.00000100000050002909):0.00000100000050002909,SELML20823:0.00463913170794102298):0.00475219553005659830):0.03038880589415450875):0.25057129550716489286,(SELML06902:0.00000100000050002909,SELML13410:0.01944383189133876144):0.69918435501807829624):0.21184059841609043096,(((SOLTU11560:0.00866375047195633470,SOLLC08801:0.03929176849985123454):0.10262341703543685634,(SOLTU05304:0.01187114169278406621,SOLLC33391:0.01633284173625539071):0.15173972504306554310):0.21239804572202647392,(((SOLLC08269:0.02116737660229363674,SOLTU10962:0.01372146392435308164):0.25856914038108191889,((((MEDTR21917:0.01799185381782565998,MEDTR21918:0.00922025508246283182):0.05573688941724050383,((SOYBN35782:0.03087107867875190509,SOYBN00680:0.01163081217349988539):0.08312081118311021033,MEDTR21916:0.15768887143629881087):0.03305450703309942284):0.01735157638851950873,((SOYBN01697:0.01802156549906810262,SOYBN46853:0.01038317775355940449):0.09530254205432765746,(SOYBN00679:0.02003726912435226451,SOYBN35783:0.03023646561760832269):0.03688686876344755838):0.02302672045433903220):0.08493744642431001746,((VITVI19452:0.12740781730937075777,((POPTR37828:0.04689316251484140774,POPTR22952:0.05970448316470000627):0.04193762972183705945,MANES11398:0.08400005523386327999):0.02628003046485331493):0.03551912761098192928,((((ARATH04782:0.00000100000050002909,ARALY08526:0.01228654282875111386):0.29212655156837918913,(ARATH15344:0.00223041658309429966,ARALY09276:0.01996073486554238163):0.13397468053224975693):0.07185417278801679852,POPTR16926:0.13312849254037534275):0.01098363254080201613,(MANES03104:0.09480815288204409719,MANES16408:0.02654262709927663472):0.03040210277567834823):0.03004035743504208933):0.01404570578236909867):0.03121249594034346958):0.05887160826170913935,(((SORBI10122:0.03323503849451007325,(MAIZE08377:0.02021590177517258030,SETIT28177:0.08805632675554768418):0.02504709626837576045):0.07287654177256396026,((BRADI21338:0.02686457952333810503,(WHEAT87462:0.01035700555682448655,(AEGTA26567:0.02910656260243310589,WHEAT48582:0.00000100000050002909):0.00625588989844735790):0.02544515824802914133):0.05168964740217039944,(ORYBR07284:0.04813817240195044506,(ORYSJ56422:0.00433527809312172531,(ORYGL06636:0.00000100000050002909,ORYSI08916:0.00431204407639125802):0.00000100000050002909):0.02653829363724803658):0.07984049213339161621):0.04976898423119274079):0.18678884266555975668,(MUSAC33499:0.00000100000050002909,MUSAM30396:0.00000100000050002909):0.08842248045116975208):0.04165816956540665389):0.09570036071387207077):0.60260647226597463533):0.10300128639879745085):0.05333874304685561757,((SELML13018:0.00000100000050002909,SELML30466:0.00477137258052293296):0.56143589685507788722,(((((PHYPA18023:1.45983872422859706219,((PHYPA12217:0.72758536297043008290,(PHYPA14615:0.22317040222409229022,PHYPA01897:0.18214443240871036611):0.11097031107740006062):0.14961122338629148643,(PHYPA08531:0.29900979623764539772,(PHYPA04376:0.25454022577299584285,(PHYPA18912:0.62398743983641291599,(PHYPA13415:0.71529981912002149613,PHYPA01014:0.26003643742515786252):0.07742794881965327225):0.38565491945027224885):0.05957449835352644774):0.09269847683225705681):0.75858844054616292318):0.07539002105126456355,((PHYPA04370:0.31660275332914461499,PHYPA05793:0.28028601507271555526):0.27571769085407782374,PHYPA28145:1.21917586572920066956):0.14066981600410852216):0.11608964301527176233,(PHYPA27115:0.42531933835658036758,(PHYPA31589:0.11675081532900566383,PHYPA04378:0.17222158017426700272):0.22477213002122817254):0.32580096131428765149):0.08974406589734822137,(((PHYPA11652:0.08450753494102389296,PHYPA31587:0.15429860569540626569):0.08729389620246855164,PHYPA04379:0.14759110818710738378):0.49200936134970701952,PHYPA11641:0.66796896516575210434):0.18230799226098934329):0.07538150349550752638,(PHYPA05231:0.11882948010610601408,PHYPA09854:0.13832190416771542041):1.05007915890183545216):0.04891086498022992335):0.04436693750603239172):0.09999942466169695066,(((MANES21353:0.07843656258111202095,POPTR03078:0.09140350201084442017):0.03941132856151274150,(((ARATH05045:0.05812548265815464105,ARALY28862:0.04021698999013888220):0.25858803601578123077,(SOLLC33983:0.41111237385610865935,(MUSAC06420:0.00000100000050002909,MUSAM01426:0.00000100000050002909):0.30877713598507794401):0.04059574780523743376):0.08460593221894585625,((SOYBN45734:0.02007143564929426971,SOYBN20022:0.02561133933208175478):0.12665765536264397828,VITVI20760:0.14512568901466627036):0.04894509511205995256):0.01780901105694476100):0.79989526243629693880,(((((((MUSAM28527:0.00000100000050002909,MUSAC31630:0.00000100000050002909):0.11781514143582931531,(MUSAC24401:0.00000100000050002909,MUSAM31539:0.00000100000050002909):0.22759820284884196839):0.25781360213390636105,(((SORBI02725:0.11543585860026051026,SETIT15331:0.15169645446581081494):0.13454550939445297786,((ORYBR24386:0.10628364006661440710,((ORYSI29698:0.00000100000050002909,ORYGL22907:0.00000100000050002909):0.00000100000050002909,ORYSJ27622:0.00438633581703788689):0.08878200480216735802):0.08345810431159335352,(BRADI03434:0.13799244964271445424,(HORVD25504:0.02166620886455744924,((TRIUA06372:0.12959511089449690657,(WHEAT32698:0.03864763690807082597,TRIUA00769:0.00135317713596018983):0.00332330737539259652):0.00464075870143152661,(WHEAT28360:0.00922554755876476597,AEGTA22609:0.00000100000050002909):0.01862772431606431189):0.02827628220152079985):0.14784094324758120798):0.07657774840354276968):0.05040432524277733278):0.23807470404558811472,((((MUSAC22475:0.00000100000050002909,MUSAM05163:0.00000100000050002909):0.25879616543111028104,(MUSAC29462:0.00000100000050002909,MUSAM23604:0.00000100000050002909):0.08534457241850162967):0.08980587516420318606,(MUSAC23213:0.00000100000050002909,MUSAM05901:0.00000100000050002909):0.20220365953842298068):0.06421223425467911805,(((SOLLC23016:0.03638597281328402600,SOLTU33038:0.03710672999887828366):0.29159362129737559366,((((((((ARALY10000:0.01016220106392523755,ARATH03249:0.02976834372087038688):0.05490653820923878381,((ARALY10002:0.01549038619041884918,ARATH03248:0.03122391175138889211):0.01458789518267716509,((ARALY16713:0.17918780086834498744,ARALY19559:0.00438957615145475245):0.02873653665739813248,ARATH25850:0.00908135915132069274):0.03407168058096569224):0.02455523248667762851):0.11014162658842005516,(ARALY12955:0.02429673062665791208,ARATH18258:0.00967455909419093554):0.10410863334016712267):0.40633050951692445407,((ARALY10003:0.01890634137244458224,ARATH03247:0.01697584690425940276):0.23155955806054623336,((ARALY29288:0.00042458426852172735,ARATH19292:0.03247589055765442295):0.08250360960924246756,(ARATH02753:0.00865066469549579699,ARALY03291:0.01449081555443989568):0.16209839577201246019):0.15608768708840575767):0.04420186725022508950):0.08484641382635919882,(POPTR09167:0.28267859137257533853,(MANES21800:0.27864093159963454482,(ARATH19291:0.00000100000050002909,ARALY29287:0.02848852333773088663):0.43319629460236386276):0.03894089730857926146):0.00000100000050002909):0.03186457471675530062,VITVI24172:0.31426671234562669754):0.00905854647086176169,(SOLTU33039:0.05816087707296611897,SOLLC23017:0.02228257830393525277):0.46113355005377754114):0.03843900357137167156,(((((MANES16527:0.20707799493124401380,(SOLLC23268:0.38025304824661310121,(SOLTU28412:0.00535624135194013185,SOLLC22105:0.05613627561101311447):0.09524303674191680891):0.12887928131447612401):0.01260972240155851243,(MANES09941:0.15645263168174200485,POPTR34479:0.12389048001495335527):0.04342295486236855823):0.07276609054885742334,(((SOYBN42202:0.02118227836288713931,SOYBN21748:0.01644615953338779066):0.24692740479443978097,MEDTR15771:0.31577361363375822112):0.02131661459480957074,(MEDTR42390:0.18078632029169158790,(SOYBN07961:0.37594291031565674199,SOYBN12455:0.03193064477323372813):0.02501370661023886305):0.02702136410198599167):0.06155412104215795405):0.09626978611305717082,(((((((((ARATH01434:0.03326402804023043808,ARALY00064:0.02999459562184841194):0.09421924133575029781,(ARALY29644:0.00203379637304447252,ARATH11101:0.01593368143997206388):0.10660883901796770756):0.22164631262628492481,((SOLTU15123:0.02410755361753252543,SOLLC27615:0.01286137629737767185):0.18825616043936321820,(SOLTU41630:0.00000100000050002909,SOLLC30182:0.01473818587608549668):0.09500375584676275242):0.17962816527417160839):0.08482781103288279667,(MANES07144:0.16203913770382263881,((SOYBN11469:0.01589453517297529858,SOYBN24966:0.02339464808929192854):0.10356474599509736534,((MEDTR08954:0.05864939370753735615,(MEDTR34621:0.00829907080829405015,MEDTR34620:0.00499994643452340067):0.05668403220200715631):0.05273462105741605344,(SOYBN51684:0.17642901646205200183,SOYBN04901:0.04125914054456694680):0.02380766330124998303):0.03158760632170121152):0.03851851133473387090):0.02315930849886935899):0.02718091095752991210,(POPTR16993:0.04940577660331951781,POPTR30799:0.05457640310787268551):0.08863894760701460096):0.02762469745444158173,(VITVI24450:0.12181582135342103324,(VITVI24449:0.06220884938171312994,(VITVI24464:0.00000100000050002909,VITVI24468:0.00712346844720962869):0.03603185331464960756):0.03975815408878824453):0.04329459094678926590):0.09176438539436139463,(((POPTR29056:0.13077457669048556110,POPTR29057:0.05267175297008459822):0.03075236009326701853,(POPTR00348:0.01655953669099122921,(POPTR00349:0.02697645280289770117,(POPTR33189:0.00000100000050002909,POPTR00144:0.00000100000050002909):0.00000100000050002909):0.00832072236514292893):0.07838168083037699851):0.23788536085482214766,((MEDTR30438:0.42136317822004920597,((MEDTR34998:0.24452848238158930716,SOYBN52677:0.18766209293093907839):0.25855905575446785916,(SOYBN49014:0.05867839907026141388,SOYBN32844:0.03581342653317994701):0.21655431189076917997):0.08773815390042381812):0.58465212659114340621,(((MANES04116:0.19401691338063234427,POPTR20093:0.18508769771064598197):0.09736567009284757823,(SOYBN11603:0.03048877614613966849,SOYBN25107:0.04153919669446339002):0.38440991156696335818):0.05515883257564905412,(POPTR20092:0.39016581191482535562,(((SOLTU13165:0.04159132887095513820,SOLLC26035:0.01757476771752396541):0.00180276329067892709,(SOLTU35076:0.00000100000050002909,(SOLLC24749:0.03395202277028106647,SOLTU35031:0.01558226242757700629):0.00804631861762039081):0.04136147442165903632):0.21271461606494213026,((SOLTU12410:0.00000100000050002909,(SOLLC25814:0.13820828413746039098,SOLTU12411:0.01799620292402752050):0.00969324716455009783):0.07820328705153896387,(SOLLC24748:0.02869551553635420194,SOLTU35030:0.04501180869005286245):0.20948390734446886707):0.20270577077823093148):0.11657674465039977174):0.13317593844878172771):0.03831849101601358248):0.03027129903572875480):0.03922875979866165264):0.01684645710782435579,(VITVI05921:0.12563325049328344374,VITVI05917:0.12520596478204715218):0.09462124288777128134):0.12775367251944327873,((MUSAM14430:0.00000100000050002909,MUSAC13763:0.00000100000050002909):0.12771273976123795335,(((ORYBR24388:0.50337366142262240931,((((ORYSI29699:0.00000100000050002909,ORYSJ27625:0.00000100000050002909):0.00000100000050002909,ORYGL22909:0.00000100000050002909):0.05549083806812468017,(BRADI03435:0.04879077134835191343,(((TRIUA08215:0.00000100000050002909,TRIUA21996:0.26295948200265867323):0.00817389315608522439,(AEGTA13309:0.06562444529583479069,WHEAT45064:0.00774167688334377515):0.00000100000050002909):0.01380935257089896222,(((WHEAT35766:0.00000100000050002909,AEGTA04524:0.00000100000050002909):0.04170615254011814793,(AEGTA33213:0.49888754849868760521,((((WHEAT22160:0.00000100000050002909,AEGTA33214:0.00906687784214987337):0.03675660265279418609,((WHEAT12004:0.02468264540695007739,TRIUA20762:0.00000100000050002909):0.01414429238908978051,WHEAT32782:0.02388174542004466855):0.00435236434194583716):0.00442687273163500095,HORVD08982:0.01562263189613093996):0.00000100000050002909,(TRIUA20761:0.01797442353088164399,AEGTA13308:0.21717138522337739448):0.00000100000050002909):0.01682333246933797460):0.00000100000050002909):0.01065485246687873644,WHEAT85085:0.04145107218113282949):0.00620667325593616225):0.09132283132833111938):0.08791813509551500705):0.03195489850186534336,(SETIT15329:0.07047114177174997052,(SORBI35374:0.03755068835215968903,MAIZE72512:0.15141617114170607961):0.02064961395275088582):0.11605603169074922565):0.09827247229610616697):0.13439659878358387046,((ORYBR24384:0.03666623653652124198,(ORYSJ27620:0.00000100000050002909,ORYGL22905:0.00434516659941436463):0.03537232336334167337):0.02291511989991039736,((MAIZE64782:0.12255768679116242625,(SORBI02724:0.09075153353677181678,SETIT15333:0.07560264449419117072):0.02320087886123306173):0.06356620741069120284,(BRADI03432:0.06195219615737228291,(HORVD25508:0.01427375674581105383,((WHEAT60407:0.00000100000050002909,AEGTA11226:0.00000100000050002909):0.02692964354303263586,TRIUA05358:0.00719803332716940653):0.00000100000050002909):0.07319329388444215101):0.02694480428233698988):0.02241696300054943011):0.36519870575419122183):0.14644337324362149966,((((MUSAC12755:0.00000100000050002909,MUSAM19743:0.00000100000050002909):0.07371963208175744131,(MUSAM05165:0.00000100000050002909,MUSAC22477:0.00000100000050002909):0.16545618048524771138):0.02447116931618892322,(MUSAC09456:0.00000100000050002909,MUSAM25853:0.00000100000050002909):0.05457371980977839682):0.04635251160636844753,((MUSAM11486:0.00000100000050002909,MUSAC17417:0.00000100000050002909):0.08485970297192710343,((MUSAC17415:0.00000100000050002909,MUSAM11484:0.00000100000050002909):0.33334399991305391220,(MUSAM31803:0.00000100000050002909,MUSAC24665:0.00000100000050002909):0.07566046214822304272):0.04431691006149920259):0.05194682509849380542):0.03666911559745159033):0.01456961455004371006):0.14985506206622983827):0.03340758602615528233):0.01255933172298845032,(VITVI24175:0.26754754006319836357,(((MEDTR42526:0.16032652036014988228,(SOYBN12535:0.03027105407316259961,SOYBN08048:0.04459494280090759571):0.07879501743940507674):0.07505689396764725352,((((MANES17118:0.57346662585280039348,(MANES12544:0.19676794187305621242,(MEDTR42524:0.15007457841664581522,SOYBN08047:0.03605790941550521961):0.09402460020059832946):0.03140011839487689971):0.01962392224388840103,(((MEDTR42514:0.09247918994835495343,MEDTR22615:0.01366432305670875307):0.09928330387283584857,(SOYBN12532:0.01036494078386980197,SOYBN08046:0.02196716485467621605):0.08169955796560558758):0.07198943302804891586,((VITVI24171:0.08664819722726199713,(((POPTR35499:0.40525100571876260247,((ARATH02754:0.09320590455013072484,ARALY03289:0.06086088394003414531):0.07885615652586927538,(ARATH19290:0.02337986454851012641,(ARALY29286:0.04717209494117403229,ARATH19288:0.03814580558053030923):0.03846693729312187365):0.10192877215205804753):0.41417766472732803207):0.16073676182087695552,((SOLLC23015:0.02694372101697084868,SOLTU33037:0.02653802323606794730):0.62199957187418364324,((SOLTU20512:0.00972271123875176162,(SOLTU20511:0.01147018644784781119,(SOLTU20513:0.02643882042012478742,SOLTU20515:0.00847805955390828168):0.03193416255995014386):0.00393787153698065429):0.03967830724138914078,((((SOLTU20514:0.16945049892412741843,SOLLC18753:0.00537086722032452044):0.00000100000050002909,SOLLC18751:0.01120267337000929557):0.00828665510820371549,SOLLC18752:0.00716802422552568694):0.00971966198421999293,SOLLC18748:0.00418184823767660859):0.00822225218720306142):0.11665217368444748269):0.07816312271988211380):0.02148922590693498266,(VITVI24169:0.02546827158878254074,(VITVI24167:0.04990519451560231079,(VITVI24184:0.03312198278353388481,(VITVI24181:0.30224729240440550981,(VITVI24177:0.01929054557240287085,((VITVI24182:0.00000100000050002909,VITVI24179:0.02106867567382362735):0.03167180870398408898,(VITVI24176:0.01969267275057362890,VITVI24180:0.02633637180363321284):0.02597636696155432995):0.00000100000050002909):0.02677990712203075913):0.02558610491879504886):0.01286942444778651704):0.03459532071023858901):0.05761190653651706434):0.03828416322048041470):0.02247322089413233276,VITVI24170:0.37661850836053661906):0.02859208169062607205):0.01287130689201141688):0.05928063733794242118,(((POPTR09170:0.00928249566138726612,POPTR09171:0.01362830117483226737):0.11097795401069124321,(MANES11727:0.01231132068132651143,MANES11726:0.02535966891397891179):0.11754186504289823589):0.04771316751350534319,(POPTR12670:0.12474531585938525291,POPTR31146:0.25446595055379106487):0.01103215326216829342):0.03032714223225285721):0.01533143610219641836,(MANES23986:0.05998852601446329202,MANES23987:0.09367903400324815999):0.06602906363494510933):0.01836632947338360036):0.02448133477151803392,(MEDTR42525:0.13691511460265232136,(SOYBN08045:0.06479718425348945932,SOYBN12534:0.04696694479745631978):0.02945549968934863330):0.11225969672461046100):0.03403827949339053444):0.01233721383218942119):0.01532854881626578673):0.04320162729338317825):0.05558940326725511638,((MANES31736:0.09777810604085424018,POPTR09168:0.18283577282268856368):0.11236611418309042087,((ARALY11467:0.03888936752086643439,ARATH05433:0.02972788478467355833):0.41420996743610127844,((SOYBN08043:0.05247574434689786932,SOYBN12531:0.05270147179584935837):0.09631960271930162243,MEDTR42513:0.14993674747835861183):0.13917114534057511976):0.01712154485486190592):0.09614297396977788956):0.06092720203940441698):0.06456712224928252974):0.11705550806939674091):0.08311322551438103667,((((SETIT15332:0.10628368765867061974,SORBI07769:0.17746843073221649223):0.13238212253032827226,((BRADI03433:0.11328188015797371890,HORVD25505:0.10975535063066788055):0.16776288152872084747,(ORYBR24385:0.11210383409748714278,((ORYSI29697:0.00000100000050002909,ORYSJ27621:0.00000100000050002909):0.00000100000050002909,ORYGL22906:0.00863506858097733837):0.05243481921101125764):0.03958836043479305872):0.06380505947748491002):0.73392444568281156592,(((BRADI25911:0.22376624706888575966,((HORVD28420:0.04133972816789235893,(WHEAT70817:0.01108882466288622914,WHEAT69921:0.04801524586326613719):0.04057905017628739980):0.21283851374492795960,BRADI25910:0.18298421028386721576):0.09725606334819790477):0.28333157001538916697,((ORYBR18897:0.11449855306039051495,((ORYSJ08762:0.00000100000050002909,ORYSI23023:0.00000100000050002909):0.01068998266261429742,ORYGL17951:0.02629761802361783168):0.04752807889957954418):0.20366728263354880180,SETIT25618:0.15219643970655943876):0.08943886650101305624):0.18916259784654348985,(((SORBI34307:0.19854749956115821941,SETIT21651:0.15111504480999468636):0.15925433731526916770,(((AEGTA26651:0.02903255429824982276,WHEAT83808:0.00000100000050002909):0.17503197160876571292,((MAIZE96631:0.09611910691411411356,(SORBI22834:0.06072956019428756708,SETIT20833:0.09321874300456664542):0.03442156993612226906):0.01669260821340538478,((TRIUA13662:0.03946045674247487811,(WHEAT52330:0.05776660877334939548,(WHEAT86773:0.00532743048250389466,AEGTA07045:0.01706992676679780149):0.00000100000050002909):0.05607798516832061819):0.02665893917150888998,HORVD23663:0.05284167798097322288):0.10922772489145500530):0.04191254724687159400):0.16454957110542003940,((SORBI02257:0.06147049404514631776,(MAIZE96650:0.11638670537737398625,SETIT20829:0.09826335381078528386):0.03068151872990982493):0.08611535254662248950,(((SETIT20832:0.07938310066649272023,SETIT20831:0.08489703161439335344):0.11500264078366927156,(MAIZE96644:0.09403094034705827831,SORBI02258:0.08634180949574422892):0.02753513034845714302):0.04039718929754703564,((WHEAT25045:0.03964513054506172557,AEGTA29018:0.28747232515061138525):0.10074830354835012658,(((((WHEAT08852:0.00000100000050002909,AEGTA29019:0.00000100000050002909):0.03722325902676116433,AEGTA29020:0.01976556200521976253):0.00603347134718825503,((TRIUA15959:0.09466630863943445440,WHEAT20495:0.14768597603717259492):0.00467495466410714454,((WHEAT65446:0.02594364243649492988,WHEAT38110:0.02098146513182690825):0.00659101893750014059,(TRIUA01828:0.14559717274205583037,TRIUA15958:0.04075243626788545293):0.00599465909884547114):0.00559920822398990350):0.00517256328758699049):0.01262375076365237873,TRIUA01286:0.02408004711105568574):0.01395035019780327054,(HORVD20872:0.01098578451738006431,HORVD05302:0.02063874355727766952):0.01863102271750660330):0.06009445017908530279):0.07507266639965004540):0.09634548124187623797):0.18733450981839830374):0.12464078965327556048):0.17929409366442500273,(((ORYBR27565:0.04310309170319372163,(ORYSJ16804:0.00464142537892024785,(ORYSI33560:0.00000100000050002909,ORYGL25925:0.00000100000050002909):0.00000100000050002909):0.03961188448467305862):0.15656295455261637350,(((BRADI00988:0.00476391111437001521,BRADI00989:0.00000100000050002909):0.20467187354703644808,BRADI15630:0.07167181318010748536):0.07709451096557318195,(WHEAT57120:0.02880284780026281730,(AEGTA19608:0.00000100000050002909,(HORVD12912:0.03808128361930788325,TRIUA04806:0.00650706260684350089):0.01248932730957088774):0.00000100000050002909):0.11439129903184673542):0.04934059931720293640):0.03754646250901938487,(BRADI15631:0.13872232419541341564,(HORVD07278:0.07725049260346161795,(TRIUA09787:0.03715911881960721336,(AEGTA10083:0.32811103361633536801,WHEAT80354:0.00089786239555732748):0.00938949191268437407):0.01976863625399532740):0.19670631464817542322):0.29458213491685558694):0.10093247659056210630):0.54345118316186735719):0.18977601405509095245):0.05157025295330795039,(((SETIT25616:0.07852315106039221837,(MAIZE06173:0.06733444043491103315,(SORBI18564:0.06516675669532950854,MAIZE66584:0.09815205600982566947):0.01488314414710101632):0.06917477120401739621):0.06047679945543893432,((ORYBR18895:0.09356013673021203181,(ORYSI23019:0.01995226433074431122,(ORYSJ08756:0.00000100000050002909,ORYGL17947:0.00000100000050002909):0.00000100000050002909):0.03687445132702502765):0.11333698691822792493,(BRADI25914:0.24966037553655898162,(WHEAT65410:0.01346895926767484493,((TRIUA05751:0.00958342138837884987,WHEAT70813:0.00000100000050002909):0.03311185057557836792,AEGTA16932:0.00967767982351243686):0.01558616683975027999):0.21100450855734623201):0.16071927687677828311):0.05689779434687595311):0.26359514352027774153,((((((ORYBR27580:0.05145045231195581603,(ORYSI33573:0.00872787187461502960,(ORYSJ16829:0.00290821604630775313,ORYGL25941:0.00289957823451919994):0.00000100000050002909):0.04185497770274457935):0.08669634333957521033,(SETIT20817:0.09654332316673008840,(SORBI10904:0.07537288338661414511,MAIZE96657:0.10383560034707478570):0.07765613274820971912):0.14373989258596550633):0.04331225638908815789,(AEGTA14407:0.21396357640882618378,(WHEAT49075:0.03742635225901538853,TRIUA17073:0.22481355191992527520):0.00000100000050002909):0.21191601840842899662):0.17902285996310970950,((ORYBR27579:0.06945899715509075423,((ORYGL25940:0.00000100000050002909,ORYSJ16828:0.00000100000050002909):0.00000100000050002909,ORYSI33572:0.00000100000050002909):0.04585702763633902473):0.13572794106610852616,((BRADI15643:0.11353281774113219149,(HORVD25688:0.09536913642604670505,((WHEAT71963:0.00000100000050002909,AEGTA06757:0.00898509776603926072):0.00442891723575507702,(WHEAT55769:0.00000100000050002909,TRIUA30371:0.01424187857255200876):0.02808541866378306065):0.08820649727989528233):0.25080997272986199631):0.10015461496007804776,((MAIZE68589:0.06784969608152634224,SORBI23124:0.06689421831480514558):0.06072688689452997168,SETIT20818:0.08250223655998115135):0.28081662195421031036):0.03415190331329334694):0.18099515830813858730):0.23828339406633486375,(((((TRIUA28261:0.00000100000050002909,WHEAT77614:0.00522012460352415733):0.01052026755137579032,WHEAT14212:0.01900931337671126625):0.00537892467272544673,WHEAT53726:0.03427952163898331794):0.01082305341106296580,(AEGTA15427:0.04656158751954651148,HORVD28399:0.05149089461177087240):0.00569082262386825383):0.16990790881276357505,((SETIT25615:0.12311182883990935688,(SORBI29267:0.02895599022920697027,MAIZE06178:0.06139925813407767080):0.08104739507434938206):0.18396741248761069865,((ORYSJ08754:0.00537134026524889712,(ORYSI23018:0.00000100000050002909,ORYGL17946:0.00000100000050002909):0.00406329179906062595):0.05999854286502422085,ORYBR18893:0.06397293409596348235):0.10346668422380561614):0.03797983181460620750):0.24990133958587135155):0.23925253305203117438,((((SORBI29268:0.05227356919765768078,(MAIZE66585:0.07675489623044472187,MAIZE06172:0.04528658852080717778):0.04941640495042282782):0.12382799873015735981,SETIT25617:0.14818171317810244214):0.27929943165305376462,((ORYBR18896:0.07419590753389222748,(ORYSI23022:0.00379711849766854910,(ORYSJ08761:0.10978693143125221876,ORYGL17950:0.01344563814004453781):0.00597586960473746407):0.07325585159068384589):0.19276665548532748162,(((HORVD28419:0.04596984122855517219,((AEGTA22182:0.00000100000050002909,WHEAT70818:0.02185908074112965019):0.02081808898138607158,(WHEAT69922:0.00000100000050002909,TRIUA14442:0.00913756995703720459):0.03482865824733673982):0.02434412174635048817):0.06443026333473295120,(HORVD28384:0.05759773530055015828,(AEGTA13517:0.00803920841303648777,(TRIUA05752:0.00000100000050002909,WHEAT39273:0.00521712108856406138):0.02662966533034783270):0.03119273092612735027):0.06885337214824652219):0.21194169365585280307,BRADI25913:0.19919830833343557530):0.10088797326520221320):0.04768688711835541300):0.22477349059093132411,((BRADI15632:0.22523659181088406811,(HORVD14906:0.05450683071876778057,(AEGTA12904:0.00000100000050002909,WHEAT14274:0.00000100000050002909):0.03721889908342769504):0.14284606075147304738):0.18649531433975805039,((((MAIZE96629:0.12229417865612347838,SORBI07264:0.06804146904928368156):0.15660089871520962990,SETIT20845:0.20059836865508490211):0.20541359029522737734,(SETIT20843:0.27853855718646863826,(SETIT20846:0.19630229880655805652,SORBI29609:0.14153813858141500726):0.14100051772267477301):0.10308325201364867962):0.09889564227595368240,(ORYBR27566:0.14928134818711108478,(ORYGL25930:0.00000100000050002909,(ORYSJ16810:0.00000100000050002909,(ORYSI33563:0.00000100000050002909,ORYSI33564:0.00000100000050002909):0.00836936205081428679):0.00829818569265527821):0.09616705606222861191):0.10112884277092673568):0.08676621583995366982):0.28813117070194893543):0.27210265692022123085):0.19598207908246487174):0.31295195999555491806):0.06897982798816415517):0.18705402992952535612,((((MANES04285:0.12809102396342048058,(POPTR35398:0.06397137367521385509,POPTR09053:0.09971463383116427326):0.06707996716399333703):0.06835412311457757240,(((ARALY24866:0.07611219986911359203,ARALY15026:0.02951860233566997935):0.02063033503687307021,ARATH03093:0.08666218447788577584):0.63638075247570258242,((MEDTR09013:0.18352185936553044865,(SOYBN12169:0.06494325341357314041,SOYBN24259:0.02854138856056501888):0.09714032590245939847):0.07812792911076180125,(MEDTR04903:0.11409216700434123004,(SOYBN22997:0.01478501927712241523,SOYBN50659:0.01775462673194045868):0.07115741312144341357):0.07794777989400249185):0.11908487576965891275):0.04740388078412241524):0.09194528558281013508,(SOLLC25539:0.24250141908759470510,(SOLLC25538:0.04050633972016133566,SOLLC25537:0.09295939090930299686):0.34009277540434990073):0.12937517660271360964):0.16950878800358334941,(((((((HORVD25108:0.00652390781678803631,(WHEAT76911:0.00000100000050002909,AEGTA04386:0.00000100000050002909):0.10477360487069939388):0.25393731138557690263,BRADI16645:0.17915000039128264886):0.06859033134266104281,(((ORYSJ06431:0.01388706125222685314,ORYSI28312:0.00977859196568739084):0.08335865941777977073,ORYBR23218:0.09547226708483877444):0.11486798143665095939,(SETIT14402:0.06305449355691006286,(MAIZE36432:0.07234254082785142315,SORBI11618:0.06568491744010958311):0.06013131251270829869):0.12189287365735004820):0.02240333271100423962):0.19929879531099886636,((((ORYGL09971:0.00438988821365675092,(ORYSI12988:0.00431545886734002217,ORYSJ30798:0.00432538371525326062):0.01311685936201942120):0.07922776893689105482,ORYBR10598:0.09040656229199227345):0.17168839822092302194,((SETIT01298:0.08266867070424761821,(MAIZE102130:0.08227597029840134912,SORBI13361:0.04506175022050269013):0.08586011082166068731):0.13460033789939085391,((ORYBR10597:0.07760596236226748046,((ORYSJ30796:0.00436490517936372925,ORYSI12987:0.00476068264444901110):0.01185171851093684905,ORYGL09970:0.00577594490990200344):0.08205012303557990272):0.17608303601621336232,(BRADI14833:0.11270235572949421909,(AEGTA10569:0.04789626742153037936,((TRIUA24825:0.00487943287423979032,WHEAT51707:0.00000100000050002909):0.05749501657107006919,(HORVD26507:0.06549282606881859370,WHEAT57481:0.01525853310575596249):0.02151149485069921499):0.01015745618935793605):0.13886462886579525877):0.07200691689499534587):0.05700688907148198509):0.20893791248844395536):0.04062771579734936883,((BRADI14835:0.44955348766375019531,(((AEGTA29856:0.00469479107038425682,WHEAT79399:0.03830812668319911324):0.01765932240119157809,TRIUA22875:0.01373661399126350872):0.07619097858445392224,(AEGTA19497:0.01701177093089568590,(WHEAT78466:0.01269519732717229281,(TRIUA22876:0.00448992266538095468,WHEAT43851:0.00000100000050002909):0.01022824027457463168):0.00805587906133016854):0.01751328239966683242):0.25361120816617449547):0.20112712000601240536,(SETIT01299:0.08374250964003029929,(MAIZE57163:0.05579303092246609003,SORBI00293:0.06982219139494250104):0.12294729382070185286):0.14774140597567320121):0.05550965349764053203):0.16501391345501570385):0.59156027821168211123,(MUSAM25306:0.00000100000050002909,MUSAC08909:0.00000100000050002909):0.56425331043823023780):0.06935179398753481272,(MUSAC17235:0.00000100000050002909,MUSAM11304:0.00000100000050002909):0.33074656626257226133):0.04113446107292954845,(MUSAC32048:0.00000100000050002909,MUSAM28945:0.00000100000050002909):0.40395029835227724835):0.11116519932884783017):0.36383795737023516548):0.15513855160898498697,(((SELML04036:0.00000100000050002909,SELML30593:0.02253800581798172387):0.73343806290509760970,((SELML32009:0.01185944579387473129,SELML25830:0.01564284217923260847):0.62496234353243873549,(((MUSAM00846:0.00000100000050002909,MUSAC05840:0.00000100000050002909):0.27767379729728347559,((((MANES31537:0.10373728244440343083,(POPTR26312:0.04902524609267987221,(POPTR17073:0.02424460350045745324,POPTR19841:0.03067210702970476002):0.05725919276272732616):0.05217826816232578463):0.01773646899821938738,((SOYBN45709:0.01976467850871522700,SOYBN20068:0.00931593700793753761):0.08882356558152308679,((SOLTU19135:0.02308697979826383404,SOLLC17663:0.01527362106607774161):0.07746500380067365688,(SOLLC14588:0.10705113654201102447,(SOLLC05546:0.02544882799719032015,SOLTU17369:0.01633887941936840171):0.35601242514875991452):0.02408651051819441294):0.19862420489319848604):0.05000377207553802911):0.01929113506021261706,VITVI05611:0.13589966418294793793):0.04057999491301594874,(ARATH21508:0.01314216671002194949,ARALY07020:0.01471697015965536294):0.24430137817921074306):0.17530343814579910089):0.12758705747720480717,((SETIT07458:0.08223267413614934740,SORBI05578:0.04285640908248434383):0.09886489818727521584,((BRADI02621:0.04319706558677083308,(HORVD26946:0.03123079674234424327,(WHEAT30637:0.00000100000050002909,AEGTA27617:0.02543652954470833685):0.03906645080991166807):0.03767712306148063989):0.07591027655908981486,(ORYBR25880:0.35980546318773182213,(ORYGL31036:0.38561322162703270955,(ORYSJ17704:0.00000100000050002909,ORYSI31590:0.00000100000050002909):0.04221454678817607165):0.03733326424170398811):0.04923224252110530025):0.04482387213923874625):0.30330798639493300461):0.42391238293699867734):0.12900733688252491449):0.25672951179217162743,(((ARATH12088:0.04345612947334916848,ARALY15180:0.01278238004773055332):0.28225191641228014605,(((SOLLC08866:0.03116105286661456295,SOLTU11652:0.03595173601233894733):0.27779696276678966793,(((MANES08542:0.06187204056805281627,MANES04002:0.06468024974113477377):0.02999104263142534851,POPTR02330:0.15197978163985234601):0.05110266224294635756,(VITVI10320:0.21088861138339548562,(((SOYBN04100:0.01701653951175300522,SOYBN05818:0.02033318006357448526):0.09272937116350643549,(SOYBN15520:0.04250480034728820744,SOYBN06739:0.02912054771531125130):0.13799826100591089384):0.05268169938475606578,MEDTR17803:0.22034338595431993135):0.10199510913397043244):0.04902372571343893010):0.06609838470913978470):0.04655835393607146017,((((((MUSAM15403:0.00000100000050002909,MUSAC14736:0.00000100000050002909):0.20600028692733854396,(MUSAM32781:0.00000100000050002909,MUSAC25643:0.00000100000050002909):0.14115274237014310832):0.08651793145117307737,((MUSAM00673:0.00000100000050002909,MUSAC05667:0.00000100000050002909):0.11158952141205510933,(MUSAC25329:0.00000100000050002909,MUSAM32467:0.00000100000050002909):0.09387903218927463878):0.10995434277929043432):0.06052700194057819560,(((MUSAM00310:0.00000100000050002909,MUSAC05304:0.00000100000050002909):0.13617504367452637482,(((MUSAC16058:0.00000100000050002909,MUSAM16725:0.00000100000050002909):0.10486022114717413745,(MUSAC34135:0.00000100000050002909,MUSAM34135:0.00000100000050002909):0.16409156328852872453):0.03858655198261457669,(MUSAC25174:0.00000100000050002909,MUSAM32312:0.00000100000050002909):0.10788142495815214450):0.00752993573947097292):0.01084418378141180188,(((((BRADI07661:0.26881884453128335188,(WHEAT50034:0.03271148716698367431,(AEGTA06624:0.24424696696338152324,HORVD17390:0.02177411956805997209):0.03785406196553546543):0.18638030109999692563):0.10981446169140147984,(((ORYSI15840:0.00000100000050002909,ORYGL12258:0.00000100000050002909):0.00000100000050002909,ORYSJ36105:0.00000100000050002909):0.27537284175231424577,((MAIZE09078:0.05434356009372160595,SORBI15382:0.10237753003433391896):0.08944045921903263918,SETIT35250:0.12215170581009912598):0.11826045417292589679):0.06548353249881462557):0.08146513048135459178,((ORYBR05841:0.10404597279528658704,(ORYSI07141:0.00410773159144801024,(ORYSJ35711:0.00000100000050002909,ORYGL05048:0.00000100000050002909):0.00000100000050002909):0.04551987923090337895):0.10576161218838060762,(SETIT32776:0.03943648086112061524,(SORBI31574:0.04111134894492661507,MAIZE23151:0.03520893854577578780):0.09070106443727682377):0.16283646104099522289):0.07836123413467779852):0.17511975411130692448,((ORYBR25645:0.04931355332983965167,(ORYSI31315:0.00835369478738797432,ORYSJ41794:0.00397326718722296364):0.04418686662609763033):0.08009020363744218107,((BRADI02810:0.05979159213351873531,(TRIUA27388:0.13259298260816299031,(HORVD25257:0.01307217327549589983,AEGTA11651:0.05044489330556417572):0.01995233262441147709):0.03516129744274204549):0.05459216916254347463,(SETIT07215:0.04708381360637253765,SORBI16057:0.03780571253328020992):0.09250629558585042600):0.04857731608863719713):0.18601242575533336043):0.13081987323926835831,((MUSAM28387:0.00000100000050002909,MUSAC31490:0.00000100000050002909):0.13809275391935840749,(MUSAM06163:0.00000100000050002909,MUSAC02514:0.00000100000050002909):0.13443733978458655143):0.11240886943371462825):0.05296458176641562210):0.11191148042352855319):0.07792882604348769227,(MAIZE50869:0.20161901399966816739,(ORYSJ13792:0.00344556629476266627,ORYGL12141:0.00000100000050002909):0.40526528156755575738):0.34137254689259671769):0.06006403217219220131,((((POPTR35027:0.05393182831209996503,POPTR04952:0.05521659134831382459):0.02201585503116876286,(MANES19609:0.02596841235999546374,MANES10538:0.09181495744289040750):0.04296697850138769814):0.02764613685628336884,((MEDTR23007:0.14861117512699956178,(SOYBN29338:0.02458418719769522864,((SOYBN13736:0.01509013228527967231,SOYBN43775:0.02145355348494341549):0.16640095219656991787,SOYBN36549:0.01028863285353836740):0.01839206753814766684):0.01622596695858928920):0.03660556882643294790,((SOLTU39089:0.00117096551526091417,SOLLC28021:0.01187029290712567423):0.22287372997554585896,(ARATH07366:0.00875683690028302222,ARALY00833:0.00000100000050002909):0.16827048768696287184):0.07244843191799404947):0.03534464371453985287):0.02000463252403119480,VITVI17808:0.08998241193148946715):0.10986619059172396395):0.13405078768268269274):0.12311481700378895665):0.98882183914734911312,(((((((WHEAT60967:0.00000100000050002909,AEGTA03722:0.03332352249727857374):0.08507743088329765280,(AEGTA03721:0.03120567159614403077,(WHEAT14055:0.00632227175877901008,TRIUA29195:0.00000100000050002909):0.04673495602798510146):0.16329576388942035337):0.15531729757554188498,(BRADI07070:0.37026291951256035118,((HORVD20994:0.12811193893398598043,(WHEAT12350:0.01969559231421251846,(WHEAT77085:0.01470223385584298013,AEGTA19716:0.06316851070386607370):0.00968132322715203539):0.05119939814746100881):0.04084095514757011408,(WHEAT24898:0.05016574049112149103,AEGTA12347:0.01995581980971198113):0.02081975473411607977):0.16869837479957952575):0.05619664667980716483):0.24831642305719148212,((SETIT14425:0.47764687327215699097,((MAIZE18162:0.09553598393514040055,SORBI25193:0.11352614105783159770):0.21191848898802437273,((SORBI35181:0.05292730142081283201,MAIZE18161:0.17432028069242672119):0.06032098126313615444,SETIT13838:0.11164201632808351539):0.11456166237898118831):0.07622478167291260598):0.14940224679826055731,((BRADI04294:0.32595916819305448264,((AEGTA18745:0.10634535983946430404,(AEGTA31075:0.04459594651531112453,(WHEAT11096:0.00000100000050002909,(WHEAT08529:0.00635692172798464974,AEGTA31072:0.04144121980447820069):0.04159188193122757837):0.04412101762037935054):0.02698704179012119744):0.16284134573657008116,(AEGTA18744:0.01195316090528342548,(TRIUA11031:0.00925297322801557805,WHEAT15146:0.01060034719047915977):0.01727983893001515739):0.13273228717604926286):0.12103778798370855296):0.09464116324714079431,(ORYBR22877:0.13523352767443408418,(ORYGL21734:0.00000100000050002909,ORYSJ43339:0.01255436389797181564):0.13884677756965096984):0.29626227185512138407):0.06436276448759868651):0.02413499568510924648):0.60968947337191503610,(((ARALY23414:0.02066749278201470558,ARATH11243:0.01399957689288938364):0.09425546221828634552,ARALY00651:0.10735033664226613370):0.40388505237973570949,((ARALY03956:0.24012169013550627161,ARALY21124:0.19633072357738970415):0.06427522303025316741,((ARATH01314:0.06647529874620333734,(ARALY03958:0.06595260696372405584,ARALY03957:0.00000100000050002909):0.06649198091038591163):0.21274165779273099264,(ARATH01313:0.06513841882889097323,ARALY03960:0.05578436753233904921):0.22023463130689255318):0.03504678664890692463):0.17391961257736873736):0.24505110983118211232):0.09555851836326578752,((MANES21561:0.67512690969040023425,((POPTR30883:0.26030484457406699583,MANES22834:0.29598774812820566327):0.07412064484319866309,(SOYBN27365:0.48410414600105500238,(VITVI08941:0.26078928529473799358,(SOLTU29411:0.51721146347862034798,SOLLC22543:0.68707100045555735690):0.06957081549371632589):0.03225955561093173107):0.07734559707383820149):0.05534749079235385533):0.08271228282775787422,(SOYBN53276:0.69961742713612240507,((MEDTR16163:0.30630307718879640211,MEDTR16156:0.31924879265458311339):0.66390538027899415052,(VITVI18229:0.54639937413730021998,SOLLC07830:0.94719796632216579635):0.16723691155378409001):0.10848114991407539764):0.14393105388568841474):0.08673670159109429789):0.18155032659242803517,(SOLTU32649:0.24228719342220669808,SOLLC03543:0.12833616651811430298):0.93228257253300017560):0.24359505812097589916):0.12373506733650779799):0.11058357764889827080):0.07068998206559712338,(PHYPA30212:0.81857794292793251145,PHYPA09708:0.39080088203220170184):0.52297803939947840046):0.03632494674845065247):0.09068896307712170923):0.07263521594265974490,(SELML17821:0.01973385479375744031,SELML01125:0.00874005985571055244):0.53914442669752848936):0.08591529231707925596):0.41641658843242934651,((MUSAM19491:0.00000100000050002909,MUSAC12503:0.00000100000050002909):0.32605151158697270874,(VITVI01671:0.23325592850007700885,(SOLLC19172:0.03908680398679684892,SOLTU20866:0.02667117357700208441):0.50668488201429251472):0.10899142519943895435):0.33614237059822776876):0.17589028901001635408,(((MUSAM33416:0.00000100000050002909,MUSAC26277:0.00000100000050002909):0.05308649677679021933,(MUSAM22433:0.00000100000050002909,MUSAC28290:0.00000100000050002909):0.10865916116839537120):0.11562652940171699867,(((ORYSI23756:0.01256242933992473415,ORYSI23267:0.00560850022995434787):0.07517652287960574498,(BRADI26138:0.18376865474644263343,((TRIUA31870:0.12653508889230044576,WHEAT63736:0.00000100000050002909):0.00345742178483259173,((HORVD28654:0.05426658531501288296,(WHEAT11407:0.00000100000050002909,AEGTA04531:0.05734732027821431988):0.00000100000050002909):0.01474230293715694806,WHEAT86670:0.01156767049293624082):0.00343543531358274801):0.02583949515618799361):0.04852184646475490165):0.03136079249069338715,(SETIT25858:0.07987162960856626637,(MAIZE47396:0.28369596669371405229,(SORBI01504:0.00000100000050002909,SORBI01242:0.00000100000050002909):0.05827541633595767490):0.02898787783404207022):0.08067073843757789631):0.36136655251411919920):0.23107011329715593240):0.19459168503719689869):0.04647901588325549505):0.33295044965727599307,ARALY22584:0.01839604238464330119,ARATH00549:0.01550155215353314284):0.0;\",\n \"stack\" : {\"children\": [{\"children\": [{\"children\": [{\"children\": [{\"id\": \"HALHT\", \"last_updated\": \"Aug 20, 2012\", \"name\": \"Haloarcula hispanica (strain ATCC 33960 / DSM 4426 / JCM 8911 / NBRC 102182 / NCIMB 2187 / VKM B-1755)\", \"nr_proteins\": 3855, \"release\": \"18-OCT-2011 (Rel. 110, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 634497}, {\"id\": \"HALMA\", \"last_updated\": \"Mar 25, 2014\", \"name\": \"Haloarcula marismortui (strain ATCC 43049 / DSM 3752 / JCM 8966 / VKM B-1809)\", \"nr_proteins\": 4231, \"release\": \"02-FEB-2014 (Rel. 119, Last updated, Version 9)\", \"source\": \"EBI\", \"taxid\": 272569}], \"name\": \"Haloarcula\", \"taxid\": 2237, \"nr_hogs\": 4107, \"evolutionaryEvents\": {\"gained\": 178, \"retained\": 3532, \"duplicated\": 397, \"lost\": 1508, \"duplications\": 166}}, {\"id\": \"HALMD\", \"last_updated\": \"Nov 23, 2009\", \"name\": \"Halomicrobium mukohataei (strain ATCC 700874 / DSM 12286 / JCM 9738 / NCIMB 13541)\", \"nr_proteins\": 3168, \"release\": \"03-NOV-2009 (Rel. 113, Last updated, Version 1)\", \"source\": \"Genome Reviews\", \"taxid\": 485914}, {\"id\": \"HALUD\", \"last_updated\": \"Nov 23, 2009\", \"name\": \"Halorhabdus utahensis (strain DSM 12940 / JCM 11049 / AX-2)\", \"nr_proteins\": 2998, \"release\": \"03-NOV-2009 (Rel. 113, Last updated, Version 1)\", \"source\": \"Genome Reviews\", \"taxid\": 519442}, {\"children\": [{\"id\": \"NATM8\", \"last_updated\": \"Oct 27, 2014\", \"name\": \"Natronomonas moolapensis (strain DSM 18674 / JCM 14361 / 8.8.11)\", \"nr_proteins\": 2852, \"release\": \"27-FEB-2014 (Rel. 119, Last updated, Version 4)\", \"source\": \"EBI\", \"taxid\": 268739}, {\"id\": \"NATPD\", \"last_updated\": \"Mar 25, 2014\", \"name\": \"Natronomonas pharaonis (strain ATCC 35678 / DSM 2160 / CIP 103997 / NBRC 14720 / NCIMB 2260 / Gabara)\", \"nr_proteins\": 2824, \"release\": \"07-MAR-2014 (Rel. 120, Last updated, Version 14)\", \"source\": \"EBI\", \"taxid\": 348780}], \"name\": \"Natronomonas\", \"taxid\": 63743, \"nr_hogs\": 3156, \"evolutionaryEvents\": {\"gained\": 93, \"lost\": 2294, \"duplicated\": 254, \"retained\": 2809, \"duplications\": 103}}], \"name\": \"Haloarculaceae\", \"taxid\": 1963268, \"nr_hogs\": 5206, \"evolutionaryEvents\": {\"gained\": 273, \"retained\": 4584, \"duplicated\": 349, \"lost\": 1040, \"duplications\": 163}}, {\"children\": [{\"id\": \"HALJB\", \"last_updated\": \"Dec 23, 2010\", \"name\": \"Halalkalicoccus jeotgali (strain DSM 18796 / CECT 7217 / JCM 14584 / KCTC 4019 / B3)\", \"nr_proteins\": 3779, \"release\": \"30-NOV-2010 (Rel. 127, Last updated, Version 2)\", \"source\": \"Genome Reviews\", \"taxid\": 795797}, {\"children\": [{\"id\": \"HALS3\", \"last_updated\": \"May 8, 2008\", \"name\": \"Halobacterium salinarum (strain ATCC 29341 / DSM 671 / R1)\", \"nr_proteins\": 2742, \"release\": \"29-APR-2008 (Rel. 90, Last updated, Version 1)\", \"source\": \"Genome Reviews\", \"taxid\": 478009}, {\"id\": \"HALSA\", \"last_updated\": \"Mar 25, 2014\", \"name\": \"Halobacterium salinarum (strain ATCC 700922 / JCM 11081 / NRC-1)\", \"nr_proteins\": 2418, \"release\": \"03-FEB-2014 (Rel. 119, Last updated, Version 7)\", \"source\": \"EBI\", \"taxid\": 64091}], \"name\": \"Halobacterium salinarum\", \"taxid\": 2242, \"nr_hogs\": 2540, \"evolutionaryEvents\": {\"gained\": 201, \"retained\": 2202, \"duplicated\": 137, \"lost\": 1437, \"duplications\": 62}}], \"name\": \"Halobacteriaceae\", \"taxid\": 2236, \"nr_hogs\": 3701, \"evolutionaryEvents\": {\"gained\": 13, \"retained\": 3605, \"duplicated\": 83, \"lost\": 2142, \"duplications\": 40}}], \"name\": \"Halobacteriales\", \"taxid\": 2235, \"nr_hogs\": 5787, \"evolutionaryEvents\": {\"gained\": 118, \"retained\": 5120, \"lost\": 1677, \"duplicated\": 549, \"duplications\": 228}}, {\"children\": [{\"children\": [{\"children\": [{\"id\": \"HALMT\", \"last_updated\": \"Nov 30, 2012\", \"name\": \"Haloferax mediterranei (strain ATCC 33500 / DSM 1411 / JCM 8866 / NBRC 14739 / NCIMB 2177 / R-4)\", \"nr_proteins\": 3861, \"release\": \"02-AUG-2012 (Rel. 113, Last updated, Version 3)\", \"source\": \"EBI\", \"taxid\": 523841}, {\"id\": \"HALVD\", \"last_updated\": \"Jul 20, 2010\", \"name\": \"Haloferax volcanii (strain ATCC 29605 / DSM 3757 / JCM 8879 / NBRC 14742 / NCIMB 2012 / VKM B-1768 / DS2)\", \"nr_proteins\": 3986, \"release\": \"13-JUL-2010 (Rel. 123, Last updated, Version 2)\", \"source\": \"Genome Reviews\", \"taxid\": 309800}], \"name\": \"Haloferax\", \"taxid\": 2251, \"nr_hogs\": 4166, \"evolutionaryEvents\": {\"gained\": 107, \"retained\": 3786, \"lost\": 1192, \"duplicated\": 273, \"duplications\": 108}}, {\"id\": \"HALBP\", \"last_updated\": \"Aug 20, 2012\", \"name\": \"Halogeometricum borinquense (strain ATCC 700274 / DSM 11551 / JCM 10706 / PR3)\", \"nr_proteins\": 3894, \"release\": \"24-NOV-2010 (Rel. 106, Last updated, Version 1)\", \"source\": \"EBI\", \"taxid\": 469382}, {\"children\": [{\"id\": \"HALWD\", \"last_updated\": \"Sep 26, 2006\", \"name\": \"Haloquadratum walsbyi (strain DSM 16790 / HBSQ001)\", \"nr_proteins\": 2819, \"release\": \"24-JUL-2006 (Rel. 88, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 362976}, {\"id\": \"HALWC\", \"last_updated\": \"Apr 2, 2012\", \"name\": \"Haloquadratum walsbyi (strain DSM 16854 / JCM 12705 / C23)\", \"nr_proteins\": 2974, \"release\": \"15-MAR-2012 (Rel. 112, Last updated, Version 4)\", \"source\": \"EBI\", \"taxid\": 768065}], \"name\": \"Haloquadratum walsbyi\", \"taxid\": 293091, \"nr_hogs\": 2819, \"evolutionaryEvents\": {\"gained\": 209, \"retained\": 2443, \"lost\": 2564, \"duplicated\": 167, \"duplications\": 79}}], \"name\": \"Haloferacaceae\", \"taxid\": 1644056, \"nr_hogs\": 5086, \"evolutionaryEvents\": {\"gained\": 222, \"duplicated\": 385, \"retained\": 4479, \"lost\": 571, \"duplications\": 174}}, {\"id\": \"HALLT\", \"last_updated\": \"Jun 22, 2009\", \"name\": \"Halorubrum lacusprofundi (strain ATCC 49239 / DSM 5036 / JCM 8891 / ACAM 34)\", \"nr_proteins\": 3493, \"release\": \"16-JUN-2009 (Rel. 107, Last updated, Version 3)\", \"source\": \"Genome Reviews\", \"taxid\": 416348}], \"name\": \"Haloferacales\", \"taxid\": 1644055, \"nr_hogs\": 5224, \"evolutionaryEvents\": {\"gained\": 94, \"retained\": 4671, \"lost\": 2155, \"duplicated\": 459, \"duplications\": 199}}, {\"children\": [{\"id\": \"HALXS\", \"last_updated\": \"Aug 20, 2012\", \"name\": \"Halopiger xanaduensis (strain DSM 18323 / JCM 14033 / SH-6)\", \"nr_proteins\": 4221, \"release\": \"23-NOV-2011 (Rel. 110, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 797210}, {\"id\": \"HALTV\", \"last_updated\": \"Jun 11, 2010\", \"name\": \"Haloterrigena turkmenica (strain ATCC 51198 / DSM 5511 / NCIMB 13204 / VKM B-1734)\", \"nr_proteins\": 3739, \"release\": \"25-MAY-2010 (Rel. 121, Last updated, Version 2)\", \"source\": \"Genome Reviews\", \"taxid\": 543526}, {\"id\": \"HALRX\", \"last_updated\": \"Dec 18, 2013\", \"name\": \"Halovivax ruber (strain DSM 18193 / JCM 13892 / XH-70)\", \"nr_proteins\": 3099, \"release\": \"18-JUL-2013 (Rel. 117, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 797302}, {\"children\": [{\"id\": \"NATA1\", \"last_updated\": \"Aug 10, 2017\", \"name\": \"Natrialba asiatica (strain ATCC 700177 / DSM 12278 / JCM 9576 / FERM P-10747 / NBRC 102637 / 172P1)\", \"nr_proteins\": 4176, \"release\": \"Ensembl Bacteria 36; ASM33755v1\", \"source\": \"EnsemblGenomes\", \"taxid\": 29540}, {\"id\": \"NATMM\", \"last_updated\": \"Jul 20, 2010\", \"name\": \"Natrialba magadii (strain ATCC 43099 / DSM 3394 / CIP 104546 / JCM 8861/ NBRC 102185 / NCIMB 2190 / MS3)\", \"nr_proteins\": 3558, \"release\": \"13-JUL-2010 (Rel. 123, Last updated, Version 2)\", \"source\": \"Genome Reviews\", \"taxid\": 547559}], \"name\": \"Natrialba\", \"taxid\": 63742, \"nr_hogs\": 4283, \"evolutionaryEvents\": {\"gained\": 51, \"lost\": 2216, \"retained\": 3820, \"duplicated\": 412, \"duplications\": 148}}, {\"children\": [{\"id\": \"NATP1\", \"last_updated\": \"Oct 27, 2014\", \"name\": \"Natrinema pellirubrum (strain DSM 15624 / CIP 106293 / JCM 10476 / NCIMB 786 / 157)\", \"nr_proteins\": 4138, \"release\": \"23-JUL-2013 (Rel. 117, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 797303}, {\"id\": \"NATSJ\", \"last_updated\": \"Oct 27, 2014\", \"name\": \"Natrinema sp. (strain J7-2)\", \"nr_proteins\": 4296, \"release\": \"15-MAY-2014 (Rel. 120, Last updated, Version 6)\", \"source\": \"EBI\", \"taxid\": 406552}], \"name\": \"Natrinema\", \"taxid\": 88723, \"nr_hogs\": 4304, \"evolutionaryEvents\": {\"gained\": 52, \"retained\": 3748, \"lost\": 2241, \"duplicated\": 504, \"duplications\": 195}}, {\"id\": \"NATGS\", \"last_updated\": \"Oct 27, 2014\", \"name\": \"Natronobacterium gregoryi (strain ATCC 43098 / DSM 3393 / CCM 3738 / CIP 104747 / JCM 8860 / NBRC 102187 / NCIMB 2189 / SP2)\", \"nr_proteins\": 3624, \"release\": \"18-JUL-2013 (Rel. 117, Last updated, Version 2)\", \"source\": \"EBI\", \"taxid\": 797304}], \"name\": \"Natrialbaceae\", \"taxid\": 1644061, \"nr_hogs\": 6184, \"evolutionaryEvents\": {\"gained\": 842, \"duplicated\": 729, \"retained\": 4613, \"lost\": 2106, \"duplications\": 306}}], \"name\": \"Halobacteria\", \"taxid\": 183963, \"nr_hogs\": 7025, \"evolutionaryEvents\": {\"gained\": 2357, \"lost\": 6118, \"retained\": 2767, \"duplicated\": 1901, \"duplications\": 605}},\n \"unrooted1\" : \"(((ERPZAN_R00185:0.0,VIRALT_R07861:0.0):0.001945655,(CALWIL_R07193:0.004232679,(((ORISOL_R03544:0.009877258,(((GRAPIC_R12577:0.014982099,(CHAFRE_R02806:0.015160571,PICGYM_R06166:0.005771333)0.924:0.008896484)0.000:0.000000005,((((((PRUFUL_R09054:0.003886375,PRUHIM_R10842:0.001948296)0.982:0.011827022,(((((ERIRUB_R02188:0.007802411,(OENOEN_R08976:0.001941816,(FICALB_R00799:0.001939725,SAXMAU_R01795:0.001939665)0.000:0.000000005)0.892:0.003892813)0.777:0.001950911,CATFUS_R11593:0.009811424)0.763:0.001934869,((LEUROT_R14346:0.004408857,STUVUL_R07134:0.001971242)0.939:0.005906419,(RHAINO_R11059:0.005887267,CINMEX_R12987:0.003886547)0.000:0.000000006)0.865:0.001937309)0.000:0.000000005,CERCOR_R06284:0.001940730)0.000:0.000000005,(COPSEC_R04846:0.004218174,TOXRED_R00790:0.009898142)0.774:0.001943683)0.940:0.003904001)0.756:0.000000005,((LEPASP_R01517:0.003890030,((CHLCYA_R06957:0.001955392,CHLHAR_R11249:0.001953557)0.964:0.008708646,(ELAFOR_R06222:0.067874933,PROCAF_R03956:0.003610596)0.257:0.005031912)0.660:0.001127634)0.767:0.001921350,(BOMGAR_R08262:0.013821927,DICEXI_R09180:0.005866937)0.780:0.001969198)0.201:0.001945712)0.870:0.003873477,((VIDCHA_R00557:0.000000005,VIDMAC_R01666:0.000000005)0.964:0.005889060,(REGSAT_R03545:0.013716864,((CERBRA_R02815:0.001950138,CERFAM_R07219:0.000000005)0.961:0.007862625,(POLCAE_R08689:0.009809226,THRLUD_R00775:0.005859079)0.869:0.003942256)0.709:0.001931719)0.227:0.000000005)0.800:0.001950173)0.000:0.000000005,((UROPYL_R08260:0.001947195,((LONSTR_R08944:0.001958986,TAEGUT_R17040:0.001942470)0.950:0.005924130,(PEUTAE_R12381:0.005854865,(GEOFOR_R09593:0.000000005,SPOHYP_R10874:0.009809954)0.908:0.003914454)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,(PASAMO_R03813:0.005069014,((((HYPCIN_R05861:0.003896135,(CARCAR_R07597:0.003905784,RHOROS_R03907:0.001943968)0.000:0.000000005)0.842:0.001943562,(AGEPHO_R12112:0.0,QUIMEX_R06835:0.0):0.000000005)0.000:0.000000005,(EMBFUC_R07456:0.001943300,(PASDOM_R01841:0.001943080,((SERCAN_R05569:0.001945109,((LOXCUR_R01247:0.0,LOXLEU_R10869:0.0):0.000000005,(CHLVIR_R02303:0.000000005,HEMWIL_R12881:0.010111980)0.886:0.003957626)0.000:0.000000005)0.970:0.005863006,((MOTALB_R00263:0.000000005,(JUNHYE_R02029:0.000000006,((SPIPAS_R02115:0.006527089,ZONALB_R11673:0.079247082)0.760:0.003205270,MELMEL_R06212:0.001942881)0.000:0.000000005)0.955:0.003895192)0.844:0.001945482,MOLATE_R04767:0.001955739)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,(NESACU_R06611:0.009881748,(SETCOR_R10331:0.003907723,SETKIR_R09068:0.000000005)0.775:0.001967787)0.793:0.001932107)0.018:0.001945014)0.000:0.000000012)0.867:0.001947156)0.759:0.001960110,(((((SYLVIR_R10709:0.008511537,(RHASIB_R03403:0.004219395,(DONATR_R04824:0.002110299,(((SITEUR_R04209:0.002153741,TICMUR_R00244:0.014627474)0.873:0.016577296,(IRECYA_R12278:0.008443130,((CALORN_R07598:0.004102220,PHEMEL_R04365:0.018435972)0.761:0.006405228,PLONIG_R01869:0.002094273)0.769:0.006391425)0.756:0.005458630)0.912:0.044065580,(ACRARU_R14141:0.007219493,HIPICT_R09009:0.006178173)0.856:0.005126254)0.781:0.015838771)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,PHYTRO_R13017:0.002104908)1.000:0.000000005,(HYLPRA_R13303:0.015927337,NICCHL_R07497:0.003891376)0.000:0.000000005)0.858:0.001940187,((((((AEGCAU_R08906:0.011140782,CETCET_R02558:0.005903608)0.255:0.003415620,HORVUL_R04273:0.009812994)0.626:0.001680505,(ERYMCC_R11442:0.006810883,HIRRUS_R01812:0.006327241)0.735:0.000000006)0.782:0.002116626,(((BRAATR_R01259:0.004742602,PYCJOC_R06715:0.013167726)0.743:0.005550059,((CISJUN_R13494:0.013681315,(STEDEN_R06180:0.002112541,(ZOSHYP_R01814:0.0,ZOSLAT_R06289:0.0):0.004203446)0.754:0.002500532)0.817:0.005615809,((SINWEB_R08836:0.007864975,(SYLATR_R08297:0.006024005,SYLBOR_R04162:0.002682030)0.773:0.001875775)0.978:0.009763809,(PORRUF_R06759:0.006334252,(ILLCLE_R09312:0.004213600,LEILUT_R01534:0.004230040)0.759:0.002109725)0.000:0.000000005)0.274:0.000000005)0.930:0.003882969)0.731:0.000000005,(ANTMIN_R08656:0.005878668,(POEATR_R08762:0.001953933,(PARMAJ_R09814:0.001941467,PSEHUM_R01296:0.000000005)0.779:0.001939953)0.867:0.003890279)0.896:0.003954024)0.802:0.001957509)0.816:0.001941483,PANBIA_R07107:0.011763068)0.000:0.000000005,LOCOCH_R10739:0.009831663)0.749:0.000000005)0.628:0.001953038,((DRYBRU_R10064:0.013876059,MELVER_R13861:0.011929907)0.872:0.005849014,PHANIT_R00172:0.015775111)0.227:0.000000005)0.774:0.001939535)0.886:0.003912118)0.780:0.001969310,((DASBRO_R00594:0.009842139,MALELE_R03053:0.032191473)0.771:0.002069583,ORTSPA_R03385:0.010726540)0.759:0.001967749)0.112:0.001928318)0.754:0.000000005,POSRUF_R10160:0.007851715)0.000:0.000000005,PARPUN_R00466:0.006342347)0.845:0.001945681)0.000:0.000000005)0.473:0.000000005,EDOCOE_R05131:0.020325025,((((((CLIRUF_R03306:0.017236321,PTIVIO_R06384:0.010849082)0.898:0.006313265,(PACPHI_R05793:0.006582303,MYIHEB_R12764:0.015075462)0.736:0.002109579)0.767:0.002175077,((CORCOR_R12340:0.002107315,(APHCOE_R06763:0.001942404,(CORBRA_R01172:0.002099890,CORMON_R14880:0.002098940)0.000:0.000000005)0.771:0.000000006)0.851:0.005928796,(LANLUD_R02205:0.001941207,(STRCIN_R09449:0.004211299,(DICMEG_R07997:0.001948897,((IFRKOW_R03971:0.002424186,PARRAG_R04945:0.010638734)0.841:0.004001123,(CHAPAP_R05228:0.004221857,RHIDAH_R10872:0.001941595)0.770:0.001956199)0.794:0.001941109)0.796:0.001945185)0.000:0.000000005)0.784:0.001886571)0.889:0.003979150)0.841:0.000000005,((ORIORI_R12278:0.000000005,((ALERUF_R04641:0.001959638,OREARF_R11822:0.010656383)0.537:0.003915942,EULNIG_R10110:0.004227146)0.710:0.000000005)0.000:0.000000005,(((((DRYGAM_R05465:0.006536314,MACNIG_R10946:0.006033528)0.776:0.001812789,(GYMTIB_R11425:0.001942894,RHALEU_R08508:0.002105459)0.805:0.001951199)0.000:0.000000005,(PTEMEL_R10767:0.003961168,(FALFRO_R00442:0.004146048,PTILEU_R13363:0.012542161)0.454:0.001966717)0.770:0.002187623)0.000:0.000000005,DYACAS_R00451:0.007833519)0.837:0.001946443,(DAPCHR_R12269:0.011788821,MOHOCH_R00568:0.001957007)0.780:0.001937836)0.000:0.000000005)0.000:0.000000005)0.827:0.001948719,(((ACACHL_R00917:0.024705597,(((((((((BUCCAP_R06050:0.048099589,GALDEA_R14061:0.014658768)0.895:0.009268322,(MERNUB_R06122:0.024383502,((BRALEP_R03310:0.020666256,EURGUL_R08859:0.016515355)0.917:0.008025992,((CHLAEN_R07872:0.016712438,HALSEN_R12568:0.011577606)0.945:0.014651346,(BARMAR_R14004:0.018586348,TODMEX_R01766:0.025072377)0.765:0.003889539)0.764:0.003196345)0.750:0.000000005)0.925:0.006241677)0.887:0.006003563,(((GEOCAL_R04871:0.018333028,((CUCCAN_R12383:0.013003554,(CEUAER_R09623:0.009913529,PIACAY_R02410:0.008057454)0.748:0.001921432)0.961:0.010114104,(CROSUL_R03384:0.015898083,(CENBEN_R01764:0.001965814,CENUNI_R02025:0.000000005)0.996:0.020375886)0.453:0.003834681)0.703:0.000000005)0.981:0.013725180,(APAVIT_R10929:0.017953672,TROMEL_R09632:0.004188259)0.993:0.020110137)0.721:0.002294055,((BUCABY_R08200:0.012691621,BUCRHI_R04945:0.030420444)0.988:0.021974003,(CARCRI_R07732:0.004874465,CHUBUR_R13999:0.005407103)0.991:0.018131937)0.721:0.001947862)0.615:0.001944197)0.856:0.000000005,((MESCAY_R12170:0.014036275,NIPNIP_R07891:0.015312379)0.955:0.009992164,(COCCOC_R01070:0.005985097,EGRGAR_R10096:0.005917623)0.937:0.007802641)0.759:0.002069067)0.000:0.000000005,((((AEGBEN_R04767:0.053844522,(CHAPEL_R10771:0.013274451,HEMCOM_R11712:0.011705892)0.879:0.006682306)0.775:0.003228346,(CALANN_R09088:0.029203089,OREMEL_R09863:0.000000006)1.000:0.046019319)0.946:0.010225750,(NYCBRA_R03609:0.004303275,NYCGRA_R12802:0.015926537)0.994:0.025477451)0.691:0.007556244,(PSOCRE_R10483:0.011830117,(((BURBIS_R07694:0.011963395,((EURHEL_R12117:0.011866340,RHYJUB_R07657:0.011384429)0.790:0.005874564,((OPIHOA_R12042:0.021660699,(ARDKOR_R02007:0.004225482,(CHLMAC_R04828:0.018974440,LOPRUF_R03273:0.002069621)0.691:0.001573230)0.999:0.024492715)0.444:0.002710802,(STECAR_R00653:0.017457247,((EOLROS_R10991:0.007902317,PROATE_R04835:0.000000005)0.772:0.001976536,(AMAGUI_R07007:0.005964334,(AGAROS_R11305:0.008010840,MELUND_R04324:0.003969349)0.749:0.001941969)0.871:0.003980104)0.963:0.010985595)0.670:0.003301845)0.731:0.003470499)0.864:0.005602554)0.838:0.000000005,((PHALEP_R05929:0.023449902,PODSTR_R09766:0.005920522)0.260:0.003886799,(((((((PELURI_R10536:0.007631088,((ATLROG_R04223:0.003629742,ZAPATR_R12447:0.002802803)0.965:0.014223436,HELFUL_R14151:0.014160130)0.733:0.006781844)0.850:0.005259254,(APTFOR_R01110:0.000000005,PYGADE_R06057:0.004255750)0.904:0.004263949)0.773:0.002111086,(HYDTET_R14741:0.005465479,THACHL_R09870:0.006403968)0.848:0.000000005)0.000:0.000000005,((FREGRA_R07112:0.000000006,OCEOCE_R06906:0.001962902)0.964:0.005894749,(((AQUCHR_R00774:0.000000005,SPITYR_R00670:0.008031596)0.855:0.001959914,(CIRPEC_R00403:0.007871094,(HALALB_R01072:0.000000005,HALLEU_R12216:0.000000006)0.845:0.001961457)0.233:0.000000005)0.550:0.005926234,TYTALB_R00623:0.023928630)0.585:0.001945996)0.718:0.000000005)0.000:0.000000005,(((ARAGUA_R06621:0.007873242,(BALREG_R06527:0.008586065,GRUAME_R00169:0.003924619)0.000:0.000000005)0.920:0.003922030,(GAVSTE_R07443:0.006460401,(NESNOT_R10361:0.074557540,PHORUB_R01005:0.012321917)0.734:0.009685667)1.000:0.000000005)0.744:0.000000005,(FULGLA_R09869:0.006405020,CALBOR_R06055:0.003957979)0.850:0.005924294)0.848:0.001955162)0.845:0.001959458,(SCOUMB_R02017:0.018128567,(BALREX_R01585:0.004883042,PELCRI_R05111:0.021816487)0.900:0.007031742)0.853:0.003884320)0.000:0.000000005,(((PANHAL_R04800:0.000000005,(PODCRI_R09770:0.006947596,PODPOD_R03183:0.000000005)1.000:0.018064125)0.844:0.001956037,((CICMAG_R07326:0.003942241,FREMAG_R08115:0.011945731)0.788:0.001955833,SAGSER_R01396:0.008656616)0.770:0.001963524)0.000:0.000000005,(CICNIG_R12996:0.000000005,STROCC_R10326:0.001959681)0.995:0.011888892)0.000:0.000000005)0.830:0.001954508)0.741:0.000000005)0.817:0.001955203,GLABRA_R03687:0.012276589)0.000:0.000000005)0.745:0.000000005)0.831:0.001955222)0.749:0.000000005,(((FALCHE_R13279:0.0,FALPER_R09370:0.0):0.002096194,HERCAC_R07796:0.005940659)0.949:0.007945272,(SULDAC_R00447:0.011544381,((ANHANH_R06269:0.001916157,ANHRUF_R08963:0.002004182)0.949:0.007658136,(NANHAR_R02940:0.001951914,((NANAUR_R02327:0.0,NANBRA_R14303:0.0):0.000000005,(PHACAR_R05990:0.000000005,URIPEL_R08866:0.007345051)0.854:0.002442185)0.000:0.000000005)0.759:0.002238547)0.726:0.001981811)0.948:0.008239236)0.822:0.003895612)0.778:0.001988515,(((CHIMIN_R06220:0.0,PLUSOC_R06636:0.0):0.007867234,((TRILEU_R05014:0.006030801,(PSIHAE_R07704:0.003965813,(EUBBOU_R01201:0.009963312,(RAMSUL_R04838:0.003868894,SEMFRA_R03551:0.007881824)0.760:0.002206950)0.753:0.001983388)0.872:0.003997224)0.848:0.004606937,(INDMAC_R09403:0.034442035,PICPUB_R10180:0.026879379)0.851:0.005751906)0.994:0.024089597)0.834:0.003928465,((CHOACU_R04768:0.010195714,(ANTCAR_R10245:0.003964997,NYCLEU_R08557:0.006396158)0.636:0.000000005)0.978:0.013889478,(((STRCAM_R07813:0.030444894,((RHEAME_R12943:0.001761700,RHEPEN_R09156:0.002282360)0.999:0.031968904,((APTOWE_R09711:0.000000006,((APTAUS_R03341:0.000000005,APTROW_R05016:0.000000005)0.933:0.001954241,APTHAA_R06347:0.000000005)0.736:0.000000005)0.989:0.016047071,((((CRYSOU_R04748:0.004401730,(CRYCIN_R13049:0.002022351,CRYUND_R08482:0.005484799)0.735:0.002009287)0.854:0.006076835,((NOTPEN_R05090:0.000000005,(NOTPER_R02537:0.002017739,NOTORN_R05324:0.005888150)0.000:0.000000005)0.928:0.003958971,EUDELE_R07691:0.004037097)0.128:0.000000006)0.494:0.003918691,((NOTJUL_R01007:0.002185606,NOTNIG_R10629:0.006090779)0.942:0.008150790,TINGUT_R08793:0.006839816)0.670:0.000000006)0.976:0.012653578,(CASCAS_R05625:0.000000005,DRONOV_R04869:0.002271456)0.986:0.016619223)0.658:0.001466720)0.083:0.002536488)0.549:0.009503195)0.991:0.022252835,((CHATOR_R12931:0.012396042,(ANSSEM_R13713:0.012152924,(ANSCYG_R03736:0.006645406,(CAIMOS_R02508:0.000000005,((ANAPLA_R12734:0.0,ANAZON_R00560:0.0):0.001978503,ASASCU_R06730:0.006684948)0.901:0.006641172)0.523:0.000000005)0.948:0.013249707)0.745:0.001969604)0.854:0.003872952,((PENPIL_R11901:0.026110330,((NUMMEL_R03848:0.007820320,(ODOGUJ_R00268:0.000000005,(CALSQU_R12923:0.000000005,COLVIR_R01565:0.002268638)0.948:0.005865147)0.947:0.005870785)0.000:0.000000005,((PHACOL_R03848:0.003920796,(GALGAL_R00386:0.010015603,COTJAP_R09409:0.010011329)0.858:0.003728241)0.768:0.001943935,(MELGAL_R09321:0.001946936,TYMCUP_R02157:0.001949386)0.000:0.000000006)0.988:0.012004391)0.794:0.003175156)0.464:0.002865671,ALELAT_R04518:0.038131137)0.981:0.019648935)0.990:0.016480666)0.958:0.012288887,((PTEGUT_R01267:0.003917595,(PTEBUR_R05087:0.009879723,SYRPAR_R07515:0.007890174)0.770:0.001941318)0.991:0.016988764,(CALNIC_R10107:0.001865900,(ALOBEC_R10806:0.003950232,(COLPIC_R09688:0.005243482,(COLLIV_R04419:0.003499375,PATFAS_R09846:0.004688564)0.901:0.006017680)0.770:0.002666556)0.864:0.004130847)0.999:0.027294977)0.621:0.003661900)0.571:0.003802857)0.732:0.002497778)0.870:0.004231189)0.708:0.001379640,((CHAVOC_R09490:0.004077765,(CHAALE_R15308:0.003984947,(HIMHIM_R01743:0.003951351,IBISTR_R00388:0.001973630)0.776:0.001979280)0.761:0.001856136)0.908:0.005892061,((MESUNI_R06242:0.043175173,TURVEL_R11671:0.048577704)0.468:0.009194422,(((COLSTR_R09987:0.007308627,UROIND_R00112:0.006610823)0.987:0.019623031,(RHICYA_R12088:0.024449587,UPUEPO_R00447:0.018552135)0.940:0.011777256)0.426:0.007108634,((((STEPAR_R11882:0.006115305,(((PHASIM_R07643:0.003954558,(CEPGRY_R10420:0.002586226,(URILOM_R14851:0.001961500,(ALCTOR_R10164:0.000000005,URIAAL_R08244:0.001961208)0.000:0.000000005)0.898:0.005548302)0.849:0.003776601)0.000:0.000000005,(DROARD_R08901:0.005950928,RYNNIG_R04742:0.000000005)0.868:0.001972845)0.000:0.000000005,(CHRMAC_R10297:0.0,LARSMI_R11231:0.0,RISTRI_R04124:0.0):0.000000005)0.853:0.001974154)0.000:0.000000005,GLAPRA_R12578:0.001972885)0.000:0.000000005,RHIAFR_R07918:0.008040462)0.752:0.001899378,((CALPUG_R06327:0.007935790,(AREINT_R13368:0.000000005,LIMLAP_R00949:0.009207055)0.599:0.003914632)0.425:0.001980414,((NYCSEM_R11750:0.001960099,ROSBEN_R13055:0.001968434)0.799:0.001971966,((JACJAC_R12789:0.012072996,THIORB_R09193:0.008787430)0.843:0.003969872,PEDTOR_R12920:0.020301545)0.736:0.001911235)0.705:0.000000005)0.957:0.008005745)0.827:0.004655826)0.680:0.004981755)0.750:0.002524222)0.875:0.004642928)0.897:0.006129668,(CORCON_R08294:0.001880202,CORCRI_R03236:0.004068816)0.987:0.014120918)0.931:0.008750347)0.528:0.006874785,((((((FURFIG_R09482:0.003828829,(CAMPRO_R05359:0.001939106,XIPELE_R10971:0.000000005)0.359:0.003964155)0.874:0.004513791,(SCLMEX_R07822:0.010257712,SCYSUP_R14066:0.007781474)0.534:0.001995529)0.850:0.004792819,((RHEHOF_R06366:0.118165052,SAKLUC_R12331:0.002081497)0.980:0.019415983,GRAVAR_R13536:0.024204750)0.436:0.005015047)0.754:0.002759788,FORRUF_R01984:0.026154635)0.918:0.007587786,(SERLUN_R12374:0.027448888,(SAPAEN_R02087:0.012718993,(PITSOR_R11386:0.028595603,(CALVIR_R12747:0.020072875,SMICAP_R09407:0.018337687)0.857:0.006941496)0.711:0.007413604)0.818:0.004915663)0.926:0.009990057)0.747:0.002743401,((((PIPCHL_R11517:0.003916661,ONYCOR_R09931:0.003918692)0.000:0.000000005,(((TYRSAV_R09019:0.009776634,(NEOCIN_R07762:0.003938880,TACRUB_R02253:0.005842381)0.085:0.003898776)0.863:0.000000005,OXYCRI_R10812:0.000000005)0.000:0.000000006,MIOMAC_R00790:0.001943956)0.845:0.001945435)0.000:0.000000005,(CEPORN_R11899:0.013862951,(LEPCOR_R01168:0.003905301,MANMAN_R08983:0.000000005)0.938:0.005956526)0.778:0.001895519)0.868:0.003824710,PACMIN_R00396:0.005973298)0.903:0.005876812)0.833:0.004438967)0.936:0.011448284,(ATRCLA_R14560:0.007865376,MENNOV_R03873:0.008356460)0.742:0.000000005)0.977:0.009800426)0.000:0.000000005,(NOTCIN_R13885:0.009899398,CNELOR_R10105:0.010186239)0.851:0.003840248)0.856:0.001943330);\",\n \"unrooted2\" : \"((NOTCIN_R13885:0.010187673,CNELOR_R10105:0.010490935)0.825:0.003829957,CALWIL_R07193:0.002172772,(((EDOCOE_R05131:0.018437345,((((((CORCOR_R12340:0.002150513,(CORBRA_R01172:0.002142783,(APHCOE_R06763:0.001980384,CORMON_R14880:0.002141795)0.000:0.000000006)0.736:0.000000006)0.860:0.006046678,(STRCIN_R09449:0.004297327,(LANLUD_R02205:0.001977304,(DICMEG_R07997:0.001987067,((IFRKOW_R03971:0.002479151,PARRAG_R04945:0.010864683)0.844:0.004077025,(CHAPAP_R05228:0.004308558,RHIDAH_R10872:0.001979553)0.762:0.001995638)0.798:0.001980090)0.813:0.001981422)0.000:0.000000006)0.785:0.001922298)0.880:0.004058818,(EULNIG_R10110:0.004314037,(DAPCHR_R12269:0.012017900,MOHOCH_R00568:0.001995882)0.756:0.001975945)0.000:0.000000005)0.000:0.000000005,(ORIORI_R12278:0.000000005,((((DRYGAM_R05465:0.006674807,MACNIG_R10946:0.006155945)0.781:0.001845299,(GYMTIB_R11425:0.001980892,RHALEU_R08508:0.002148580)0.792:0.001989465)0.000:0.000000005,(PTEMEL_R10767:0.004041880,(FALFRO_R00442:0.004227186,PTILEU_R13363:0.012803009)0.400:0.002006650)0.804:0.002231187)0.000:0.000000005,DYACAS_R00451:0.007987995)0.857:0.001982674)0.000:0.000000005)0.728:0.000000005,(ALERUF_R04641:0.001998311,OREARF_R11822:0.010875693)0.755:0.003993123)0.810:0.001979779,((CLIRUF_R03306:0.017616054,PTIVIO_R06384:0.011246237)0.933:0.008375629,(PACPHI_R05793:0.006503186,MYIHEB_R12764:0.015317352)0.000:0.000000005)0.465:0.002157742)0.218:0.000000005)0.830:0.001988561,((((ACACHL_R00917:0.018509584,((((((GLABRA_R03687:0.012519950,(((CICNIG_R12996:0.000000005,STROCC_R10326:0.001996098)0.989:0.010083714,(BALREX_R01585:0.005672171,PELCRI_R05111:0.022062410)0.720:0.008623043)0.244:0.000000005,(((SAGSER_R01396:0.008837603,(CICMAG_R07326:0.004023260,FREMAG_R08115:0.012178796)0.754:0.001989459)0.786:0.002000857,((BURBIS_R07694:0.014250162,(PODSTR_R09766:0.008065108,PHALEP_R05929:0.021501114)0.558:0.003953535)0.804:0.000000005,(((HYDTET_R14741:0.005575582,THACHL_R09870:0.006536105)0.847:0.000000005,(((ATLROG_R04223:0.003503349,ZAPATR_R12447:0.003057157)0.975:0.015667941,HELFUL_R14151:0.015080635)0.929:0.009834040,(PELURI_R10536:0.008719870,(FULGLA_R09869:0.004331155,CALBOR_R06055:0.006012185)0.000:0.000000005)0.205:0.004165973)0.759:0.001842505)0.000:0.000000005,(((FREGRA_R07112:0.000000006,OCEOCE_R06906:0.001999525)0.958:0.006010759,(((NESNOT_R10361:0.075911808,PHORUB_R01005:0.010218983)0.727:0.010242915,GAVSTE_R07443:0.006578816)1.000:0.000000005,(BALREG_R06527:0.008765765,(ARAGUA_R06621:0.008026114,GRUAME_R00169:0.004002936)0.000:0.000000005)0.917:0.003999257)0.832:0.001993320)0.000:0.000000005,(((((TYTALB_R00623:0.026525852,SPITYR_R00670:0.008181286)0.000:0.000000005,AQUCHR_R00774:0.000000005)0.837:0.001996277,(HALALB_R01072:0.000000005,HALLEU_R12216:0.000000005)0.853:0.001996825)0.000:0.000000005,CIRPEC_R00403:0.008020981)0.946:0.006007983,(APTFOR_R01110:0.000000005,PYGADE_R06057:0.004343010)0.969:0.006531397)0.000:0.000000005)0.000:0.000000005)0.915:0.001995948)0.000:0.000000005)0.000:0.000000005,(SCOUMB_R02017:0.020416135,(PANHAL_R04800:0.000000005,(PODCRI_R09770:0.007082498,PODPOD_R03183:0.000000005)1.000:0.018424766)0.725:0.001994383)0.000:0.000000005)0.860:0.001992666)0.470:0.001993944)0.000:0.000000005,((CORCON_R08294:0.001989344,CORCRI_R03236:0.004081501)0.999:0.020881179,PSOCRE_R10483:0.012054824)0.000:0.000000005)0.799:0.000000006,(((AEGBEN_R04767:0.055082077,(CHAPEL_R10771:0.013564311,HEMCOM_R11712:0.011927148)0.871:0.006807602)0.770:0.003280282,(CALANN_R09088:0.029810330,OREMEL_R09863:0.000000005)1.000:0.046990361)0.950:0.010447336,(NYCBRA_R03609:0.004388146,NYCGRA_R12802:0.016244544)0.993:0.025996556)0.531:0.007693278)0.863:0.001993288,(((MESCAY_R12170:0.014767618,NIPNIP_R07891:0.015137138)0.912:0.010217801,(((CHIMIN_R06220:0.0,PLUSOC_R06636:0.0):0.006249464,((TRILEU_R05014:0.006135551,(PSIHAE_R07704:0.004038457,(EUBBOU_R01201:0.010124118,(RAMSUL_R04838:0.004034133,SEMFRA_R03551:0.008129589)0.469:0.000000005)0.778:0.002014038)0.859:0.004063584)0.800:0.004624184,(INDMAC_R09403:0.034956280,PICPUB_R10180:0.027440373)0.862:0.005866117)0.998:0.026347104)0.880:0.004061762,(((PTEGUT_R01267:0.003984815,(PTEBUR_R05087:0.010060270,SYRPAR_R07515:0.008034909)0.738:0.001982083)0.980:0.014864155,(CALNIC_R10107:0.001894525,(ALOBEC_R10806:0.004030050,(COLPIC_R09688:0.005328073,(COLLIV_R04419:0.003568250,PATFAS_R09846:0.004776462)0.822:0.004072246)0.773:0.002730534)0.874:0.004212020)0.998:0.027973676)0.810:0.003897629,(((STRCAM_R07813:0.028627763,((RHEAME_R12943:0.001791362,RHEPEN_R09156:0.002334167)1.000:0.032618768,((APTOWE_R09711:0.000000005,((APTAUS_R03341:0.000000005,APTROW_R05016:0.000000005)0.929:0.001992214,APTHAA_R06347:0.000000005)0.736:0.000000005)0.990:0.016367341,((((CRYSOU_R04748:0.004494095,(CRYCIN_R13049:0.002062606,CRYUND_R08482:0.005595680)0.763:0.002049044)0.873:0.006198459,((NOTPEN_R05090:0.000000005,(NOTPER_R02537:0.002056939,NOTORN_R05324:0.005998319)0.000:0.000000005)0.913:0.004022594,EUDELE_R07691:0.004116187)0.027:0.000000005)0.452:0.003995982,((NOTJUL_R01007:0.002232984,NOTNIG_R10629:0.006216927)0.931:0.008317664,TINGUT_R08793:0.006970222)0.667:0.000000006)0.978:0.012903360,(CASCAS_R05625:0.000000005,DRONOV_R04869:0.002313538)0.988:0.016958367)0.661:0.001476726)0.115:0.002592135)0.550:0.009669946)0.984:0.023238540,((CHATOR_R12931:0.012638931,(ANSSEM_R13713:0.012397313,(ANSCYG_R03736:0.006788341,(CAIMOS_R02508:0.000000005,((ANAPLA_R12734:0.0,ANAZON_R00560:0.0):0.002017872,ASASCU_R06730:0.006821680)0.890:0.006776359)0.498:0.000000005)0.942:0.013525336)0.742:0.002005872)0.857:0.003984425,((PENPIL_R11901:0.026649361,((NUMMEL_R03848:0.007964661,(ODOGUJ_R00268:0.000000005,(CALSQU_R12923:0.000000005,COLVIR_R01565:0.002308952)0.949:0.005979371)0.938:0.005979241)0.000:0.000000005,((PHACOL_R03848:0.003996085,(GALGAL_R00386:0.010209551,COTJAP_R09409:0.010205596)0.875:0.003802413)0.765:0.001980667,(MELGAL_R09321:0.001983344,TYMCUP_R02157:0.001986828)0.000:0.000000006)0.981:0.012228095)0.806:0.003239266)0.705:0.003247262,ALELAT_R04518:0.036290846)0.973:0.017559713)0.979:0.015098668)0.910:0.012360446,(ANTCAR_R10245:0.004047569,(CHOACU_R04768:0.010408223,NYCLEU_R08557:0.006528471)0.000:0.000000005)0.988:0.014522857)0.063:0.001616571)0.876:0.004257166)0.858:0.005510095)0.761:0.002478764,((((FALCHE_R13279:0.0,FALPER_R09370:0.0):0.002137856,HERCAC_R07796:0.006046748)0.950:0.008107933,(SULDAC_R00447:0.011772915,((ANHANH_R06269:0.001952961,ANHRUF_R08963:0.002044577)0.956:0.007810712,(NANHAR_R02940:0.001992131,((NANAUR_R02327:0.0,NANBRA_R14303:0.0):0.000000005,(PHACAR_R05990:0.000000005,URIPEL_R08866:0.007488905)0.853:0.002490073)0.000:0.000000005)0.771:0.002282420)0.737:0.002021252)0.946:0.008398780)0.853:0.003969226,(((APAVIT_R10929:0.018347506,TROMEL_R09632:0.004265692)0.986:0.020695177,(GEOCAL_R04871:0.018687816,((CUCCAN_R12383:0.013236146,(CEUAER_R09623:0.010077489,PIACAY_R02410:0.008187158)0.755:0.001987447)0.975:0.010284164,(CROSUL_R03384:0.016195343,(CENBEN_R01764:0.002002379,CENUNI_R02025:0.000000005)0.998:0.020778908)0.441:0.003903803)0.706:0.000000005)0.972:0.013914251)0.803:0.004473595,((((EURHEL_R12117:0.011827952,RHYJUB_R07657:0.011919472)0.753:0.005876051,((OPIHOA_R12042:0.022126506,(ARDKOR_R02007:0.004249532,(CHLMAC_R04828:0.019344883,LOPRUF_R03273:0.002112717)0.702:0.001660465)0.998:0.024878327)0.510:0.002667056,(STECAR_R00653:0.017697265,((EOLROS_R10991:0.008058735,PROATE_R04835:0.000000006)0.770:0.002015823,(AMAGUI_R07007:0.006092944,(AGAROS_R11305:0.008188291,MELUND_R04324:0.004063995)0.754:0.001955566)0.868:0.004068761)0.954:0.011286353)0.752:0.003239158)0.764:0.004060303)0.802:0.003431182,((CARCRI_R07732:0.004926596,CHUBUR_R13999:0.005565691)0.989:0.019088945,(BUCABY_R08200:0.012922520,BUCRHI_R04945:0.030925860)0.982:0.023053331)0.693:0.001261951)0.798:0.002090455,(COCCOC_R01070:0.006097725,EGRGAR_R10096:0.006031164)0.970:0.010050551)0.240:0.000000005)0.638:0.000000005)0.643:0.000000005)0.000:0.000000005)0.000:0.000000005,((COLSTR_R09987:0.010274933,UROIND_R00112:0.003927263)0.996:0.020105556,(((MESUNI_R06242:0.041334752,TURVEL_R11671:0.050465625)0.881:0.011520693,(((STEPAR_R11882:0.006237959,(((((NYCSEM_R11750:0.001998501,ROSBEN_R13055:0.002005146)0.818:0.002006086,(((JACJAC_R12789:0.012313643,THIORB_R09193:0.008939906)0.842:0.004047610,PEDTOR_R12920:0.020710116)0.763:0.001945396,(CALPUG_R06327:0.008089141,(AREINT_R13368:0.000000005,LIMLAP_R00949:0.009380671)0.613:0.003991462)0.779:0.002022128)0.000:0.000000005)0.988:0.008110302,GLAPRA_R12578:0.000000005)0.878:0.002014220,((DROARD_R08901:0.006068822,RYNNIG_R04742:0.000000005)0.927:0.002011780,((PHASIM_R07643:0.002012306,(CHRMAC_R10297:0.0,LARSMI_R11231:0.0,RISTRI_R04124:0.0):0.000000005)0.000:0.000000005,(CEPGRY_R10420:0.002643322,(ALCTOR_R10164:0.000000005,(URILOM_R14851:0.001997948,URIAAL_R08244:0.001997654)0.000:0.000000005)0.889:0.005651109)0.841:0.003845258)0.000:0.000000005)0.922:0.002014913)0.000:0.000000005,RHIAFR_R07918:0.008202362)0.733:0.000000006)0.897:0.006649422,(RHICYA_R12088:0.027437020,UPUEPO_R00447:0.016656291)0.981:0.017981040)0.601:0.006144029,(CHAVOC_R09490:0.004151844,(CHAALE_R15308:0.004071762,(HIMHIM_R01743:0.004026478,IBISTR_R00388:0.002009799)0.767:0.002013288)0.761:0.001910153)0.866:0.004700446)0.750:0.003193232)0.762:0.003621412,(BUCCAP_R06050:0.050490074,GALDEA_R14061:0.009927491)0.913:0.012765929)0.142:0.001442668)0.727:0.002316086)0.838:0.003888045,(((BRALEP_R03310:0.020926420,EURGUL_R08859:0.014812034)0.922:0.008291825,((CHLAEN_R07872:0.017048275,HALSEN_R12568:0.011760245)0.955:0.014767748,(BARMAR_R14004:0.018846041,TODMEX_R01766:0.025450564)0.774:0.004228639)0.763:0.003187693)0.761:0.000000005,MERNUB_R06122:0.024543538)0.884:0.004167791)0.981:0.014673257)0.940:0.010625720,(FORRUF_R01984:0.028394062,((SERLUN_R12374:0.029067140,(SAPAEN_R02087:0.011611878,(PITSOR_R11386:0.029220318,(CALVIR_R12747:0.020514975,SMICAP_R09407:0.018681747)0.855:0.007030753)0.783:0.008830299)0.814:0.005115354)0.914:0.009593144,(((RHEHOF_R06366:0.119624125,SAKLUC_R12331:0.000000005)0.985:0.021714910,GRAVAR_R13536:0.025023405)0.823:0.006700351,(((FURFIG_R09482:0.003855737,(CAMPRO_R05359:0.001976181,XIPELE_R10971:0.000000005)0.401:0.004085802)0.815:0.004406497,(SCLMEX_R07822:0.009515605,SCYSUP_R14066:0.008755842)0.560:0.002458980)0.696:0.008606532,(TYRSAV_R09019:0.007969348,((((NEOCIN_R07762:0.004014116,TACRUB_R02253:0.005955558)0.890:0.003974262,(MIOMAC_R00790:0.001982210,OXYCRI_R10812:0.000000005)0.000:0.000000005)0.844:0.001981767,((CEPORN_R11899:0.014130612,(LEPCOR_R01168:0.003986434,MANMAN_R08983:0.000000005)0.933:0.006077300)0.752:0.001934480,(ONYCOR_R09931:0.003995015,PIPCHL_R11517:0.003990987)0.000:0.000000006)0.751:0.000000005)0.879:0.003976846,PACMIN_R00396:0.005989343)0.293:0.000000006)0.879:0.006497485)0.155:0.003727304)0.772:0.002871621)0.762:0.002103815)0.881:0.007788756)0.886:0.006396091,(ATRCLA_R14560:0.008240691,MENNOV_R03873:0.008737989)0.724:0.002152865)0.958:0.009658636,(ERPZAN_R00185:0.0,VIRALT_R07861:0.0):0.001982105)0.738:0.000000005)0.000:0.000000005,(((ORISOL_R03544:0.010073721,(((((((PASAMO_R03813:0.005157382,(((LONSTR_R08944:0.001997580,TAEGUT_R17040:0.001978595)0.941:0.006035828,(PEUTAE_R12381:0.005969777,(UROPYL_R08260:0.001985326,(GEOFOR_R09593:0.000000005,SPOHYP_R10874:0.010003757)0.897:0.003991641)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,(((NESACU_R06611:0.010075839,(SETCOR_R10331:0.003984510,SETKIR_R09068:0.000000005)0.772:0.002006641)0.787:0.001969564,(CARCAR_R07597:0.003978559,(HYPCIN_R05861:0.003976504,RHOROS_R03907:0.001981973)0.000:0.000000005)0.865:0.001981550)0.000:0.000000005,((PASDOM_R01841:0.001981049,(((LOXCUR_R01247:0.0,LOXLEU_R10869:0.0):0.000000005,(SERCAN_R05569:0.001980627,(CHLVIR_R02303:0.000000005,HEMWIL_R12881:0.010303989)0.906:0.004035050)0.000:0.000000005)0.960:0.005972034,((MOTALB_R00263:0.000000005,((SPIPAS_R02115:0.006647930,ZONALB_R11673:0.078050601)0.781:0.003274728,(JUNHYE_R02029:0.000000006,MELMEL_R06212:0.001982826)0.000:0.000000005)0.950:0.003975446)0.836:0.001981658,((AGEPHO_R12112:0.0,QUIMEX_R06835:0.0):0.000000005,MOLATE_R04767:0.001992249)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,EMBFUC_R07456:0.001983257)0.000:0.000000005)0.839:0.001984583)0.000:0.000000012)0.117:0.001985853,((VIDCHA_R00557:0.000000005,VIDMAC_R01666:0.000000005)0.968:0.006005349,(REGSAT_R03545:0.013986957,((CERBRA_R02815:0.001988399,CERFAM_R07219:0.000000005)0.964:0.008017940,(POLCAE_R08689:0.010003023,THRLUD_R00775:0.005974106)0.854:0.004020500)0.707:0.001969303)0.173:0.000000005)0.822:0.001988437)0.000:0.000000006,(((PRUFUL_R09054:0.003961340,PRUHIM_R10842:0.001985821)0.985:0.012057570,(((COPSEC_R04846:0.004303382,TOXRED_R00790:0.010092368)0.784:0.001981110,((ERIRUB_R02188:0.007953202,(FICALB_R00799:0.001977029,(OENOEN_R08976:0.001977343,SAXMAU_R01795:0.001976966)0.000:0.000000005)0.883:0.003968839)0.782:0.001988986,CATFUS_R11593:0.010004491)0.768:0.001972341)0.000:0.000000005,(CERCOR_R06284:0.001976201,(RHAINO_R11059:0.006003458,((LEUROT_R14346:0.004501946,STUVUL_R07134:0.002009732)0.940:0.006022253,CINMEX_R12987:0.003961448)0.000:0.000000006)0.862:0.001974750)0.000:0.000000005)0.878:0.003978819)0.740:0.000000005,((LEPASP_R01517:0.003964923,((CHLCYA_R06957:0.001993204,CHLHAR_R11249:0.001991308)0.965:0.008899993,(ELAFOR_R06222:0.069382747,PROCAF_R03956:0.003775292)0.123:0.005054435)0.650:0.001130655)0.762:0.001958075,(BOMGAR_R08262:0.012061374,DICEXI_R09180:0.005980954)0.746:0.002011415)0.193:0.001983239)0.796:0.003949017)0.768:0.001998779,(((HYLPRA_R13303:0.016246184,(((SYLVIR_R10709:0.008687543,(RHASIB_R03403:0.004305963,(DONATR_R04824:0.002153616,(((SITEUR_R04209:0.002197151,TICMUR_R00244:0.014899899)0.862:0.016925528,(IRECYA_R12278:0.008617378,((CALORN_R07598:0.004183775,PHEMEL_R04365:0.018819986)0.766:0.006544313,PLONIG_R01869:0.002136799)0.762:0.006533509)0.767:0.005554313)0.906:0.045026102,(ACRARU_R14141:0.007366927,HIPICT_R09009:0.006307597)0.838:0.005226972)0.777:0.016160176)0.000:0.000000005)0.000:0.000000005)0.000:0.000000005,PHYTRO_R13017:0.002148004)1.000:0.000000006,NICCHL_R07497:0.003963746)0.000:0.000000005)0.864:0.001977934,(LOCOCH_R10739:0.010016213,(((((BRAATR_R01259:0.004836373,PYCJOC_R06715:0.013420910)0.720:0.005653477,((CISJUN_R13494:0.013947538,(STEDEN_R06180:0.002155183,(ZOSHYP_R01814:0.0,ZOSLAT_R06289:0.0):0.004287804)0.764:0.002550873)0.806:0.005724618,((SINWEB_R08836:0.008022415,(SYLATR_R08297:0.006148548,SYLBOR_R04162:0.002737321)0.785:0.001916383)0.967:0.009951187,(PORRUF_R06759:0.006461890,(ILLCLE_R09312:0.004298379,LEILUT_R01534:0.004315475)0.757:0.002152191)0.000:0.000000005)0.269:0.000000005)0.906:0.003960597)0.728:0.000000005,(ANTMIN_R08656:0.005988735,(POEATR_R08762:0.001992461,(PARMAJ_R09814:0.001976891,PSEHUM_R01296:0.000000005)0.791:0.001976320)0.887:0.003965873)0.897:0.004032114)0.804:0.001995577,(((CETCET_R02558:0.006024695,AEGCAU_R08906:0.011372518)0.252:0.003486984,HORVUL_R04273:0.010017086)0.629:0.001712365,(ERYMCC_R11442:0.006941526,HIRRUS_R01812:0.006457026)0.747:0.000000006)0.785:0.002163270)0.805:0.001982585,PANBIA_R07107:0.011988565)0.000:0.000000005)0.752:0.000000005)0.457:0.001991715,((DRYBRU_R10064:0.014158811,MELVER_R13861:0.012160955)0.878:0.005970931,PHANIT_R00172:0.014048097)0.394:0.000000005)0.768:0.001977899)0.383:0.003989321,(CHAFRE_R02806:0.015468322,PICGYM_R06166:0.005886643)0.909:0.009074803)0.000:0.000000005,GRAPIC_R12577:0.015294078)0.808:0.002007802,((DASBRO_R00594:0.010030956,MALELE_R03053:0.032840355)0.761:0.002119060,ORTSPA_R03385:0.010950585)0.752:0.002006856)0.116:0.001965403)0.756:0.000000005,POSRUF_R10160:0.008013965)0.000:0.000000006,PARPUN_R00466:0.006477149)0.839:0.001984635)0.771:0.001976079);\",\n \"nhx\" : \"(((((((((((((((((((((((ENSDLEP00000011728:0.000566[&&NHX:D=N:T=9749],ENSMMNP00015026246:0.001023[&&NHX:D=N:T=40151]):0.002051[&&NHX:D=N:B=100:T=9747],ENSPSNP00000021942:0.00377[&&NHX:D=N:T=42100]):0.001682[&&NHX:D=N:B=97:T=9722],ENSTTRP00000010004:0.004883[&&NHX:D=N:T=9739]):0.004417[&&NHX:D=N:B=97:T=9722],ENSPCTP00005024635:0.007352[&&NHX:D=N:T=9755]):0.001205[&&NHX:D=N:B=99:T=9722],ENSBMSP00010023868:0.006737[&&NHX:D=N:T=9771]):0.015925[&&NHX:D=N:B=99:T=9721],((((((ENSBGRP00000023601:0[&&NHX:D=N:T=30521],ENSBMUP00000018023:0.002196[&&NHX:D=N:T=72004]):0.001033[&&NHX:D=N:B=88:T=9903],ENSBBBP00000019015:0.001697[&&NHX:D=N:T=43346]):0.000565[&&NHX:D=N:B=74:T=27592],(ENSBTAP00000001311:0.000337[&&NHX:D=N:T=9913],ENSBIXP00005031886:0.000914[&&NHX:D=N:T=30522]):0.001146[&&NHX:D=N:B=98:T=9903]):0.008235[&&NHX:DD=Y:B=74:T=27592],ENSCHIP00000024039:0.014386[&&NHX:D=N:T=9925]):0.001511[&&NHX:D=N:B=100:T=9895],ENSMMSP00000000856:0.014163[&&NHX:D=N:T=68415]):0.001839[&&NHX:D=N:B=81:T=35500],ENSCHYP00000039820:0.011355[&&NHX:D=N:T=84702]):0.036645[&&NHX:D=N:B=81:T=35500]):0.005942[&&NHX:D=N:B=27:T=91561],((ENSSSCP00000028073:0.02414[&&NHX:D=N:T=9823],ENSCWAP00000015540:0.025846[&&NHX:D=N:T=51154]):0.001129[&&NHX:D=N:B=90:T=35497],ENSSSCP00000052851:0.064492[&&NHX:D=N:T=9823]):0.021769[&&NHX:D=Y:B=0:T=35497]):0.003699[&&NHX:D=N:B=0:T=91561],(ENSCDRP00005029137:0.009985[&&NHX:D=N:T=9838],ENSVPAP00000000821:0.010494[&&NHX:D=N:T=30538]):0.034855[&&NHX:D=N:B=100:T=9835]):0.01351[&&NHX:D=N:B=0:T=91561],(((((ENSUMAP00000030927:0.000707[&&NHX:D=N:T=29073],ENSUAMP00000017844:0.001135[&&NHX:D=N:T=9643]):0.004718[&&NHX:D=N:B=100:T=9639],ENSAMEP00000009909:0.009591[&&NHX:D=N:T=9646]):0.015488[&&NHX:D=N:B=100:T=9632],(ENSNVIP00000027714:0.003973[&&NHX:D=N:T=452646],ENSMPUP00000001928:0.005437[&&NHX:D=N:T=9669]):0.020722[&&NHX:D=N:B=100:T=169418]):0.00787[&&NHX:D=N:B=100:T=379584],(ENSVVUP00000036965:0.004369[&&NHX:D=N:T=9627],ENSCAFP00020031922:0.0054[&&NHX:D=N:T=286419]):0.032112[&&NHX:D=N:B=100:T=9608]):0.009107[&&NHX:D=N:B=100:T=379584],(((ENSPPRP00000007644:0.000295[&&NHX:D=N:T=9691],ENSPLOP00000021497:0.000735[&&NHX:D=N:T=9689]):0.000985[&&NHX:D=N:B=98:T=9688],ENSPTIP00000023416:0.001804[&&NHX:D=N:T=74533]):0.003065[&&NHX:D=N:B=98:T=9688],ENSFCAP00000019777:0.007049[&&NHX:D=N:T=9685]):0.040525[&&NHX:D=N:B=100:T=9681]):0.023686[&&NHX:D=N:B=100:T=33554]):0.000574[&&NHX:D=N:B=7:T=314145],((ENSRFEP00010002200:0.04543[&&NHX:D=N:T=59479],ENSPVAP00000000225:0.086354[&&NHX:D=N:T=132908]):0.010201[&&NHX:D=N:B=84:T=9397],ENSMLUP00000012516:0.056375[&&NHX:D=N:T=59463]):0.013313[&&NHX:DD=Y:B=78:T=9397]):0.000609[&&NHX:D=N:B=4:T=314145],(ENSECAP00000013360:0.002971[&&NHX:D=N:T=9796],ENSEASP00005031151:0.003002[&&NHX:D=N:T=83772]):0.04043[&&NHX:D=N:B=100:T=9789]):0.003082[&&NHX:D=N:B=15:T=314145],(ENSEEUP00000008968:0.099514[&&NHX:D=N:T=9365],ENSSARP00000002541:0.104111[&&NHX:D=N:T=42254]):0.015519[&&NHX:D=N:B=88:T=9362]):0.007109[&&NHX:D=N:B=36:T=314145],((((((((((ENSMOCP00000000295:0.067555[&&NHX:D=N:T=79684],ENSPEMP00000001193:0.069389[&&NHX:D=N:T=230844]):0.00575[&&NHX:D=N:B=94:T=337677],((ENSMAUP00000022423:0[&&NHX:D=N:T=10036],ENSMAUP00000009408:0[&&NHX:D=N:T=10036]):0[&&NHX:D=Y:T=10036],ENSCGRP00001017976:0.023005[&&NHX:D=N:T=10029]):0.022308[&&NHX:D=N:B=100:T=10026]):0.015842[&&NHX:D=N:B=94:T=337677],(((((MGP_SPRETEiJ_P0075202:0.00265[&&NHX:D=N:T=10096],ENSMUSP00000038576:0.004017[&&NHX:D=N:T=10090]):0.000326[&&NHX:D=N:B=10:T=862507],ENSMSIP00000026406:0.002341[&&NHX:D=N:T=10103]):0.003936[&&NHX:D=N:B=8:T=862507],MGP_CAROLIEiJ_P0072376:0.007484[&&NHX:D=N:T=10089]):0.008466[&&NHX:D=N:B=25:T=862507],MGP_PahariEiJ_P0060583:0.019806[&&NHX:D=N:T=10093]):0.015012[&&NHX:D=N:B=21:T=10088],ENSRNOP00000001475:0.041792[&&NHX:D=N:T=10116]):0.033831[&&NHX:D=N:B=96:T=39107]):0.07317[&&NHX:D=N:B=96:T=337687],ENSNGAP00000024933:0.068058[&&NHX:D=N:T=1026970]):0.01854[&&NHX:D=N:B=56:T=337687],ENSJJAP00000024685:0.114896[&&NHX:D=N:T=51337]):0.024014[&&NHX:D=N:B=16:T=1963758],(((ENSCLAP00000008318:0.033998[&&NHX:D=N:T=34839],ENSODEP00000009470:0.061026[&&NHX:D=N:T=10160]):0.004259[&&NHX:D=N:B=52:T=33550],ENSCPOP00000004635:0.068163[&&NHX:D=N:T=10141]):0.013643[&&NHX:D=N:B=52:T=33550],ENSHGLP00000011991:0.043409[&&NHX:D=N:T=10181]):0.039213[&&NHX:D=N:B=94:T=33550]):0.003549[&&NHX:D=N:B=11:T=9989],(((ENSSTOP00000004979:0.007082[&&NHX:D=N:T=43179],ENSUPAP00010013759:0.008628[&&NHX:D=N:T=9999]):0.0085[&&NHX:D=N:B=96:T=337730],ENSMMMP00000025283:0.00492[&&NHX:D=N:T=9994]):0.027993[&&NHX:D=N:B=96:T=337730],ENSSVLP00005024437:0.029815[&&NHX:D=N:T=55149]):0.034841[&&NHX:D=N:B=92:T=55153]):0.010047[&&NHX:D=N:B=11:T=9989],(ENSOCUP00000014514:0.044118[&&NHX:D=N:T=9986],ENSOPRP00000014082:0.109158[&&NHX:D=N:T=9978]):0.04827[&&NHX:D=N:B=99:T=9975]):0.001917[&&NHX:D=N:B=8:T=314147],ENSTBEP00000013856:0.082615[&&NHX:D=N:T=37347]):0.001123[&&NHX:D=N:B=4:T=314146],(((((((((ENSPTRP00000009812:0.000341[&&NHX:D=N:T=9598],ENSPPAP00000000836:0.001142[&&NHX:D=N:T=9597]):0.002093[&&NHX:D=N:B=100:T=9596],ENSP00000369497:0.001566[&&NHX:D=N:T=9606]):0.000219[&&NHX:D=N:B=17:T=207598],ENSGGOP00000027226:0.002031[&&NHX:D=N:T=9595]):0.004252[&&NHX:D=N:B=17:T=207598],ENSPPYP00000005997:0.007072[&&NHX:D=N:T=9601]):0.002903[&&NHX:D=N:B=99:T=9604],ENSNLEP00000001277:0.009571[&&NHX:D=N:T=61853]):0.002446[&&NHX:D=N:B=98:T=314295],(((((ENSCATP00000015406:0.00209[&&NHX:D=N:T=9531],ENSMLEP00000025266:0.0034[&&NHX:D=N:T=9568]):0.000372[&&NHX:D=N:B=60:T=9528],ENSPANP00000022490:0.001777[&&NHX:D=N:T=9555]):0.000724[&&NHX:D=N:B=54:T=9528],((ENSMFAP00000029418:0.001032[&&NHX:D=N:T=9541],ENSMMUP00000009432:0.005844[&&NHX:D=N:T=9544]):0.000105[&&NHX:D=N:B=40:T=9539],ENSMNEP00000025034:0.002176[&&NHX:D=N:T=9545]):0.001473[&&NHX:D=N:B=34:T=9539]):0.000352[&&NHX:D=N:B=54:T=9528],ENSCSAP00000013938:0.003981[&&NHX:D=N:T=60711]):0.00179[&&NHX:D=N:B=55:T=9528],(ENSRROP00000030947:0[&&NHX:D=N:T=61622],ENSRBIP00000000297:0.022474[&&NHX:D=N:T=61621]):0.008142[&&NHX:D=N:B=92:T=542827]):0.008355[&&NHX:D=N:B=58:T=9527]):0.007639[&&NHX:D=N:B=87:T=9526],((ENSCCAP00000031676:0.011669[&&NHX:D=N:T=2715852],ENSCJAP00000093240:0.015902[&&NHX:D=N:T=9483]):0.000332[&&NHX:D=N:B=23:T=9498],ENSANAP00000015411:0.01113[&&NHX:D=N:T=37293]):0.015231[&&NHX:D=N:B=23:T=9479]):0.029405[&&NHX:D=N:B=92:T=314293],ENSTSYP00000000441:0.060665[&&NHX:D=N:T=1868482]):0.003827[&&NHX:D=N:B=90:T=376913],(((ENSPCOP00000008219:0.014484[&&NHX:D=N:T=379532],ENSMICP00000044704:0.023431[&&NHX:D=N:T=30608]):0.001594[&&NHX:D=N:B=93:T=376915],ENSPSMP00000026900:0.017253[&&NHX:D=N:T=1328070]):0.012285[&&NHX:D=N:B=93:T=376915],ENSOGAP00000009477:0.064918[&&NHX:D=N:T=30611]):0.013645[&&NHX:D=N:B=99:T=376911]):0.005986[&&NHX:D=N:B=89:T=9443]):0.009172[&&NHX:D=N:B=12:T=314146]):0.008774[&&NHX:D=N:B=12:T=1437010],(ENSDNOP00000034947:0.046866[&&NHX:D=N:T=9361],ENSCHOP00000007822:0.050851[&&NHX:D=N:T=9358]):0.025312[&&NHX:D=N:B=100:T=9348]):0.006165[&&NHX:D=N:B=15:T=9347],((ENSETEP00000003277:0.154194[&&NHX:D=N:T=9371],ENSPCAP00000000440:0.17644[&&NHX:D=N:T=9813]):0.023418[&&NHX:D=N:B=93:T=311790],ENSLAFP00000002234:0.069853[&&NHX:D=N:T=9785]):0.048728[&&NHX:D=N:B=91:T=311790]):0.102726[&&NHX:D=N:B=69:T=9347],(((ENSVURP00010026286:0.02893[&&NHX:D=N:T=29139],ENSMEUP00000009812:0.045949[&&NHX:D=N:T=9315]):0.007079[&&NHX:D=N:B=96:T=38609],ENSSHAP00000012162:0.055381[&&NHX:D=N:T=9305]):0.015112[&&NHX:D=N:B=96:T=9263],ENSMODP00000033276:0.071803[&&NHX:D=N:T=13616]):0.123926[&&NHX:D=N:B=96:T=9263]):0.06077[&&NHX:D=N:B=87:T=32525],ENSOANP00000039689:0.264045[&&NHX:D=N:T=9258]):0.091853[&&NHX:D=N:B=90:T=40674],((((ENSPMRP00000005460:0.144183[&&NHX:D=N:T=64176],ENSSMRP00000016793:0.20051[&&NHX:D=N:T=96440]):0.009903[&&NHX:D=N:B=99:T=1329976],((ENSNSUP00000017478:0.005634[&&NHX:D=N:T=8663],ENSLLTP00000016858:0.029105[&&NHX:D=N:T=8630]):0.226094[&&NHX:D=N:B=100:T=8602],ENSACAP00000031108:0.186787[&&NHX:D=N:T=28377]):0.032366[&&NHX:D=N:B=7:T=1329911]):0.135778[&&NHX:D=N:B=3:T=1329912],ENSSPUP00000018703:0.144411[&&NHX:D=N:T=8508]):0.0332[&&NHX:D=N:B=0:T=8504],((((((ENSACCP00020021048:0.030244[&&NHX:D=N:T=223781],ENSSHBP00005016070:0.046241[&&NHX:D=N:T=2489341]):0.000673[&&NHX:D=N:B=100:T=8825],((((ENSGFOP00000022131:0.015965[&&NHX:D=N:T=48883],ENSSCAP00000011543:0.017989[&&NHX:D=N:T=9135]):0.005354[&&NHX:D=N:B=100:T=9126],ENSTGUP00000012130:0.02239[&&NHX:D=N:T=59729]):0.005211[&&NHX:DD=Y:B=100:T=9126],ENSPMJP00000020154:0.031769[&&NHX:D=N:T=9157]):0.0011[&&NHX:D=N:B=13:T=9126],ENSFALP00000008821:0.024057[&&NHX:D=N:T=59894]):0.055526[&&NHX:D=N:B=13:T=9126]):0.017918[&&NHX:D=N:B=100:T=8825],(((ENSGALP00000027524:0.023757[&&NHX:D=N:T=9031],ENSMGAP00000015990:0.025887[&&NHX:D=N:T=9103]):0.000864[&&NHX:D=N:B=94:T=9005],ENSCJPP00005026171:0.031852[&&NHX:D=N:T=93934]):0.055074[&&NHX:D=N:B=94:T=9005],ENSAPLP00000007411:0.069477[&&NHX:D=N:T=8840]):0.021576[&&NHX:D=N:B=100:T=1549675]):0.027956[&&NHX:D=N:B=98:T=8825],ENSSCUP00000019773:0.055174[&&NHX:D=N:T=441894]):0.138375[&&NHX:D=N:B=98:T=8782],ENSCPRP00005008306:0.1287[&&NHX:D=N:T=8502]):0.016113[&&NHX:D=N:B=0:T=8492],((((ENSTMTP00000024650:0.004017[&&NHX:D=N:T=2587831],ENSTMTP00000012675:0.005315[&&NHX:D=N:T=2587831]):0.002859[&&NHX:D=Y:B=100:T=2587831],ENSCPBP00000004776:0.007644[&&NHX:D=N:T=8478]):0.005658[&&NHX:D=N:B=100:T=8476],(ENSGEVP00005002652:0.01601[&&NHX:D=N:T=1825980],ENSCABP00000011062:0.022245[&&NHX:D=N:T=106734]):0.009454[&&NHX:D=N:B=99:T=8487]):0.01978[&&NHX:D=N:B=99:T=8486],ENSPSIP00000012858:0.064659[&&NHX:D=N:T=13735]):0.046163[&&NHX:D=N:B=100:T=8464]):0.04067[&&NHX:D=N:B=0:T=1329799]):0.101687[&&NHX:D=N:B=9:T=32561]):0.107575[&&NHX:D=N:B=89:T=32524],(ENSXETP00000037057:0.302164[&&NHX:D=N:T=8364],ENSLLEP00000043860:0.366066[&&NHX:D=N:T=445787]):0.181688[&&NHX:D=N:B=96:T=8342]):0.09645[&&NHX:D=N:B=49:T=32523],ENSLACP00000008815:0.24746[&&NHX:D=N:T=7897]):0.045271[&&NHX:D=N:B=14:T=8287],((((((((((((((ENSTNIP00000002435:0.089877[&&NHX:D=N:T=99883],ENSTRUP00000015030:0.091412[&&NHX:D=N:T=31033]):0.146182[&&NHX:D=N:B=100:T=31031],ENSGACP00000015199:0.143397[&&NHX:D=N:T=69293]):0.009443[&&NHX:D=N:B=0:T=1489922],ENSSAUP00010031327:0.096966[&&NHX:D=N:T=8175]):0.004928[&&NHX:D=N:B=0:T=1489922],(ENSDLAP00005043188:0.096295[&&NHX:D=N:T=13489],ENSLBEP00000002832:0.154656[&&NHX:D=N:T=56723]):0.015316[&&NHX:D=N:B=15:T=1489922]):0.007374[&&NHX:D=N:B=0:T=1489922],(ENSSLUP00000030625:0.065993[&&NHX:D=N:T=283035],ENSCGOP00000037196:0.066502[&&NHX:D=N:T=56716]):0.014978[&&NHX:D=N:B=91:T=8111]):0.014192[&&NHX:DD=Y:B=0:T=1489922],(((ENSMAMP00000049017:0.112322[&&NHX:D=N:T=205130],ENSBSLP00000034562:0.168852[&&NHX:D=N:T=158456]):0.008315[&&NHX:D=N:B=0:T=1489892],((ENSSDUP00000015520:0.00513[&&NHX:D=N:T=41447],ENSSLDP00000006566:0.007791[&&NHX:D=N:T=1841481]):0.042577[&&NHX:D=N:B=100:T=8160],ENSLCAP00010030231:0.060104[&&NHX:D=N:T=8187]):0.016173[&&NHX:D=N:B=93:T=1489904]):0[&&NHX:D=N:B=0:T=1489872],(ENSSMAP00000010386:0.11135[&&NHX:D=N:T=52904],ENSATEP00000018320:0.126751[&&NHX:D=N:T=64144]):0.003595[&&NHX:D=N:B=14:T=1489872]):0.014963[&&NHX:DD=Y:B=0:T=1489872]):0.008717[&&NHX:D=N:B=0:T=1489872],(((ENSAOCP00000005723:0.022605[&&NHX:D=N:T=80972],ENSAPOP00000003431:0.032376[&&NHX:D=N:T=80966]):0.067976[&&NHX:D=N:B=100:T=30863],(((ENSMZEP00005015140:0.002522[&&NHX:D=N:T=106582],ENSHBUP00000022221:0.00276[&&NHX:D=N:T=8153]):0.005622[&&NHX:D=N:B=100:T=319058],ENSNBRP00000031193:0.014221[&&NHX:D=N:T=32507]):0.055295[&&NHX:D=N:B=100:T=318546],ENSACIP00000005496:0.085203[&&NHX:D=N:T=61819]):0.069808[&&NHX:D=N:B=97:T=8113]):0.006383[&&NHX:D=N:B=72:T=1489908],(((((((ENSPFOP00000001575:0.001877[&&NHX:D=N:T=48698],ENSPLAP00000026811:0.002682[&&NHX:D=N:T=48699]):0.011341[&&NHX:D=N:B=100:T=8080],ENSPREP00000018297:0.014432[&&NHX:D=N:T=8081]):0.009367[&&NHX:D=N:B=100:T=8080],ENSXMAP00000006983:0.020943[&&NHX:D=N:T=8083]):0.07372[&&NHX:D=N:B=100:T=586240],ENSFHEP00000010259:0.090262[&&NHX:D=N:T=8078]):0.010081[&&NHX:D=N:B=100:T=8087],ENSCVAP00000010146:0.166223[&&NHX:D=N:T=28743]):0.099285[&&NHX:D=N:B=100:T=8087],ENSKMAP00000010397:0.154786[&&NHX:D=N:T=37003]):0.018665[&&NHX:D=N:B=11:T=28738],((ENSORLP00000039367:0.012182[&&NHX:D=N:T=8090],ENSOSIP00000028295:0.023719[&&NHX:D=N:T=183150]):0.048352[&&NHX:D=N:B=100:T=8089],ENSOMEP00000001576:0.066811[&&NHX:D=N:T=30732]):0.195635[&&NHX:D=N:B=100:T=8089]):0.03392[&&NHX:D=N:B=9:T=1489913]):0.027302[&&NHX:D=N:B=0:T=1489908]):0.081822[&&NHX:D=N:B=0:T=1489872],ENSMMDP00005016864:0.115686[&&NHX:D=N:T=586833]):0.133158[&&NHX:D=N:B=0:T=123369],ENSGMOP00000010385:0.447969[&&NHX:D=N:T=8049]):0.04027[&&NHX:D=N:B=1:T=123368],(((ENSSSAP00000049301:0.003158[&&NHX:D=N:T=8030],ENSSTUP00000089299:0.005224[&&NHX:D=N:T=8032]):0.007814[&&NHX:D=N:B=100:T=8028],((ENSOTSP00005006826:0.003553[&&NHX:D=N:T=74940],ENSOKIP00005016504:0.004245[&&NHX:D=N:T=8019]):0.001513[&&NHX:D=N:B=95:T=8016],ENSOMYP00000096229:0.004581[&&NHX:D=N:T=8022]):0.012062[&&NHX:D=N:B=95:T=8016]):0.008081[&&NHX:D=N:B=79:T=504568],ENSHHUP00000013710:0.009428[&&NHX:D=N:T=62062]):0.220475[&&NHX:D=N:B=79:T=504568]):0.063675[&&NHX:D=N:B=0:T=1489388],((((ENSPNAP00000002089:0.088107[&&NHX:D=N:T=42514],ENSAMXP00000037719:0.141689[&&NHX:D=N:T=7994]):0.040456[&&NHX:D=N:B=100:T=1489739],ENSEEEP00000018632:0.175328[&&NHX:D=N:T=8005]):0.011488[&&NHX:D=N:B=52:T=186628],ENSIPUP00000019387:0.191507[&&NHX:D=N:T=7998]):0.130849[&&NHX:D=N:B=52:T=186628],((((ENSCCRP00000004504:0.013011[&&NHX:D=N:T=7962],ENSSGRP00000031158:0.015922[&&NHX:D=N:T=75366]):0.000854[&&NHX:D=N:B=100:T=2743694],ENSCARP00000056251:0.028035[&&NHX:D=N:T=7957]):0.0219[&&NHX:D=N:B=100:T=2743694],ENSSGRP00000071274:0.037074[&&NHX:D=N:T=75366]):0.035154[&&NHX:D=Y:B=100:T=2743694],ENSDARP00000099674:0.101043[&&NHX:D=N:T=7955]):0.247776[&&NHX:D=N:B=100:T=30727]):0.127786[&&NHX:D=N:B=98:T=186626]):0.062612[&&NHX:D=N:B=25:T=186625],(ENSPKIP00000013632:0.279788[&&NHX:D=N:T=1676925],ENSSFOP00015002218:0.291858[&&NHX:D=N:T=113540]):0.102594[&&NHX:D=N:B=88:T=41712]):0.110179[&&NHX:D=N:B=0:T=1489341],ENSLOCP00000009962:0.210021[&&NHX:D=N:T=7918]):0.138094[&&NHX:D=N:B=2:T=41665],ENSECRP00000005112:0.560007[&&NHX:D=N:T=27687]):0.12002[&&NHX:D=N:B=55:T=7898]):0.072614[&&NHX:D=N:B=3:T=117571],ENSCMIP00000046776:0.395803[&&NHX:D=N:T=7868]):0.1[&&NHX:D=N:B=4:T=7776],ENSEBUP00000009898:0.958294[&&NHX:D=N:T=7764]):0.1[&&NHX:D=N:B=0:T=7742];\",\n \"nhx2\" : \"((((POP23a_CIOIN_ENSCING00000016202,POP23b_CIOIN_ENSCING00000016169)[&&NHX:Ev=duplication],POP23_CIOSA_ENSCSAVG00000000248),((POP23a_BRAFL_C3ZMF1,POP23b_BRAFL_121417)[&&NHX:Ev=duplication],(((POP3_ORYLA_ENSORLG00000019669,POP3_GASAC_ENSGACG00000014023,POP3_DANRE_Q6JWW1),(POP3_XENTR_B1H1F6,(POP3_CHICK_Q9DG25,(POP3_ORNAN_ENSOANG00000004179,POP3_MONDO_ENSMODG00000018033,((POP3_MOUSE_Q9ES81,POP3_RAT_Q3BCU3),POP3_RABIT_ENSOCUG00000025973,POP3_MACMU_ENSMMUG00000014473,POP3_HUMAN_Q9HBV1))))),(((POP2_GASAC_ENSGACG00000001420,POP2_ORYLA_ENSORLG00000008627,POP2_TAKRU_ENSTRUG00000015933),POP2_DANRE_ENSDARG00000069922),POP2_XENTR_ENSXETG00000018064,(((POP2_TAEGU_ENSTGUG00000013383,POP2_CHICK_Q6T9Z5),POP2_ANOCA_ENSACAG00000003557),((POP2_MACEU_ENSMEUG00000015825,POP2_MONDO_ENSMODG00000018205),((POP2_RABIT_ENSOCUG00000009515,(POP2_RAT_Q6P722,POP2_MOUSE_Q9ES82)),(POP2_MACMU_ENSMMUG00000000905,POP2_HUMAN_Q9HBU9))))))[&&NHX:Ev=duplication])),((POP1_CIOSA_ENSCSAVG00000000247,POP1_CIOIN_ENSCING00000000496),((POP1_DANRE_Q5PQZ7,(POP1_ORYLA_ENSORLG00000019663,POP1_GASAC_ENSGACG00000014015,POP1_TAKRU_ENSORLG00000019663)),(POP1_XENTR_B1H1G2,(POP1_ANOCA_ENSACAG00000003910,(POP1_TAEGU_ENSTGUG00000012218,POP1_CHICK_Q9DG23)),POP1_ORNAN_ENSOANG00000004180,POP1_MONDO_ENSMODG00000018034,(POP1_RABIT_ENSOCUG00000016944,(POP1_RAT_Q3BCU4,POP1_MOUSE_Q9ES83),(POP1_HUMAN_Q8NE79,POP1_MACMU_ENSMMUG00000014471))))))[&&NHX:Ev=duplication];\",\n \"rokas\" : \"(Schizosaccharomyces pombe:0.545914,(Saitoella complicata:0.57412,((Arthrobotrys oligospora:0.539923,((Parastagonospora nodorum:0.465825,(Xylona heveae:0.272728,(Coccidioides immitis:0.254443,Aspergillus nidulans:0.266048)1:0.18207)1:0.041547)1:0.0419986,((Botrytis cinerea:0.0493876,Sclerotinia sclerotiorum:0.0433921)1:0.237364,(Neurospora crassa:0.27673,Fusarium graminearum:0.291175)1:0.153952)1:0.127477)1:0.210957)1:0.198261,(((Lipomyces suomiensis NRRL Y-17356:0.234623,Lipomyces oligophaga NRRL Y-17247:0.370846)1:0.0775974,((Lipomyces japonicus NRRL Y-17848:0.3372,Lipomyces lipofer NRRL Y-11555:0.166258)1:0.0562401,(Lipomyces doorenjongii NRRL Y-27504:0.289327,(Lipomyces kononenkoae NRRL Y-11553:0.0897564,(Lipomyces starkeyi NRRL Y-11557:0.0198789,(Lipomyces mesembrius NRRL Y-27506:0.0193032,Lipomyces arxii NRRL Y-17921:0.0198748)1:0.00839469)1:0.0452686)1:0.113493)1:0.0365204)1:0.0522388)1:0.351588,(((Trigonopsis vinaria NRRL Y-5715:0.32117,Trigonopsis variabilis NRRL Y-1579:0.36434)1:0.434566,(Botryozyma nematodophila NRRL Y-17705:0.702864,(Tortispora starmeri NRRL Y-63665:0.502464,(Tortispora caseinolytica NRRL Y-17796:0.0396928,Tortispora ganteri NRRL Y-17035:0.0458542)1:0.458583)1:0.374135)1:0.158759)1:0.0771598,((((Nadsonia fulvescens var. elongata DSM 6958:0.0202083,Nadsonia fulvescens NRRL Y-12810:0.0176171)1:0.536297,(Candida hispaniensis NRRL Y-5580:0.422522,(Yarrowia bubula NRRL Y-63668:0.0502129,(Yarrowia keelungensis JCM 14894:0.0300806,(Yarrowia lipolytica:0.0264517,(Yarrowia divulgata NRRL Y-63741:0.00987236,Yarrowia deformans JCM 1694:0.0108765)1:0.0239202)1:0.00862142)1:0.0258247)1:0.296485)1:0.408355)1:0.0777756,((Middelhovenomyces tepae NRRL Y-17670:0.443049,((Saprochaete clavata:0.309611,Magnusiomyces tetrasperma NRRL Y-7288:0.34292)1:0.186613,(Galactomyces candidus Phaff 72-186:0.207517,(Dipodascus geniculatus NRRL Y-17628:0.0852517,Dipodascus albidus NRRL Y-12859:0.0862487)1:0.229904)1:0.189193)1:0.149192)1:0.0518788,(((Deakozyma indianensis NRRL YB-1937:0.184702,Candida incommunis NRRL Y-17085:0.20747)1:0.543275,((Wickerhamiella infanticola DS02:0.528425,Wickerhamiella cacticola NRRL Y-27362:0.692381)1:0.075832,(Wickerhamiella versatilis JCM 5958:0.645274,(Wickerhamiella domercqiae:0.626221,(Candida apicola NRRL Y-50540:0.434359,Starmerella bombicola JCM 9596:0.383847)1:0.356841)1:0.0846685)1:0.155283)1:0.413088)1:0.0954418,(((Sugiyamaella lignohabitans CBS 10342:0.411366,(Diddensiella caesifluorescens NRRL Y-48781:0.336519,Spencermartinsiella europaea NRRL Y-48265:0.41893)1:0.0421993)1:0.0384646,(Groenewaldozyma salmanticensis NRRL Y-17090:0.561259,(Zygoascus meyerae NRRL Y-17319:0.366231,Zygoascus ofunaensis NRRL Y-10998:0.397239)1:0.214422)1:0.0535895)1:0.0458319,(Blastobotrys muscicola NRRL Y-7993:0.458918,((Blastobotrys mokoenaii NRRL Y-27120:0.362928,(Blastobotrys proliferans NRRL Y-17577:0.228429,Blastobotrys nivea NRRL Y-17581:0.269851)1:0.158495)1:0.079695,(Blastobotrys serpentis NRRL Y-48249:0.327946,((Blastobotrys raffinosifermentans:0.0217085,Blastobotrys adeninivorans:0.018147)1:0.222596,(Blastobotrys peoriensis NRRL YB-2290:0.169572,Blastobotrys americana NRRL Y-6844:0.161305)1:0.170868)1:0.173794)1:0.0621326)1:0.0484003)1:0.062313)1:0.0537951)1:0.0469088)1:0.0867807)1:0.0634323,((Alloascoidea hylecoeti JCM 7604:0.573891,(Sporopachydermia lactativora NRRL Y-11591:0.293628,Sporopachydermia quercuum JCM 9486:0.229415)1:0.463025)1:0.0601744,((((Ascoidea asiatica JCM 7603:0.367013,Ascoidea rubescens:0.321961)1:0.263464,(Saccharomycopsis capsularis NRRL Y-17639:0.190582,Saccharomycopsis malanga JCM 7620:0.198358)1:0.40498)1:0.163324,((Candida ponderosae NRRL YB-2307:0.38206,((Starmera quercuum NRRL YB-4281:0.250343,(Starmera amethionina NRRL Y-10978:0.208149,Candida stellimalicola NRRL Y-17912:0.200412)1:0.200109)1:0.0953975,((Wickerhamomyces ciferrii NRRL Y-1031:0.190972,Wickerhamomyces anomalus:0.135192)1:0.110022,((Wickerhamomyces hampshirensis NRRL YB-4128:0.251418,(Candida freyschussii:0.200517,((Cyberlindnera xylosilytica NRRL YB-2097:0.171593,(Cyberlindnera fabianii JCM 3601:0.173452,(Cyberlindnera petersonii NRRL YB-3808:0.146495,(Cyberlindnera americana NRRL Y-2156:0.124404,Candida mycetangii NRRL Y-6843:0.138201)1:0.021936)1:0.0555066)1:0.0255677)1:0.104307,((Cyberlindnera mrakii NRRL Y-1364:0.0362246,(Cyberlindnera saturnus NRRL Y-17396:0.0192395,Cyberlindnera suaveolens NRRL Y-17391:0.0161438)1:0.0136523)1:0.121465,((Cyberlindnera jadinii NRRL Y-1542:0.216631,Candida vartiovaarae:0.174307)1:0.0287187,(Cyberlindnera maclurae NRRL Y-5377:0.0723855,Cyberlindnera misumaiensis NRRL Y-17389:0.0590068)1:0.157678)1:0.0254444)1:0.128382)1:0.0244259)1:0.0399877)1:0.0690847,((Wickerhamomyces alni NRRL Y-11625:0.198181,(Wickerhamomyces canadensis NRRL Y-1888:0.0181265,Wickerhamomyces sp.:0.0258553)1:0.152098)1:0.104484,(Wickerhamomyces bovis NRRL YB-4184:0.238507,((Barnettozyma hawaiiensis NRRL Y-27270:0.0769162,(Barnettozyma californica NRRL Y-17395:0.0637227,Barnettozyma populi NRRL Y-12728:0.069715)1:0.012496)1:0.171001,((Barnettozyma pratensis NRRL Y-12696:0.134345,Barnettozyma salicaria NRRL Y-6780:0.201535)1:0.0253729,(Candida montana NRRL Y-17326:0.18273,((Phaffomyces thermotolerans NRRL Y-11709:0.0347558,Candida orba NRRL Y-27336:0.0268361)1:0.0450689,(Phaffomyces opuntiae NRRL Y-11707:0.0227806,Phaffomyces antillensis NRRL Y-12881:0.0381186)1:0.0503677)1:0.136412)1:0.0550969)1:0.0252933)1:0.148508)1:0.0456798)1:0.0515684)1:0.0559147)1:0.0396837)1:0.0394501)1:0.188948,(((Hanseniaspora osmophila NRRL Y-1613:0.0533805,Hanseniaspora vineae:0.0482455)1:0.375889,((Hanseniaspora singularis:0.230831,Hanseniaspora valbyensis NRRL Y-1626:0.170847)1:0.0889552,(Kloeckera hatyaiensis:0.149005,(Hanseniaspora pseudoguilliermondii:0.11701,(Hanseniaspora uvarum:0.0603265,Hanseniaspora clermontiae NRRL Y-27515:0.0811774)1:0.037012)1:0.118708)1:0.169466)1:0.805928)1:0.306057,((((Kluyveromyces aestuarii NRRL YB-4510:0.247878,(Kluyveromyces marxianus CBS6556:0.14186,(Kluyveromyces lactis NRRL Y-1140:0.0794227,Kluyveromyces dobzhanskii NRRL Y-1974:0.107991)1:0.0644926)1:0.119991)1:0.234335,((Eremothecium coryli CBS 5749:0.245286,Eremothecium sinecaudum ATCC 58844:0.262753)1:0.0575176,(Eremothecium cymbalariae DBVPG 7215:0.226178,(Eremothecium gossypii ATCC 10895:0.046311,Ashbya aceri:0.0356574)1:0.257241)1:0.0330026)1:0.17076)1:0.0607471,(Lachancea kluyveri:0.221801,((Lachancea fermentati:0.125926,Lachancea cidri:0.116386)1:0.108281,(Lachancea mirantina:0.360697,((Lachancea waltii:0.155994,(Lachancea quebecensis:0.0412753,Lachancea thermotolerans CBS 6340:0.0381374)1:0.122374)1:0.048069,(Lachancea nothofagi:0.125696,(Lachancea dasiensis:0.187333,(Lachancea meyersii CBS 8951:0.0930237,(Lachancea fantastica:0.0613265,Lachancea lanzarotensis CBS 12615:0.0662562)1:0.080869)1:0.0868343)1:0.0232028)1:0.0796876)1:0.11944)1:0.0368276)1:0.0869217)1:0.0544235)1:0.046723,(((Zygosaccharomyces rouxii CBS 732:0.143413,(Zygosaccharomyces kombuchaensis NRRL YB-4811:0.0926322,(Zygosaccharomyces bisporus NRRL Y-12626:0.083556,Zygosaccharomyces bailii:0.0939337)1:0.0304452)1:0.0574531)1:0.176842,((Zygotorulaspora florentina NRRL Y-1560:0.131232,Zygotorulaspora mrakii NRRL Y-12654:0.168677)1:0.11848,(Torulaspora microellipsoides:0.15825,(Torulaspora maleeae CBS 10694:0.172696,(Torulaspora delbrueckii:0.0799621,(Torulaspora franciscae NRRL Y-17532:0.0354865,Torulaspora pretoriensis NRRL Y-17251:0.0343667)1:0.0834631)1:0.0804511)1:0.0953121)1:0.0235795)1:0.0481102)1:0.0871222,(((Tetrapisispora blattae:0.271746,Yueomyces sinensis NRRL Y-17406:0.347888)1:0.216158,(Vanderwaltozyma polyspora:0.261306,(Tetrapisispora iriomotensis NRRL Y-27309:0.150965,(Tetrapisispora phaffii CBS 4417:0.100885,(Tetrapisispora namnaoensis NRRL Y-27982:0.0531639,Tetrapisispora fleetii NRRL Y-27350:0.0682282)1:0.0667913)1:0.0911273)1:0.204252)1:0.0968006)1:0.049682,((((Nakaseomyces bacillisporus CBS 7720:0.318907,_Candida_ castellii CBS 4332:0.44969)1:0.119593,(_Candida_ glabrata CBS 138:0.19376,(_Candida_ bracarensis CBS 10154:0.0791127,(_Candida_ nivariensis CBS 9983:0.0591139,Nakaseomyces delphensis CBS 2170:0.1071)1:0.0282267)1:0.118561)1:0.24292)1:0.043942,((Saccharomyces uvarum:0.01864,Saccharomyces eubayanus:0.0211527)1:0.0363173,(Saccharomyces arboricola:0.0587131,(Saccharomyces kudriavzevii:0.0570128,(Saccharomyces mikatae IFO 1815:0.0529368,(Saccharomyces paradoxus:0.0250749,Saccharomyces cerevisiae S288C:0.0325262)1:0.0191755)1:0.0192692)1:0.00934172)1:0.0155583)1:0.277733)1:0.0304696,((Naumovozyma dairenensis:0.244773,Naumovozyma castellii:0.223994)1:0.116605,(((Kazachstania africana CBS 2517:0.302329,Kazachstania viticola NRRL Y-27206:0.304357)1:0.0420759,((Kazachstania turicensis NRRL Y-48834:0.232443,Kazachstania kunashirensis NRRL Y-27209:0.160829)1:0.120327,(Kazachstania spencerorum NRRL Y-17920:0.238158,Kazachstania rosinii NRRL Y-17919:0.204563)1:0.0374176)1:0.0694195)1:0.0333483,((Kazachstania intestinalis NRRL Y-48847:0.427517,Kazachstania martiniae NRRL Y-409:0.262551)1:0.0379646,((Kazachstania naganishii CBS 8797:0.335856,Kazachstania bromeliacearum NRRL Y-48836:0.198593)1:0.0338563,(Kazachstania taianensis NRRL Y-48846:0.27887,((Kazachstania transvaalensis NRRL Y-17245:0.111612,Kazachstania yakushimaensis NRRL Y-48837:0.0900106)1:0.290831,(Kazachstania siamensis NRRL Y-48842:0.114965,(Kazachstania unispora NRRL Y-1556:0.0645858,(Kazachstania solicola NRRL Y-27207:0.0241196,Kazachstania aerobia NRRL Y-27976:0.0305719)1:0.0678491)1:0.059458)1:0.1733)1:0.0384928)1:0.0508605)1:0.0761265)1:0.0382292)1:0.0669668)1:0.036691)1:0.0374781)1:0.0230192)1:0.115608)1:0.127779)1:0.342113)1:0.0913588)1:0.0347262,(((Pachysolen tannophilus NRRL Y-2460:0.313751,((Peterozyma xylosa NRRL Y-12939:0.0402272,Peterozyma toletana NRRL YB-4247:0.0398928)1:0.321195,(Nakazawaea peltata JCM 9829:0.323069,Nakazawaea holstii NRRL Y-2155:0.206923)1:0.167264)1:0.0471457)1:0.163091,(((Citeromyces siamensis NRRL Y-27975:0.199314,(Citeromyces hawaiiensis NRRL Y-11581:0.0676646,Citeromyces matritensis NRRL Y-2407:0.0674657)1:0.134721)1:0.41892,(Komagataella pastoris:0.0617151,(Komagataella populi NRRL YB-455:0.0093125,Komagataella pseudopastoris NRRL Y-27603:0.00934262)1:0.0520784)1:0.548169)1:0.0572955,(Kuraishia ogatae NRRL Y-48474:0.423004,((Kuraishia capsulata:0.167402,Kuraishia molischiana NRRL Y-27899:0.174477)1:0.340405,(Candida boidinii JCM 9604:0.409104,((Ogataea methylivora NRRL Y-17250:0.262112,(Ogataea ramenticola NRRL YB-1985:0.331126,(Candida succiphila JCM 9445:0.377882,Ogataea naganishii NRRL Y-7654:0.377342)1:0.0486474)1:0.0581327)1:0.0742491,((((Ogataea nitratoaversa NRRL Y-48449:0.140695,Ogataea pilisensis NRRL Y-27598:0.121524)1:0.101152,(Candida arabinofermentans NRRL YB-2248:0.23367,(Ogataea trehalophila NRRL Y-6781:0.0634693,Ogataea methanolica JCM 10240:0.0635138)1:0.143303)1:0.0364214)1:0.0681563,((Ogataea trehaloabstinens NRRL Y-27595:0.240241,Ogataea populi-albae NRRL Y-48632:0.19583)1:0.109824,((Ogataea zsoltii NRRL Y-27601:0.106801,(Ogataea glucozyma NRRL YB-2185:0.125497,(Ogataea henricii NRRL YB-2194:0.0652918,Ogataea pini NRRL Y-11528:0.0832313)1:0.0564285)1:0.0349258)1:0.117879,((Ogataea minuta NRRL Y-411:0.0815234,Ogataea nonfermentans NRRL YB-2203:0.0649159)1:0.0858242,(Ogataea kodamae NRRL Y-17234:0.276318,(Ogataea philodendri NRRL Y-7210:0.16107,(Ogataea polymorpha NCYC 495 leu1.1:0.0237039,Ogataea parapolymorpha:0.0123489)1:0.137202)1:0.0329933)1:0.0274717)1:0.178127)1:0.0484727)1:0.0552351)1:0.0549412,((Ambrosiozyma maleeae NRRL Y-63635:0.258273,((Ambrosiozyma kashinagacola JCM 15019:0.196206,(Ambrosiozyma pseudovanderkliftii NRRL Y-63632:0.103065,Ambrosiozyma vanderkliftii NRRL Y-63633:0.0839667)1:0.0913495)1:0.0409106,(Ambrosiozyma monospora JCM 7599:0.234639,(Ambrosiozyma oregonensis NRRL Y-6106:0.0826625,(Ambrosiozyma philentoma NRRL Y-7523:0.0357081,Ambrosiozyma ambrosiae NRRL Y-7524:0.0705379)1:0.026201)1:0.130669)1:0.03731)1:0.0668046)1:0.117317,((Brettanomyces custersianus NRRL Y-6653:0.31306,(Brettanomyces anomalus:0.0854333,Brettanomyces bruxellensis CBS 2499:0.0907076)1:0.224162)1:0.282927,((Kregervanrija fluxuum NRRL YB-4273:0.0355143,Kregervanrija delftensis NRRL Y-7119:0.0311594)1:0.225534,((Martiniozyma abiesophila NRRL Y-11514:0.320478,((Saturnispora mendoncae NRRL Y-11515:0.161201,Saturnispora silvae NRRL Y-6725:0.331441)1:0.105865,(Saturnispora saitoi NRRL Y-6671:0.0911533,(Saturnispora zaruensis NRRL Y-7008:0.0580631,(Saturnispora dispora NRRL Y-1447:0.031157,(Saturnispora serradocipensis NRRL Y-48717:0.0165811,Saturnispora hagleri NRRL Y-27828:0.0129394)1:0.0233711)1:0.0308985)1:0.0776961)1:0.125167)1:0.181222)1:0.143022,((Candida sorboxylosa JCM 1536:0.372151,Pichia terricola NRRL YB-4310:0.256406)1:0.0700447,(Pichia membranifaciens KS47-1:0.213499,((Pichia heedii NRRL Y-10967:0.130518,Pichia nakasei NRRL Y-7686:0.123153)1:0.187264,((Pichia norvegensis NRRL Y-7687:0.307748,Pichia kudriavzevii:0.274245)1:0.047663,(Pichia occidentalis NRRL Y-7552:0.190823,Pichia exigua NRRL Y-10920:0.216283)1:0.0273444)1:0.0202107)1:0.0282289)1:0.0444849)1:0.151672)1:0.0978808)1:0.150478)1:0.0843851)1:0.0446598)1:0.111139)1:0.0367086)1:0.137306)1:0.0425494)1:0.0600483)1:0.0499527)1:0.103505,(Babjeviella inositovora NRRL Y-12698:0.594547,((Cephaloascus albidus:0.18956,Cephaloascus fragrans:0.210025)1:0.210658,((Candida schatavii NRRL Y-17078:0.29428,(Candida fragi NRRL Y-17910:0.0714581,Kurtzmaniella cleridarum NRRL Y-48386:0.0735961)1:0.306068)1:0.108229,(((Candida athensensis NRRL Y-27644:0.132895,(Meyerozyma guilliermondii ATCC 6260:0.0289919,(Candida carpophila JCM 9396:0.0151985,Meyerozyma caribbica:0.0185042)1:0.0206601)1:0.0934175)1:0.329014,(Candida ascalaphidarum NRRL Y-27908:0.414658,((Candida gorgasii NRRL Y-27707:0.221357,Candida tammaniensis NRRL Y-8257:0.186332)1:0.101116,(Yamadazyma scolyti NRRL Y-5512:0.270025,(Yamadazyma tenuis:0.191175,(Yamadazyma nakazawae NRRL Y-7903:0.0860963,Yamadazyma philogaea NRRL Y-7813:0.119211)1:0.13583)1:0.0698957)1:0.0621763)1:0.179539)1:0.0478873)1:0.0252656,(((Millerozyma acaciae JCM 10732:0.318905,(Debaryomyces maramus NRRL Y-2171:0.126252,(Debaryomyces nepalensis NRRL Y-7108:0.107212,(Debaryomyces hansenii:0.0420625,(Debaryomyces prosopidis NRRL Y-27369:0.0489959,(Debaryomyces subglobosus NRRL Y-6666:0.0269918,Debaryomyces fabryi NRRL Y-17914:0.0215588)1:0.00458487)1:0.0217112)1:0.0474478)1:0.0562497)1:0.0791464)1:0.0717927,((Priceomyces carsonii NRRL YB-4275:0.202197,(Priceomyces medius NRRL Y-7122:0.126528,(Priceomyces haplophilus JCM 1635:0.134127,Priceomyces castillae NRRL Y-7501:0.0664317)1:0.052666)1:0.106057)1:0.170928,(((Wickerhamia fluorescens JCM 1821:0.309207,(Teunomyces gatunensis NRRL Y-48064:0.139302,(Teunomyces cretensis NRRL Y-27777:0.0373482,Teunomyces kruisii NRRL Y-17087:0.0354532)1:0.0674172)1:0.152253)1:0.0395823,((Suhomyces pyralidae NRRL Y-27085:0.207777,(Suhomyces tanzawaensis NRRL Y-17324:0.114461,(Suhomyces canberraensis NRRL YB-2417:0.126395,Suhomyces emberorum NRRL Y-27606:0.157814)1:0.0330656)1:0.074523)1:0.0880461,(Aciculoconidium aculeatum NRRL YB-4298:0.278681,(Kodamaea laetipori NRRL Y-27713:0.166081,(Kodamaea ohmeri NRRL Y-1932:0.120016,Candida restingae NRRL Y-27358:0.122045)1:0.175941)1:0.0561324)1:0.13211)1:0.0306706)1:0.0320665,((Scheffersomyces stipitis:0.162145,Scheffersomyces lignosus JCM 9837:0.141854)1:0.103183,(((Spathaspora hagerdaliae:0.0274865,Spathaspora gorwiae UFMG-CM-Y312:0.0270552)1:0.185213,(Spathaspora passalidarum NRRL Y-27907:0.0756431,(Spathaspora arborariae:0.0863436,Spathaspora girioi:0.103206)1:0.0276678)1:0.158335)1:0.0543878,((Candida corydali NRRL Y-27910:0.321211,(Lodderomyces elongisporus:0.271322,(Candida parapsilosis:0.0662414,Candida orthopsilosis:0.0591273)1:0.173632)1:0.103296)1:0.0375885,((Candida dubliniensis CD36:0.0370067,Candida albicans WO-1:0.0309348)1:0.126495,(Candida tropicalis ATCC 200956 MY1012:0.0573369,Candida sojae GF41:0.0691758)1:0.118022)1:0.0968903)1:0.0675366)1:0.119154)1:0.0332128)1:0.0611332)1:0.0307845)1:0.0194503,(((Hyphopichia homilentoma JCM 1507:0.231014,Hyphopichia burtonii NRRL Y-1933:0.195628)1:0.0539724,(Danielozyma ontarioensis NRRL YB-1246:0.28361,(Candida gotoi NRRL Y-27225:0.0656244,(Hyphopichia heimii NRRL Y-7502:0.0226493,Candida rhagii NRRL Y-2594:0.0238606)1:0.068766)1:0.157449)1:0.0369338)1:0.0713511,((Candida heveicola NRRL Y-48716:0.134205,_Candida_ auris:0.137532)1:0.207365,(Candida oregonensis NRRL Y-5850:0.222047,(((Candida intermedia JCM 1607:0.130323,Candida blattae NRRL Y-27698:0.127583)1:0.100258,(Clavispora lusitaniae:0.147865,Clavispora fructus NRRL Y-17072:0.15848)1:0.137841)1:0.0302907,((Candida wancherniae NRRL Y-48709:0.246543,(Metschnikowia bicuspidata var. bicuspidata NRRL YB-4993:0.172847,Candida golubevii NRRL Y-48707:0.168165)1:0.0922754)1:0.0530619,(Candida hawaiiana:0.166731,(Metschnikowia kipukae UWOPS 00-669.2:0.116121,((Metschnikowia hibisci UWOPS 95-797.2:0.0472722,(Metschnikowia shivogae UWOPS 04-310.1:0.0168883,Metschnikowia aberdeeniae SUB 05-213.1:0.0146631)1:0.0315668)1:0.0981931,((Metschnikowia proteae:0.00747509,Metschnikowia drakensbergensis:0.00548386)1:0.0718813,((Metschnikowia arizonensis UWOPS 99-103.4:0.0768031,(Metschnikowia similis UWOPS 03-133.4:0.0158634,(Metschnikowia dekortorum:0.00848135,Metschnikowia bowlesiae:0.00946469)1:0.00906119)1:0.100881)1:0.019975,((Metschnikowia kamakouana UWOPS 04-112.5:0.0238126,(Metschnikowia hawaiiensis UWOPS 87-2203.2:0.0113058,(Metschnikowia hamakuensis UWOPS 04-199.1:0.0101785,Metschnikowia mauinuiana UWOPS 04-190.1:0.00865049)1:0.00277958)1:0.0283861)1:0.0126143,((Candida ipomoeae UWOPS 10-104.1:0.0100707,Metschnikowia borealis SUB 99-207.1:0.0167867)1:0.00210267,((Metschnikowia lochheadii UWOPS 99-661.1:0.00996666,(Metschnikowia matae var. matae UFMG-CM-Y391A:0.00424069,Metschnikowia matae var. maris UFMG-CM-Y397T:0.00348643)1:0.00958686)1:0.00918633,(Metschnikowia continentalis UWOPS 95-402.1:0.00666829,(Metschnikowia santaceciliae UWOPS 01-517a1:0.00622675,Metschnikowia cerradonensis:0.00638518)1:0.00224705)1:0.00605543)1:0.00228128)1:0.0140057)1:0.0477555)1:0.0216892)1:0.0216014)1:0.0448311)1:0.0790685)1:0.148907)1:0.104645)1:0.0330591)1:0.0346064)1:0.191308)1:0.0501198)1:0.0235663)1:0.0497414)1:0.249136)1:0.0750128)1:0.0732652)1:0.049717)1:0.219066)1:0.165959)1:0.126267)1:0.0731174)1:0.168976)1:0.15046)1:0.545914);\",\n \"r2t\" : \"(Schizosaccharomyces pombe:0.126204,(Saitoella complicata:0.0885746,((Arthrobotrys oligospora:0.0619566,(((Botrytis cinerea:0.0159599,Sclerotinia sclerotiorum:0.0144928)100:0.0963903,(Fusarium graminearum:0.0510591,(Neurospora crassa:0.0739745,Thermothelomyces heterothallicus:0.0683393)100:0.0362615)100:0.0584987)100:0.0447412,(((Zymoseptoria tritici:0.0711361,Passalora fulva:0.0715012)100:0.0977923,(Curvularia lunata:0.0396482,Parastagonospora nodorum:0.0402995)100:0.0997238)100:0.0445184,(Xylona heveae:0.0827906,(Coccidioides immitis:0.084686,(Aspergillus glaucus:0.0668904,(Aspergillus nidulans:0.0401227,Aspergillus oryzae:0.0447877)100:0.0146822)100:0.0489525)100:0.0540695)100:0.0225032)100:0.0234296)97:0.0417394)100:0.0878736,((Lipomyces japonicus NRRL Y-17848:0.083055,((Lipomyces suomiensis NRRL Y-17356:0.063608,Lipomyces oligophaga NRRL Y-17247:0.0762265)100:0.0217226,(Lipomyces doorenjongii NRRL Y-27504:0.0786482,(Lipomyces lipofer NRRL Y-11555:0.0650201,(Lipomyces kononenkoae NRRL Y-11553:0.0459803,((Lipomyces starkeyi NRRL Y-11557:0.00681505,Lipomyces starkeyi:0.00528117)100:0.0119879,(Lipomyces mesembrius NRRL Y-27506:0.0232923,Lipomyces arxii NRRL Y-17921:0.0349869)100:0.00929258)100:0.0178152)100:0.0224125)100:0.0117255)100:0.0112742)100:0.0161427)100:0.0443967,(((Trigonopsis variabilis NRRL Y-1579:0.0918385,Trigonopsis vinaria NRRL Y-5715:0.0778916)100:0.0634075,(Botryozyma nematodophila NRRL Y-17705:0.126145,(Tortispora starmeri NRRL Y-63665:0.0822969,(Tortispora caseinolytica NRRL Y-17796:0.0293182,Tortispora ganteri NRRL Y-17035:0.0348557)100:0.0511304)100:0.0413347)100:0.0281241)100:0.0197302,(((Middelhovenomyces tepae NRRL Y-17670:0.111319,((Galactomyces candidus Phaff 72-186:0.0669059,(Dipodascus geniculatus NRRL Y-17628:0.0585418,Dipodascus albidus NRRL Y-12859:0.0802071)100:0.032647)100:0.0352005,((Saprochaete clavata:0.0573717,(Magnusiomyces capitatus:0.0225681,Magnusiomyces capitatus:0.00343673)100:0.0266914)100:0.0426538,(Magnusiomyces tetrasperma NRRL Y-7288:0.0909393,(Magnusiomyces ingens:0.00426038,Magnusiomyces ingens:0.00454468)100:0.0594328)100:0.0145665)100:0.037234)100:0.0271195)100:0.0160277,(((Candida incommunis NRRL Y-17085:0.0714356,Deakozyma indianensis NRRL YB-1937:0.0665043)100:0.0862172,((Wickerhamiella infanticola DS02:0.112297,Wickerhamiella cacticola NRRL Y-27362:0.121855)100:0.0593741,(Candida hispaniensis NRRL Y-5580:0.0908408,((Yarrowia sp. JCM 30694:0.00421429,Yarrowia bubula NRRL Y-63668:0.0066085)100:0.0141797,((Yarrowia deformans JCM 1694:0.00474947,Yarrowia divulgata NRRL Y-63741:0.00788674)100:0.00896605,(Yarrowia lipolytica:0.00855678,(Yarrowia sp. JCM 30696:0.00457866,(Yarrowia sp. JCM 30695:0.00109815,Yarrowia keelungensis JCM 14894:0.000746909)100:0.00339822)100:0.00776074)100:0.0030877)100:0.00797457)100:0.0687327)100:0.084079)99:0.0269638)99:0.0226604,(((Groenewaldozyma salmanticensis NRRL Y-17090:0.11507,(Zygoascus ofunaensis NRRL Y-10998:0.0905002,(Zygoascus hellenicus NRRL Y-7136:0.0177705,Zygoascus meyerae NRRL Y-17319:0.033743)100:0.0524429)100:0.0360027)100:0.0174588,((Spencermartinsiella europaea NRRL Y-48265:0.0911582,Diddensiella caesifluorescens NRRL Y-48781:0.0884185)100:0.0161105,(Sugiyamaella valdiviana:0.0815797,(Sugiyamaella americana NRRL YB-2067:0.0856077,Sugiyamaella lignohabitans CBS 10342:0.0351246)100:0.0195916)100:0.0261745)100:0.0136807)100:0.0169933,(Blastobotrys muscicola NRRL Y-7993:0.11487,((Blastobotrys mokoenaii NRRL Y-27120:0.0956722,(Blastobotrys attinorum Y-27639:0.0521706,(Blastobotrys nivea NRRL Y-17581:0.0858854,Blastobotrys proliferans NRRL Y-17577:0.0888617)100:0.0122257)100:0.014012)100:0.0192743,(Blastobotrys serpentis NRRL Y-48249:0.10963,((Blastobotrys americana NRRL Y-6844:0.0632957,Blastobotrys peoriensis NRRL YB-2290:0.056484)100:0.0312416,(Blastobotrys adeninivorans:0.0201089,Blastobotrys raffinosifermentans:0.016445)100:0.0638897)100:0.0369131)100:0.0165191)100:0.0160658)100:0.0187613)100:0.0218206)99:0.0218424)99:0.0323467,((Nadsonia fulvescens NRRL Y-12810:0.0431276,Nadsonia fulvescens var. elongata DSM 6958:0.0290928)100:0.100074,((Alloascoidea hylecoeti JCM 7604:0.142779,(Sporopachydermia lactativora NRRL Y-11591:0.0716173,Sporopachydermia quercuum JCM 9486:0.060207)100:0.0533148)77:0.0184655,(((Ascoidea asiatica JCM 7603:0.0909876,Ascoidea rubescens:0.0923764)100:0.0555868,(Saccharomycopsis fermentans NRRL Y-17710:0.0670507,(Saccharomycopsis malanga JCM 7620:0.0537866,Saccharomycopsis capsularis NRRL Y-17639:0.0726377)100:0.0293327)100:0.0505221)100:0.0351169,((((Candida ponderosae NRRL YB-2307:0.116821,(Starmera quercuum NRRL YB-4281:0.0867524,(Candida stellimalicola NRRL Y-17912:0.0710683,Starmera amethionina NRRL Y-10978:0.0660149)100:0.038032)100:0.024918)91:0.0146313,((Wickerhamomyces anomalus:0.0497049,Wickerhamomyces ciferrii NRRL Y-1031:0.0512548)100:0.0264792,(((Wickerhamomyces alni NRRL Y-11625:0.0754478,(Wickerhamiella azyma NRRL Y-17067:0.0310146,Wickerhamomyces canadensis NRRL Y-1888:0.0326725)100:0.0453877)100:0.0288606,(Wickerhamomyces bovis NRRL YB-4184:0.083978,((Barnettozyma hawaiiensis NRRL Y-27270:0.0506112,(Barnettozyma populi NRRL Y-12728:0.0521714,Barnettozyma californica NRRL Y-17395:0.0407995)100:0.00921085)100:0.0371517,((Barnettozyma pratensis NRRL Y-12696:0.0622423,Barnettozyma salicaria NRRL Y-6780:0.069559)100:0.0123131,(Candida montana NRRL Y-17326:0.0751889,((Candida orba NRRL Y-27336:0.0339559,Phaffomyces thermotolerans NRRL Y-11709:0.0339438)100:0.0210789,(Phaffomyces antillensis NRRL Y-12881:0.0392326,Phaffomyces opuntiae NRRL Y-11707:0.0320823)100:0.0209823)100:0.0419267)100:0.0220956)100:0.0105821)100:0.0313017)100:0.0153705)100:0.0180182,((Wickerhamomyces hampshirensis NRRL YB-4128:0.0842166,Candida freyschussii:0.0702627)100:0.0145882,(((Cyberlindnera xylosilytica NRRL YB-2097:0.0615196,Cyberlindnera fabianii JCM 3601:0.0530417)100:0.011541,(Cyberlindnera petersonii NRRL YB-3808:0.0626946,(Candida mycetangii NRRL Y-6843:0.0582128,Cyberlindnera americana NRRL Y-2156:0.0598929)100:0.0114685)100:0.0159979)100:0.0264469,((Cyberlindnera maclurae NRRL Y-5377:0.0526604,Cyberlindnera misumaiensis NRRL Y-17389:0.0442506)100:0.0440499,(Cyberlindnera jadinii NRRL Y-1542:0.0725383,(Candida vartiovaarae:0.0625927,(Cyberlindnera mrakii NRRL Y-1364:0.0367754,(Cyberlindnera saturnus NRRL Y-17396:0.0287399,Cyberlindnera suaveolens NRRL Y-17391:0.0232996)100:0.0160669)100:0.0292767)100:0.0102841)100:0.0092162)100:0.0263359)100:0.0154825)100:0.0219838)100:0.0164339)95:0.0119649)100:0.0468189,((Saccharomycodes ludwigii UTAD17:0.114355,((Hanseniaspora vineae:0.0341913,Hanseniaspora osmophila NRRL Y-1613:0.0381317)100:0.0685352,((Hanseniaspora singularis:0.0663886,Hanseniaspora valbyensis NRRL Y-1626:0.0517474)100:0.0155812,(Kloeckera hatyaiensis:0.0523116,(Hanseniaspora pseudoguilliermondii:0.0562921,(Hanseniaspora uvarum:0.0346921,Hanseniaspora clermontiae NRRL Y-27515:0.0475276)100:0.0145255)100:0.0211695)100:0.0279143)100:0.114557)100:0.0384264)100:0.0348094,(((((Eremothecium cymbalariae DBVPG 7215:0.0482528,Eremothecium gossypii ATCC 10895:0.0869488)100:0.0173328,(Eremothecium sinecaudum ATCC 58844:0.0547745,Eremothecium coryli CBS 5749:0.0443996)55:0.00927931)100:0.0479904,(Kluyveromyces aestuarii NRRL YB-4510:0.0661155,(Kluyveromyces marxianus CBS6556:0.0381194,(Kluyveromyces dobzhanskii NRRL Y-1974:0.0402393,Kluyveromyces lactis NRRL Y-1140:0.0242856)100:0.0197354)100:0.0335599)100:0.051824)100:0.0229944,(Lachancea kluyveri:0.0625351,((Lachancea cidri:0.185105,Lachancea mirantina:0.119783)99:0.0288772,((Lachancea dasiensis:0.1214,(Lachancea waltii:0.00819208,(Lachancea meyersii CBS 8951:0.183661,Lachancea nothofagi:0.158248)92:0.0175256)35:0.000265047)81:0.0265036,(Lachancea lanzarotensis CBS 12615:0.0483696,(Lachancea quebecensis:0.0129892,(Lachancea thermotolerans CBS 6340:0.00142213,Lachancea thermotolerans:0.00168073)100:0.00945148)100:0.0453357)95:0.0251145)61:0.0240587)100:0.0154712)100:0.0115994)100:0.0190621,((((Zygosaccharomyces kombuchaensis NRRL YB-4811:0.046758,(Zygosaccharomyces bisporus NRRL Y-12626:0.0360355,Zygosaccharomyces bailii:0.0398601)100:0.0121151)100:0.0202831,(Zygosaccharomyces sapae:0.0121896,(Zygosaccharomyces rouxii v1:0.00340107,Zygosaccharomyces rouxii:0.00320738)100:0.00810975)100:0.0509075)100:0.0714314,((Torulaspora microellipsoides:0.0475723,(Zygotorulaspora florentina NRRL Y-1560:0.0483917,Zygotorulaspora mrakii NRRL Y-12654:0.055265)100:0.0283279)99:0.00902968,(Torulaspora maleeae CBS 10694:0.052034,(Torulaspora delbrueckii:0.0233883,(Torulaspora franciscae NRRL Y-17532:0.0262398,Torulaspora pretoriensis NRRL Y-17251:0.0244877)100:0.0186046)100:0.018761)100:0.0240214)100:0.0161415)100:0.0295256,(((Tetrapisispora blattae:0.0525052,Yueomyces sinensis NRRL Y-17406:0.099179)100:0.0421829,(Vanderwaltozyma polyspora:0.0729678,(Tetrapisispora iriomotensis NRRL Y-27309:0.0560405,(Tetrapisispora phaffii CBS 4417:0.0338951,(Tetrapisispora fleetii NRRL Y-27350:0.0348304,Tetrapisispora namnaoensis NRRL Y-27982:0.0327815)100:0.0179)100:0.0198241)100:0.048753)100:0.0314575)100:0.0246669,((Naumovozyma castellii:0.0505552,(((Kazachstania africana CBS 2517:0.0646844,(Kazachstania viticola NRRL Y-27206:0.0759366,Kazachstania martiniae NRRL Y-409:0.0521419)100:0.0130001)97:0.0077118,((Kazachstania rosinii NRRL Y-17919:0.0596281,Kazachstania spencerorum NRRL Y-17920:0.0768462)100:0.0126981,(Kazachstania turicensis NRRL Y-48834:0.0431203,Kazachstania kunashirensis NRRL Y-27209:0.0559373)100:0.0293573)100:0.0207873)97:0.0114597,(Kazachstania intestinalis NRRL Y-48847:0.0833165,(Kazachstania bromeliacearum NRRL Y-48836:0.079683,((Kazachstania taianensis NRRL Y-48846:0.078128,Kazachstania naganishii CBS 8797:0.0939904)100:0.0218932,((Kazachstania yakushimaensis NRRL Y-48837:0.0243461,Kazachstania transvaalensis NRRL Y-17245:0.0430026)100:0.0585229,(Kazachstania siamensis NRRL Y-48842:0.0457349,(Kazachstania unispora NRRL Y-1556:0.0380544,(Kazachstania solicola NRRL Y-27207:0.0275766,Kazachstania aerobia NRRL Y-27976:0.0259698)100:0.024771)100:0.0190303)100:0.0346524)100:0.0155365)100:0.010997)100:0.0149155)97:0.0121949)100:0.0163685)100:0.0115806,(((Nakaseomyces bacillisporus CBS 7720:0.0602697,_Candida_ castellii CBS 4332:0.0552284)100:0.0196278,(_Candida_ glabrata CBS 138:0.0400934,(_Candida_ bracarensis CBS 10154:0.0249734,(_Candida_ nivariensis CBS 9983:0.0220311,Nakaseomyces delphensis CBS 2170:0.029392)100:0.00532474)100:0.016744)100:0.0575278)100:0.0195602,(Lachancea fermentati:0.180518,(((Saccharomyces bayanus NBRC1948:0.00599558,(Saccharomyces eubayanus:0.0311309,(Saccharomyces pastorianus CBS 1503:0.0081642,Saccharomyces pastorianus CBS 1513:0.0041158)100:0.00354016)100:0.00386148)100:0.0060333,(Candida norvegica:0.0339226,(Saccharomyces bayanus CBS 7001:0.0182511,(Saccharomyces bayanus 623-6C CBS 7001:0.00237523,Saccharomyces uvarum:0.00363307)100:0.00208439)100:0.00457913)100:0.00367531)100:0.0171416,(Saccharomyces arboricola:0.0257175,(Saccharomyces kudriavzevii:0.0231824,((Saccharomyces jurei:0.00897546,(Saccharomyces mikatae IFO 1815:0.00132382,Saccharomyces mikatae:0.00400149)100:0.00689138)100:0.0136218,(Saccharomyces cerevisiae x Saccharomyces kudriavzevii x Saccharomyces uvarum CBS 2834:0.00682362,(Saccharomyces cerevisiae x Saccharomyces kudriavzevii:0.00517659,((Saccharomyces cerevisiae x Saccharomyces eubayanus Hybrid H1:0.00776694,(Saccharomyces pastorianus VTT A-63015:0.00325668,Saccharomyces pastorianus Weihenstephan 34/70:0.0116326)100:0.00241464)100:0.0019361,((Saccharomyces cerevisiae Vin13:0.00163674,((Saccharomyces cerevisiae x Saccharomyces mikatae:0.00797371,(Saccharomyces cerevisiae FostersO:0.00307742,(Saccharomyces paradoxus:0.0129436,Saccharomyces cerevisiae x Saccharomyces paradoxus DBVPG1373xZ1:0.00341844)100:0.00492533)99:0.00226386)88:0.000728143,(Ogataea polymorpha RB11:0.000245516,((Candida tropicalis CBS 94:0.000399229,Ogataea polymorpha CBS 4732:0.000452355)100:0.000174036,((Zygosaccharomyces rouxii CBS 732:0.000356679,Lachancea thermotolerans CBS 6340:0.000527001)87:0.000158257,(Millerozyma farinosa CBS 7064:0.000250795,(Kluyveromyces marxianus CBS 712:0.000321026,(Saccharomyces cerevisiae S288C:0.000481844,Saccharomyces cerevisiae AWRI796:0.00294417)100:0.000752871)98:0.000129624)100:0.000812457)79:6.41111e-05)78:0.000115355)100:0.00113339)88:0.000426612)88:0.000745475,(Candida gropengiesseri:0.00398597,(Candida batistae:0.00191938,((Wickerhamiella domercqiae:0.0731683,Wickerhamiella versatilis JCM 5958:0.0917899)100:0.0201985,((Candida stellata:0.0447414,(Candida davenportii:0.0883913,Starmerella bacillaris NP2:0.0706162)100:0.0389893)100:0.0266105,((Starmerella bombicola JCM 9596:0.085771,(Candida bombi:0.0676886,Candida apicola NRRL Y-50540:0.0505998)100:0.0206182)100:0.0320175,(Candida geochares:0.0607001,(Candida sorbosivorans:0.0414339,(Wickerhamiella galacta:0.00713286,Candida magnoliae:0.0215597)100:0.016667)100:0.00941328)100:0.0286677)100:0.0198253)100:0.0223772)100:0.106092)100:0.00330585)100:0.00340044)88:0.000881557)94:0.0026942)94:0.00647231)94:0.00702113)100:0.00371471)100:0.00556456)100:0.00752715)100:0.0530619)100:0.0292997)100:0.015258)100:0.0168147)100:0.0146565)100:0.0355872)100:0.027864)100:0.102054)100:0.0402833,(((Pachysolen tannophilus NRRL Y-2460:0.0808212,((Peterozyma xylosa NRRL Y-12939:0.0413235,Peterozyma toletana NRRL YB-4247:0.0363934)100:0.079557,(Nakazawaea peltata JCM 9829:0.0790579,(Nakazawaea holstii NRRL Y-2155:0.076221,Nakazawaea wickerhamii NRRL Y-2563:0.0830923)100:0.0236035)100:0.0313818)100:0.0167062)100:0.0309597,(((Citeromyces siamensis NRRL Y-27975:0.0596415,(Citeromyces hawaiiensis NRRL Y-11581:0.0404304,Citeromyces matritensis NRRL Y-2407:0.0405154)100:0.0300409)100:0.0722959,((Komagataella populi NRRL YB-455:0.00452192,Komagataella pseudopastoris NRRL Y-27603:0.00450592)100:0.0174026,(Komagataella pastoris:0.00889631,(Komagataella phaffii:0.000148318,(Komagataella phaffii GS115:4.69073e-05,Komagataella phaffii:0.000106001)100:7.7985e-05)100:0.00811704)100:0.0144677)100:0.140854)100:0.0285972,((Kuraishia ogatae NRRL Y-48474:0.0914258,(Kuraishia molischiana NRRL Y-27899:0.0581477,Kuraishia capsulata:0.0467181)100:0.0478643)100:0.0195164,(Candida boidinii JCM 9604:0.110969,(((Candida succiphila JCM 9445:0.0886966,Ogataea naganishii NRRL Y-7654:0.0959386)100:0.0167412,(Ogataea methylivora NRRL Y-17250:0.0855903,Ogataea ramenticola NRRL YB-1985:0.0987928)100:0.0178331)100:0.0227408,((((Ogataea pilisensis NRRL Y-27598:0.066275,Ogataea nitratoaversa NRRL Y-48449:0.0642773)100:0.028961,(Candida arabinofermentans NRRL YB-2248:0.0849656,(Ogataea trehalophila NRRL Y-6781:0.0487782,Ogataea methanolica JCM 10240:0.0493589)100:0.0293327)100:0.0140467)100:0.0279201,(Ogataea trehaloabstinens NRRL Y-27595:0.099808,((Ogataea zsoltii NRRL Y-27601:0.0533496,(Ogataea glucozyma NRRL YB-2185:0.0502725,(Ogataea henricii NRRL YB-2194:0.0474431,(Ogataea pini NRRL Y-11528:0.000173811,Ogataea populi-albae NRRL Y-48632:0.000238677)100:0.0473245)100:0.0117949)100:0.010016)100:0.0313845,((Ogataea nonfermentans NRRL YB-2203:0.0463412,Ogataea minuta NRRL Y-411:0.0528823)100:0.0269107,(Ogataea philodendri NRRL Y-7210:0.0685447,(Ogataea kodamae NRRL Y-17234:0.0684285,(Ogataea parapolymorpha:0.019301,(Ogataea angusta:0.00598477,Ogataea polymorpha NCYC 495 leu1.1:0.000116775)100:0.00806111)100:0.0330794)100:0.0111215)100:0.0117704)100:0.0279163)100:0.0145388)100:0.0167219)100:0.0177219,((Ambrosiozyma maleeae NRRL Y-63635:0.0833518,((Ambrosiozyma kashinagacola JCM 15019:0.0693266,(Ambrosiozyma pseudovanderkliftii NRRL Y-63632:0.0577148,Ambrosiozyma vanderkliftii NRRL Y-63633:0.0566447)100:0.0243184)100:0.0165422,(Ambrosiozyma monospora JCM 7599:0.0768011,(Ambrosiozyma oregonensis NRRL Y-6106:0.0577061,(Ambrosiozyma philentoma NRRL Y-7523:0.0407241,Ambrosiozyma ambrosiae NRRL Y-7524:0.058601)95:0.0150731)100:0.0404117)100:0.0150307)100:0.0199196)100:0.0274069,((Candida sp. JCM 15000:0.0941246,(Brettanomyces custersianus NRRL Y-6653:0.086231,(Brettanomyces anomalus:0.0318015,(Brettanomyces bruxellensis:0.000593528,(Brettanomyces bruxellensis CBS 2499:0.00109505,Brettanomyces bruxellensis:0.00264587)100:0.000384652)100:0.0247517)100:0.0615694)100:0.0521429)100:0.0778521,((Kregervanrija fluxuum NRRL YB-4273:0.0374345,Kregervanrija delftensis NRRL Y-7119:0.0405164)100:0.0638635,((Martiniozyma abiesophila NRRL Y-11514:0.109633,((Saturnispora silvae NRRL Y-6725:0.0831621,Saturnispora mendoncae NRRL Y-11515:0.067902)100:0.0265947,(Saturnispora saitoi NRRL Y-6671:0.0588065,(Saturnispora zaruensis NRRL Y-7008:0.0528894,(Saturnispora dispora NRRL Y-1447:0.0370446,(Saturnispora hagleri NRRL Y-27828:0.0255079,Saturnispora serradocipensis NRRL Y-48717:0.0340521)100:0.0169599)100:0.0125902)100:0.0247621)100:0.0299834)100:0.0367605)100:0.0308369,((Pichia terricola NRRL YB-4310:0.074898,Candida sorboxylosa JCM 1536:0.0758895)100:0.0245451,((Candida californica:0.0648764,(Pichia membranifaciens NRRL Y-2026:0.0243445,Pichia membranifaciens KS47-1:0.0209896)100:0.0311224)59:0.0177483,((Pichia norvegensis NRRL Y-7687:0.0887783,Pichia kudriavzevii:0.082125)100:0.0177134,((Pichia nakasei NRRL Y-7686:0.067107,Pichia heedii NRRL Y-10967:0.0588032)100:0.0369725,(Pichia occidentalis NRRL Y-7552:0.0675481,Pichia exigua NRRL Y-10920:0.0755201)59:0.0151337)59:0.0107938)59:0.0109712)100:0.0124365)100:0.0326334)100:0.0231644)100:0.0331026)100:0.0335554)100:0.0176088)100:0.0289504)99:0.0137276)100:0.034821)100:0.0193198)100:0.0237829)100:0.0278153,(Babjeviella inositovora NRRL Y-12698:0.0830192,((Cephaloascus fragrans:0.0569461,Cephaloascus albidus:0.0718853)100:0.0346833,((Candida schatavii NRRL Y-17078:0.091576,(Candida fragi NRRL Y-17910:0.0453009,Kurtzmaniella cleridarum NRRL Y-48386:0.0568199)100:0.0648921)100:0.0253452,((((Candida ascalaphidarum NRRL Y-27908:0.098612,Diutina catenulata:0.148142)95:0.0200365,(Candida athensensis NRRL Y-27644:0.0392514,((Meyerozyma guilliermondii:0.000908622,Meyerozyma guilliermondii ATCC 6260:0.00309795)100:0.0101255,(Meyerozyma caribbica:0.009389,Candida carpophila JCM 9396:0.00717367)100:0.00816186)100:0.0269725)100:0.0762289)92:0.0167428,((Candida tammaniensis NRRL Y-8257:0.0674796,Candida gorgasii NRRL Y-27707:0.0694565)100:0.0285249,(Yamadazyma scolyti NRRL Y-5512:0.0774375,(Candida aaseri SH-14:0.0654444,((Yamadazyma laniorum yHMH7:0.0417828,Yamadazyma tenuis:0.0402424)100:0.0282539,(Yamadazyma nakazawae NRRL Y-7903:0.0408872,Yamadazyma philogaea NRRL Y-7813:0.0504395)100:0.0356588)100:0.0194215)100:0.0124815)100:0.0205036)100:0.0585866)77:0.0121471,(((Priceomyces carsonii NRRL YB-4275:0.0773801,(Priceomyces medius NRRL Y-7122:0.0599315,(Priceomyces castillae NRRL Y-7501:0.0479101,Priceomyces haplophilus JCM 1635:0.0517119)100:0.0177603)100:0.0293383)100:0.0429337,(Millerozyma acaciae JCM 10732:0.0740945,(Debaryomyces maramus NRRL Y-2171:0.0742901,((Debaryomyces hansenii:0.0094309,Debaryomyces tyrocola:0.00741868)100:0.0123071,(Debaryomyces fabryi NRRL Y-17914:0.0115779,(Debaryomyces hansenii J6:0.00478424,(Debaryomyces subglobosus NRRL Y-6666:0.00307223,(Debaryomyces prosopidis NRRL Y-27369:0.0266364,Debaryomyces nepalensis NRRL Y-7108:0.0590941)100:0.0214071)100:0.0162527)100:0.0127128)100:0.00837282)100:0.0302908)100:0.0281444)100:0.0204554)98:0.014532,((((Wickerhamia fluorescens JCM 1821:0.0804346,(Teunomyces gatunensis NRRL Y-48064:0.0543253,(Teunomyces kruisii NRRL Y-17087:0.0250798,Teunomyces cretensis NRRL Y-27777:0.0295176)100:0.0240266)100:0.0384231)100:0.0131621,((Aciculoconidium aculeatum NRRL YB-4298:0.0837536,(Kodamaea laetipori NRRL Y-27713:0.0636316,(Kodamaea ohmeri NRRL Y-1932:0.0490485,Candida restingae NRRL Y-27358:0.0479262)100:0.0351338)100:0.0169767)100:0.0342227,(Suhomyces pyralidae NRRL Y-27085:0.0720593,((Suhomyces canberraensis NRRL YB-2417:0.0513793,Suhomyces emberorum NRRL Y-27606:0.0573297)100:0.013494,(Suhomyces tanzawaensis:0.000172874,Suhomyces tanzawaensis NRRL Y-17324:0.000124577)100:0.0429432)100:0.0187886)100:0.0236942)100:0.0114544)100:0.012213,(((Scheffersomyces lignosus JCM 9837:0.0282656,Scheffersomyces shehatae ATY839:0.0176242)100:0.034077,(Scheffersomyces stipitis:0.000518897,Scheffersomyces stipitis NRRL Y-7124:0.00119922)100:0.0475992)100:0.0326218,(((Spathaspora gorwiae UFMG-CM-Y312:0.0172059,Spathaspora sp.:0.017776)100:0.0470127,(Spathaspora arborariae:0.0407776,(Spathaspora sp.:0.0365321,(Spathaspora passalidarum NRRL Y-27907:0.000681504,(Spathaspora passalidarum:0.00100702,Spathaspora passalidarum:0.000326132)100:0.00040554)100:0.0255792)100:0.0120683)100:0.040913)100:0.0204885,((Candida corydali NRRL Y-27910:0.0859408,(Lodderomyces elongisporus:0.0706966,(Candida metapsilosis:0.0259618,(Candida orthopsilosis:0.0216995,Candida parapsilosis:0.0233949)100:0.00841778)100:0.0372902)100:0.0291739)100:0.0147675,((Candida sojae GF41:0.0310027,Candida tropicalis ATCC 200956 MY1012:0.0110004)100:0.0223129,(Candida dubliniensis CD36:0.0709642,(Naumovozyma dairenensis:0.00144647,(Candida albicans WO-1:0.00123288,Candida albicans:0.00103971)100:0.000641177)100:0.0102161)100:0.0290815)100:0.0324332)100:0.0267713)100:0.0394725)95:0.0128346)95:0.02227,(((Hyphopichia homilentoma JCM 1507:0.0587536,Hyphopichia burtonii NRRL Y-1933:0.0713047)100:0.016959,(Danielozyma ontarioensis NRRL YB-1246:0.0873366,(Candida gotoi NRRL Y-27225:0.0455032,(Candida rhagii NRRL Y-2594:0.0222124,Hyphopichia heimii NRRL Y-7502:0.0224423)100:0.0230844)100:0.0392466)100:0.0145792)100:0.0209346,((_Candida_ auris:0.0455892,(Candida heveicola NRRL Y-48716:0.0410977,Candida pseudohaemulonis B12108:0.0394728)100:0.0226688)100:0.0469312,((Candida oregonensis NRRL Y-5850:0.0865896,((Candida intermedia JCM 1607:0.042487,Candida blattae NRRL Y-27698:0.0530799)100:0.0238467,(Clavispora fructus NRRL Y-17072:0.0576833,Clavispora lusitaniae:0.0491396)100:0.0272481)100:0.0102521)96:0.0107527,(Metschnikowia bicuspidata:0.104942,((Candida wancherniae NRRL Y-48709:0.0784867,(Candida golubevii NRRL Y-48707:0.0554815,(Metschnikowia bicuspidata var. bicuspidata NRRL YB-4993:0.0413189,(Metschnikowia fructicola:0.0157945,Metschnikowia fructicola:0.0148367)100:0.0299732)100:0.0118293)100:0.0209009)100:0.0131789,((Metschnikowia drosophilae UWOPS83-1135.3:0.021045,Candida torresii CBS 5152:0.0230134)100:0.0543554,((Metschnikowia orientalis UWOPS99-745.6:0.0433538,Candida hawaiiana:0.0375214)100:0.0152737,(Metschnikowia sp. M2Y3 EBD-CdV M2Y3:0.0331658,((Metschnikowia kipukae UWOPS 00-669.2:0.0297972,(Metschnikowia hibisci UWOPS 95-797.2:0.0265758,(Metschnikowia aberdeeniae SUB 05-213.1:0.0117725,Metschnikowia shivogae UWOPS 04-310.1:0.0110661)100:0.0119074)100:0.015541)58:0.00570717,((Metschnikowia proteae:0.0057267,Metschnikowia drakensbergensis:0.0055943)100:0.0241508,(((Metschnikowia arizonensis UWOPS 99-103.4:0.0370555,Metschnikowia colocasiae UWOPS 03-202.1:0.0171738)93:0.00452229,(Metschnikowia sp. 03-147.1 UWOPS 03-147.1:0.0208946,(Metschnikowia similis UWOPS 03-133.4:0.0111303,(Metschnikowia dekortorum:0.00697665,Metschnikowia bowlesiae:0.00921332)100:0.00571605)100:0.023746)93:0.00417948)100:0.00628612,((Metschnikowia hawaiiensis UWOPS 87-2203.2:0.0301812,Metschnikowia sp. 04-218.3 UWOPS 04-218.3:0.0150044)100:0.0108385,((Metschnikowia lochheadii UWOPS 99-661.1:0.00971309,(Metschnikowia matae var. matae UFMG-CM-Y391A:0.00687815,Metschnikowia matae var. maris UFMG-CM-Y397T:0.00685245)100:0.00661365)100:0.00543424,((Metschnikowia sp. 04-226.1 UWOPS 04-226.1:0.00877917,(Metschnikowia continentalis UWOPS 95-402.1:0.00829922,(Metschnikowia santaceciliae UWOPS 01-517a1:0.00694966,Metschnikowia cerradonensis:0.00643801)100:0.0022256)100:0.00393078)100:0.00346672,((Metschnikowia cubensis MUCL 45751:0.0116299,Metschnikowia sp. 01-655c1 UWOPS 01-655c1:0.010726)100:0.00475537,(Candida ipomoeae UWOPS 10-104.1:0.0120555,(Metschnikowia borealis SUB 99-207.1:0.00434673,Metschnikowia sp. 13-106.1 UWOPS 13-106.1:0.0046889)100:0.0079509)100:0.00239546)100:0.00300571)100:0.00344102)100:0.00898957)100:0.0120361)100:0.00782286)100:0.00621084)58:0.0061066)100:0.0152811)100:0.0320067)56:0.00960016)100:0.0151264)100:0.014359)99:0.0138301)100:0.0445971)100:0.014915)94:0.00905625)92:0.0102603)100:0.0178837)100:0.0562855)100:0.0243772)100:0.0198609)100:0.0259199)57:0.0176658)100:0.0501942)100:0.045588)99:0.0241612)100:0.0456527)100:0.0313927)100:0.0580377)100:0.0449143)1:0.126204);\",\n \"LRF1\" : \"((((((((((((((((((TP53_AmelENSAMEP00000017825:0.0263[&&NHX:D=N:T=9646],TP53_MpfuENSMPUP00000008945:0.066538[&&NHX:D=N:T=9669])speciation:0.032561[&&NHX:D=N:B=99:T=379584:DD=],TP53_CfamENSCAFP00000024579:0.086484[&&NHX:D=N:T=9615])speciation:0.034068[&&NHX:D=N:B=81:T=379584:DD=],TP53_FcatENSFCAP00000008925:0.06619[&&NHX:D=N:T=9685])speciation:0.025911[&&NHX:D=N:B=31:T=33554:DD=],TP53_EcabENSECAP00000006210:0.04971[&&NHX:D=N:T=9796])speciation:0.01224[&&NHX:D=N:T=314145:B=17:DD=],(((TP53_BtauENSBTAP00000001420:0.043108[&&NHX:D=N:T=9913],TP53_OariENSOARP00000016707:0.049064[&&NHX:D=N:T=9940])speciation:0.055294[&&NHX:D=N:B=98:T=9895:DD=],TP53_TtruENSTTRP00000009721:0.022529[&&NHX:D=N:T=9739])speciation:0.022515[&&NHX:D=N:T=91561:B=39:DD=],TP53_SscrENSSSCP00000019016:0.065797[&&NHX:D=N:T=9823])speciation:0.020972[&&NHX:D=N:T=91561:B=35:DD=])speciation:0.006996[&&NHX:D=N:B=9:T=314145:DD=],TP53_SaraENSSARP00000005616:0.149927[&&NHX:D=N:T=42254])speciation:0.013221[&&NHX:D=N:T=314145:B=7:DD=],TP53_PvamENSPVAP00000015400:0.117578[&&NHX:D=N:T=132908])speciation:0.0[&&NHX:D=N:B=1:T=314145:DD=],((ENSMLUG00000006411_MlucENSMLUP00000005861:0.003702[&&NHX:D=N:T=59463],ENSMLUG00000025140_MlucENSMLUP00000016733:0.12569[&&NHX:D=N:T=59463])duplication:0.131525[&&NHX:D=Y:T=59463:B=100],TP53_EeurENSEEUP00000013295:0.183463[&&NHX:D=N:T=9365])speciation:0.042602[&&NHX:D=N:T=314145:B=33:DD=])duplication:0.018327[&&NHX:DD=Y:T=314145:B=0:D=],(((((Trp53_MmusENSMUSP00000104298:0.002681[&&NHX:D=N:T=10090],Trp53_MsspMGP_SPRETEiJ_P0028933:0.017851[&&NHX:D=N:T=10096])speciation:0.064969[&&NHX:D=N:B=100:T=862507:DD=],Tp53_RnorENSRNOP00000074031:0.079068[&&NHX:D=N:T=10116])speciation:0.12872[&&NHX:D=N:T=39107:B=100:DD=],LOC100910954_RnorENSRNOP00000064177:0.056502[&&NHX:D=N:T=10116])duplication:0.0[&&NHX:D=Y:B=5:T=39107],TP53_OpriENSOPRP00000005906:0.185911[&&NHX:D=N:T=9978])speciation:0.0[&&NHX:D=N:T=314147:B=0:DD=],((((TP53_MmurENSMICP00000039812:0.054544[&&NHX:D=N:T=30608],TP53_OgarENSOGAP00000015106:0.095719[&&NHX:D=N:T=30611])duplication:0.012762[&&NHX:D=N:B=52:T=376911:DD=],((((((TP53_HsapENSP00000269305:0.0[&&NHX:D=N:T=9606],TP53_GgorENSGGOP00000009561:0.002907[&&NHX:D=N:T=9595])speciation:0.001345[&&NHX:D=N:B=61:T=207598:DD=],TP53_PtroENSPTRP00000014836:0.000592[&&NHX:D=N:T=9598])speciation:0.00877[&&NHX:D=N:B=61:T=207598:DD=],TP53_PabeENSPPYP00000008923:0.009552[&&NHX:D=N:T=9601])speciation:4.8e-05[&&NHX:D=N:T=9604:B=100:DD=],TP53_NleuENSNLEP00000011861:0.032229[&&NHX:D=N:T=61853])speciation:0.004444[&&NHX:D=N:T=314295:B=97:DD=],((TP53_PanuENSPANP00000019643:0.007102[&&NHX:D=N:T=9555],TP53_CsabENSCSAP00000007551:0.010543[&&NHX:D=N:T=60711])speciation:0.000953[&&NHX:D=N:B=100:T=9528:DD=],TP53_MmulENSMMUP00000035274:0.043449[&&NHX:D=N:T=9544])speciation:0.019535[&&NHX:D=N:T=9528:B=55:DD=])speciation:0.013822[&&NHX:D=N:T=9526:B=52:DD=],TP53_CjacENSCJAP00000027663:0.047099[&&NHX:D=N:T=9483])speciation:0.027286[&&NHX:D=N:B=57:T=314293:DD=])speciation:0.013265[&&NHX:D=N:T=9443:B=4:DD=],TP53_TbelENSTBEP00000010189:0.222843[&&NHX:D=N:T=37347])speciation:0.008121[&&NHX:D=N:B=0:T=314146:DD=],((TP53_ItriENSSTOP00000019678:0.08339[&&NHX:D=N:T=43179],Tp53_CporENSCPOP00000012841:0.120892[&&NHX:D=N:T=10141])speciation:0.018406[&&NHX:D=N:T=9989:B=42:DD=],(ENSOCUG00000001138_OcunENSOCUP00000000989:0.013142[&&NHX:D=N:T=9986],ENSOCUG00000022109_OcunENSOCUP00000025959:0.090881[&&NHX:D=N:T=9986])duplication:0.069194[&&NHX:D=Y:T=9986:B=97])speciation:0.015339[&&NHX:D=N:T=314147:B=15:DD=])speciation:0.019539[&&NHX:D=N:B=0:T=314146:DD=])duplication:0.026935[&&NHX:DD=Y:T=314146:B=0:D=])speciation:0.017095[&&NHX:D=N:T=1437010:B=0:DD=],(((((((ENSLAFG00000028692_LafrENSLAFP00000023554:0.00886[&&NHX:D=N:T=9785],ENSLAFG00000030880_LafrENSLAFP00000027441:0.052436[&&NHX:D=N:T=9785])duplication:0.006909[&&NHX:D=Y:B=0:T=9785],ENSLAFG00000030555_LafrENSLAFP00000027808:0.044446[&&NHX:D=N:T=9785])duplication:0.003043[&&NHX:D=Y:T=9785:B=0],(ENSLAFG00000028299_LafrENSLAFP00000024998:0.011792[&&NHX:D=N:T=9785],ENSLAFG00000032042_LafrENSLAFP00000023389:0.017693[&&NHX:D=N:T=9785])duplication:0.015904[&&NHX:D=Y:T=9785:B=74])duplication:0.0[&&NHX:D=Y:B=0:T=9785],(((ENSLAFG00000027365_LafrENSLAFP00000025852:0.011873[&&NHX:D=N:T=9785],ENSLAFG00000026238_LafrENSLAFP00000027253:0.026457[&&NHX:D=N:T=9785])duplication:0.019571[&&NHX:D=Y:T=9785:B=81],ENSLAFG00000027669_LafrENSLAFP00000028793:0.027495[&&NHX:D=N:T=9785])duplication:0.016599[&&NHX:D=Y:T=9785:B=70],ENSLAFG00000027820_LafrENSLAFP00000028173:0.058133[&&NHX:D=N:T=9785])duplication:0.031788[&&NHX:D=Y:T=9785:B=87])duplication:0.038135[&&NHX:D=Y:T=9785:B=10],(ENSLAFG00000027348_LafrENSLAFP00000027515:0.028441[&&NHX:D=N:T=9785],ENSLAFG00000027474_LafrENSLAFP00000018379:0.03464[&&NHX:D=N:T=9785])duplication:0.131904[&&NHX:D=Y:B=100:T=9785],ENSLAFG00000007483_LafrENSLAFP00000006292:0.058399[&&NHX:D=N:T=9785])duplication:0.0075[&&NHX:D=Y:T=9785:B=23],TP53_PcapENSPCAP00000011892:0.114307[&&NHX:D=N:T=9813])speciation:0.010282[&&NHX:D=N:T=311790:B=18:DD=],(ENSETEG00000008987_EtelENSETEP00000007296:0.0[&&NHX:D=N:T=9371],ENSETEG00000009984_EtelENSETEP00000008111:0.105253[&&NHX:D=N:T=9371])duplication:0.154739[&&NHX:D=Y:B=100:T=9371])speciation:0.044399[&&NHX:D=N:T=311790:B=35:DD=])speciation:0.041158[&&NHX:D=N:B=0:T=9347:DD=],TP53_DnovENSDNOP00000004075:0.078395[&&NHX:D=N:T=9361])speciation:0.080059[&&NHX:D=N:B=0:T=9347:DD=],((TP53_SharENSSHAP00000018268:0.0496[&&NHX:D=N:T=9305],ENSMODG00000007271_MdomENSMODP00000009014:0.172546[&&NHX:D=N:T=13616])speciation:0.024952[&&NHX:D=N:T=9263:B=83:DD=],ENSMEUG00000013135_MeugENSMEUP00000011978:0.069167[&&NHX:D=N:T=9315])speciation:0.225429[&&NHX:D=N:B=83:T=9263:DD=])speciation:0.228895[&&NHX:D=N:B=81:T=32525:DD=],tp53_XtroENSXETP00000053759:0.483686[&&NHX:D=N:T=8364])speciation:0.095084[&&NHX:D=N:B=55:T=32523:DD=],(TP53_PsinENSPSIP00000014905:0.228951[&&NHX:D=N:T=13735],ENSOANG00000011981_OanaENSOANP00000018980:0.553865[&&NHX:D=N:T=9258])speciation:0.126185[&&NHX:D=N:B=48:T=32524:DD=])duplication:0.03737[&&NHX:DD=Y:B=17:T=32523:D=],TP53_LchaENSLACP00000015915:0.317935[&&NHX:D=N:T=7897])speciation:0.062274[&&NHX:D=N:B=13:T=8287:DD=],(((tp53_DrerENSDARP00000051548:0.365455[&&NHX:D=N:T=7955],tp53_AmexENSAMXP00000021366:0.579505[&&NHX:D=N:T=7994])speciation:0.105036[&&NHX:D=N:B=46:T=186626:DD=],((((((tp53_TrubENSTRUP00000030645:0.158124[&&NHX:D=N:T=31033],tp53_TnigENSTNIP00000013035:0.25403[&&NHX:D=N:T=99883])speciation:0.1396[&&NHX:D=N:T=31031:B=100:DD=],tp53_OlatENSORLP00000008029:0.359414[&&NHX:D=N:T=8090])speciation:0.040022[&&NHX:D=N:T=1489872:B=1:DD=],(tp53_GacuENSGACP00000025614:0.249641[&&NHX:D=N:T=69293],tp53_OnilENSONIP00000023874:0.251831[&&NHX:D=N:T=8128])speciation:0.085834[&&NHX:D=N:T=1489872:B=100:DD=])duplication:0.070104[&&NHX:DD=Y:T=1489872:B=0:D=],(tp53_PforENSPFOP00000007556:0.070709[&&NHX:D=N:T=48698],tp53_XmacENSXMAP00000015753:0.165631[&&NHX:D=N:T=8083])speciation:0.290725[&&NHX:D=N:B=100:T=586240:DD=])duplication:0.058888[&&NHX:DD=Y:B=2:T=1489872:D=],ENSGMOG00000007755_GmorENSGMOP00000008291:0.272843[&&NHX:D=N:T=8049])speciation:0.143728[&&NHX:D=N:T=123368:B=3:DD=],TP531ofmany_AmexENSAMXP00000007265:0.383807[&&NHX:D=N:T=7994])speciation:0.129809[&&NHX:D=N:T=186625:B=41:DD=])duplication:0.079851[&&NHX:D=Y:B=6:T=186625],tp53_LocuENSLOCP00000017063:0.263043[&&NHX:D=N:T=7918])speciation:0.079504[&&NHX:D=N:T=41665:B=5:DD=])speciation:0.205725[&&NHX:D=N:B=10:T=117571:DD=],ENSPMAG00000009535_PmarENSPMAP00000010479:0.363682[&&NHX:D=N:T=7757])speciation:0.005138[&&NHX:D=N:B=0:T=7742:DD=],((((((((((((TP63_MgalENSMGAP00000001036:0.00675[&&NHX:D=N:T=9103],TP63_GgalENSGALP00000032705:0.02786[&&NHX:D=N:T=9031])speciation:0.018196[&&NHX:D=N:B=100:T=9005:DD=],TP63_AplaENSAPLP00000012746:0.025285[&&NHX:D=N:T=8839])speciation:0.020559[&&NHX:D=N:B=100:T=1549675:DD=],(TP63_TgutENSTGUP00000009686:0.018245[&&NHX:D=N:T=59729],TP63_FalbENSFALP00000007718:0.02902[&&NHX:D=N:T=59894])speciation:0.022707[&&NHX:D=N:B=100:T=9126:DD=])speciation:0.046097[&&NHX:D=N:T=8825:B=100:DD=],TP63_PsinENSPSIP00000018044:0.123057[&&NHX:D=N:T=13735])speciation:0.005555[&&NHX:D=N:T=1329799:B=37:DD=],TP63_AcarENSACAP00000000376:0.736631[&&NHX:D=N:T=28377])speciation:0.010123[&&NHX:D=N:B=0:T=32561:DD=],((((((((((Trp63_MmusENSMUSP00000110965:0.000847[&&NHX:D=N:T=10090],Trp63_MsspMGP_SPRETEiJ_P0042982:0.004734[&&NHX:D=N:T=10096])speciation:0.021561[&&NHX:D=N:B=100:T=862507:DD=],Tp63_RnorENSRNOP00000033463:0.030383[&&NHX:D=N:T=10116])speciation:0.048568[&&NHX:D=N:T=39107:B=100:DD=],Trp63_DordENSDORP00000001930:0.044582[&&NHX:D=N:T=10020],TP63_ItriENSSTOP00000012357:0.057295[&&NHX:D=N:T=43179])speciation:0.000474[&&NHX:D=N:T=33553:B=0:DD=],TP63_CporENSCPOP00000013308:0.058396[&&NHX:D=N:T=10141])speciation:0.003336[&&NHX:D=N:B=0:T=9989:DD=],TP63_OpriENSOPRP00000002632:0.076764[&&NHX:D=N:T=9978])speciation:0.001386[&&NHX:D=N:B=0:T=314147:DD=],(TP63_OcunENSOCUP00000014157:0.04305[&&NHX:D=N:T=9986],TP63_OgarENSOGAP00000003415:0.053686[&&NHX:D=N:T=30611])speciation:0.018263[&&NHX:D=N:B=56:T=314146:DD=])duplication:0.0[&&NHX:DD=Y:T=314146:B=0:D=],TP63_TbelENSTBEP00000003655:0.050557[&&NHX:D=N:T=37347])speciation:0.000127[&&NHX:D=N:B=0:T=314146:DD=],(((((((TP63_PvamENSPVAP00000008543:0.02784[&&NHX:D=N:T=132908],TP63_MlucENSMLUP00000014213:0.029592[&&NHX:D=N:T=59463])speciation:0.007063[&&NHX:D=N:B=37:T=9397:DD=],(((TP63_AmelENSAMEP00000000831:0.015923[&&NHX:D=N:T=9646],TP63_CfamENSCAFP00000020585:0.020935[&&NHX:D=N:T=9615])speciation:0.003042[&&NHX:D=N:T=379584:B=80:DD=],TP63_MpfuENSMPUP00000003407:0.032827[&&NHX:D=N:T=9669])speciation:0.009414[&&NHX:D=N:B=64:T=379584:DD=],TP63_FcatENSFCAP00000000731:0.02322[&&NHX:D=N:T=9685])speciation:0.017067[&&NHX:D=N:T=33554:B=74:DD=])speciation:0.001436[&&NHX:D=N:T=314145:B=0:DD=],((((TP63_BtauENSBTAP00000020544:0.005072[&&NHX:D=N:T=9913],TP63_OariENSOARP00000021997:0.009983[&&NHX:D=N:T=9940])speciation:0.025469[&&NHX:D=N:T=9895:B=100:DD=],TP63_TtruENSTTRP00000011034:0.022489[&&NHX:D=N:T=9739])speciation:0.005877[&&NHX:D=N:B=58:T=91561:DD=],TP63_SscrENSSSCP00000025960:0.02089[&&NHX:D=N:T=9823])speciation:0.005665[&&NHX:D=N:B=29:T=91561:DD=],TP63_VpacENSVPAP00000011479:0.032735[&&NHX:D=N:T=30538])speciation:0.007589[&&NHX:D=N:B=13:T=91561:DD=])speciation:0.001552[&&NHX:D=N:B=0:T=314145:DD=],(TP63_EcabENSECAP00000016315:0.020605[&&NHX:D=N:T=9796],TP63_EeurENSEEUP00000012623:0.068478[&&NHX:D=N:T=9365])speciation:0.015388[&&NHX:D=N:B=15:T=314145:DD=])speciation:0.00388[&&NHX:D=N:T=314145:B=0:DD=],((((((((TP63_HsapENSP00000264731:0.001872[&&NHX:D=N:T=9606],TP63_GgorENSGGOP00000020551:0.002754[&&NHX:D=N:T=9595])speciation:0.000918[&&NHX:D=N:T=207598:B=46:DD=],TP63_PtroENSPTRP00000027067:0.001869[&&NHX:D=N:T=9598])speciation:0.002874[&&NHX:D=N:T=207598:B=46:DD=],TP63_PabeENSPPYP00000016106:0.004542[&&NHX:D=N:T=9601])speciation:0.000913[&&NHX:D=N:T=9604:B=70:DD=],TP63_NleuENSNLEP00000008197:0.004734[&&NHX:D=N:T=61853])speciation:0.000949[&&NHX:D=N:T=314295:B=66:DD=],((TP63_MmulENSMMUP00000038274:0.003714[&&NHX:D=N:T=9544],TP63_CsabENSCSAP00000005295:0.026509[&&NHX:D=N:T=60711])speciation:0.0[&&NHX:D=N:B=31:T=9528:DD=],TP63_PanuENSPANP00000003169:0.001823[&&NHX:D=N:T=9555])speciation:0.010162[&&NHX:D=N:B=31:T=9528:DD=])speciation:0.010185[&&NHX:D=N:T=9526:B=95:DD=],TP63_CjacENSCJAP00000026376:0.015601[&&NHX:D=N:T=9483])speciation:0.013295[&&NHX:D=N:T=314293:B=100:DD=],TP63_MmurENSMICP00000022696:0.021271[&&NHX:D=N:T=30608])speciation:0.0[&&NHX:D=N:B=42:T=9443:DD=],(TP63_TsyrENSTSYP00000003403:0.025783[&&NHX:D=N:T=1868482],TP63_SaraENSSARP00000011553:0.056367[&&NHX:D=N:T=42254])speciation:0.010618[&&NHX:D=N:B=14:T=1437010:DD=])duplication:0.006497[&&NHX:DD=Y:B=1:T=1437010:D=])duplication:0.0[&&NHX:DD=Y:B=0:T=1437010:D=],(TP63_DnovENSDNOP00000012853:0.025753[&&NHX:D=N:T=9361],TP63_ChofENSCHOP00000009300:0.040693[&&NHX:D=N:T=9358])speciation:0.020456[&&NHX:D=N:B=76:T=9348:DD=])speciation:0.001941[&&NHX:D=N:T=9347:B=0:DD=],((TP63_LafrENSLAFP00000020806:0.016207[&&NHX:D=N:T=9785],TP63_PcapENSPCAP00000004708:0.030306[&&NHX:D=N:T=9813])speciation:0.00755[&&NHX:D=N:T=311790:B=91:DD=],TP63_EtelENSETEP00000001864:0.071017[&&NHX:D=N:T=9371])speciation:0.015236[&&NHX:D=N:T=311790:B=8:DD=])speciation:0.007477[&&NHX:D=N:B=0:T=9347:DD=])duplication:0.052158[&&NHX:DD=Y:B=0:T=9347:D=],((TP63_MdomENSMODP00000018831:0.034607[&&NHX:D=N:T=13616],TP63_MeugENSMEUP00000014131:0.045944[&&NHX:D=N:T=9315])speciation:0.011561[&&NHX:D=N:T=9263:B=100:DD=],TP63_SharENSSHAP00000008666:0.303146[&&NHX:D=N:T=9305])speciation:0.054652[&&NHX:D=N:B=12:T=9263:DD=])speciation:0.017647[&&NHX:D=N:B=2:T=32525:DD=],TP63_OanaENSOANP00000021753:0.079276[&&NHX:D=N:T=9258])speciation:0.043447[&&NHX:D=N:T=40674:B=2:DD=])speciation:0.034349[&&NHX:D=N:T=32524:B=0:DD=],tp63_XtroENSXETP00000055541:0.267401[&&NHX:D=N:T=8364])speciation:0.032348[&&NHX:D=N:B=0:T=32523:DD=],(ENSACAG00000002961_AcarENSACAP00000002870:0.0[&&NHX:D=N:T=28377],ENSACAG00000022533_AcarENSACAP00000021196:1.16541[&&NHX:D=N:T=28377])duplication:0.116614[&&NHX:D=Y:T=28377:B=0])duplication:0.005373[&&NHX:D=Y:T=32523:B=0],TP63_LchaENSLACP00000022643:0.17787[&&NHX:D=N:T=7897])speciation:0.031924[&&NHX:D=N:T=8287:B=0:DD=],(((((((tp63_PforENSPFOP00000001124:0.014737[&&NHX:D=N:T=48698],tp63_XmacENSXMAP00000016461:0.044393[&&NHX:D=N:T=8083])speciation:0.052269[&&NHX:D=N:B=99:T=586240:DD=],tp63_OlatENSORLP00000019616:0.105223[&&NHX:D=N:T=8090])speciation:0.020917[&&NHX:D=N:B=24:T=1489913:DD=],tp63_OnilENSONIP00000024326:0.065197[&&NHX:D=N:T=8128])speciation:0.01928[&&NHX:D=N:T=1489908:B=16:DD=],(tp63_TnigENSTNIP00000016776:0.042973[&&NHX:D=N:T=99883],tp63_TrubENSTRUP00000008025:0.048688[&&NHX:D=N:T=31033])speciation:0.043668[&&NHX:D=N:B=100:T=31031:DD=])speciation:0.020832[&&NHX:D=N:B=77:T=1489872:DD=],(ENSGACG00000013629_GacuENSGACP00000018012:0.069577[&&NHX:D=N:T=69293],ENSGMOG00000000413_GmorENSGMOP00000000401:0.110102[&&NHX:D=N:T=8049])speciation:0.067443[&&NHX:D=N:B=97:T=123368:DD=])duplication:0.040724[&&NHX:DD=Y:B=65:T=123368:D=],(tp63_AmexENSAMXP00000004961:0.092792[&&NHX:D=N:T=7994],tp63_DrerENSDARP00000108362:0.121291[&&NHX:D=N:T=7955])speciation:0.046115[&&NHX:D=N:T=186626:B=86:DD=])speciation:0.034365[&&NHX:D=N:T=186625:B=37:DD=],tp63_LocuENSLOCP00000006202:0.102939[&&NHX:D=N:T=7918])speciation:0.049371[&&NHX:D=N:B=52:T=41665:DD=])speciation:0.110844[&&NHX:D=N:B=0:T=117571:DD=],(((((((((((TP73_LafrENSLAFP00000005892:0.029578[&&NHX:D=N:T=9785],TP73_PcapENSPCAP00000000662:0.051492[&&NHX:D=N:T=9813])speciation:0.003183[&&NHX:D=N:T=311790:B=90:DD=],TP73_EtelENSETEP00000007165:0.095673[&&NHX:D=N:T=9371])speciation:0.033805[&&NHX:D=N:T=311790:B=0:DD=],TP73_DnovENSDNOP00000028722:0.457081[&&NHX:D=N:T=9361])speciation:0.006287[&&NHX:D=N:B=0:T=9347:DD=],((((((((TP73_BtauENSBTAP00000007643:0.009498[&&NHX:D=N:T=9913],TP73_OariENSOARP00000017005:0.019572[&&NHX:D=N:T=9940])speciation:0.012531[&&NHX:D=N:T=9895:B=100:DD=],ENSSSCG00000025685_SscrENSSSCP00000022771:0.057187[&&NHX:D=N:T=9823])speciation:0.018712[&&NHX:D=N:T=91561:B=1:DD=],TP73_TtruENSTTRP00000003223:0.039795[&&NHX:D=N:T=9739])speciation:0.015091[&&NHX:D=N:T=91561:B=0:DD=],(((TP73_AmelENSAMEP00000009745:0.040276[&&NHX:D=N:T=9646],TP73_MpfuENSMPUP00000007349:0.069423[&&NHX:D=N:T=9669])speciation:0.011068[&&NHX:D=N:B=5:T=379584:DD=],TP73_CfamENSCAFP00000028819:0.025289[&&NHX:D=N:T=9615])speciation:0.003214[&&NHX:D=N:B=4:T=379584:DD=],TP73_FcatENSFCAP00000010792:0.059719[&&NHX:D=N:T=9685])speciation:0.021832[&&NHX:D=N:B=20:T=33554:DD=])speciation:0.009094[&&NHX:D=N:T=314145:B=0:DD=],TP73_PvamENSPVAP00000008433:0.078992[&&NHX:D=N:T=132908])speciation:0.005352[&&NHX:D=N:T=314145:B=0:DD=],TP73_EeurENSEEUP00000011975:0.098606[&&NHX:D=N:T=9365])speciation:0.0[&&NHX:D=N:B=0:T=314145:DD=],TP73_EcabENSECAP00000001313:0.038035[&&NHX:D=N:T=9796])speciation:0.007356[&&NHX:D=N:T=314145:B=0:DD=],((((((Trp73_MsspMGP_SPRETEiJ_P0068738:0.0082[&&NHX:D=N:T=10096],Trp73_MmusENSMUSP00000101269:0.011834[&&NHX:D=N:T=10090])speciation:0.027464[&&NHX:D=N:B=100:T=862507:DD=],Tp73_RnorENSRNOP00000052265:0.034464[&&NHX:D=N:T=10116])speciation:0.085459[&&NHX:D=N:T=39107:B=100:DD=],TP73_ItriENSSTOP00000022492:0.061184[&&NHX:D=N:T=43179])speciation:0.008334[&&NHX:D=N:B=2:T=33553:DD=],Trp73_DordENSDORP00000013966:0.076743[&&NHX:D=N:T=10020])speciation:0.0[&&NHX:D=N:T=33553:B=0:DD=],TP73_CporENSCPOP00000009800:0.075508[&&NHX:D=N:T=10141])speciation:0.004958[&&NHX:D=N:T=9989:B=0:DD=],((TP73_MmurENSMICP00000031305:0.033995[&&NHX:D=N:T=30608],TP73_OgarENSOGAP00000005402:0.043894[&&NHX:D=N:T=30611])speciation:0.017054[&&NHX:D=N:T=376911:B=93:DD=],((((((TP73_GgorENSGGOP00000015180:0.00182[&&NHX:D=N:T=9595],TP73_HsapENSP00000367545:0.005775[&&NHX:D=N:T=9606])speciation:0.0[&&NHX:D=N:T=207598:B=92:DD=],TP73_PtroENSPTRP00000000118:0.05274[&&NHX:D=N:T=9598])speciation:0.005412[&&NHX:D=N:B=81:T=207598:DD=],TP73_PabeENSPPYP00000002277:0.013149[&&NHX:D=N:T=9601])speciation:0.000495[&&NHX:D=N:B=30:T=9604:DD=],TP73_NleuENSNLEP00000009887:0.326917[&&NHX:D=N:T=61853])speciation:0.010918[&&NHX:D=N:T=314295:B=0:DD=],((TP73_PanuENSPANP00000007545:0.004788[&&NHX:D=N:T=9555],TP73_CsabENSCSAP00000017283:0.012519[&&NHX:D=N:T=60711])speciation:0.000519[&&NHX:D=N:T=9528:B=86:DD=],TP73_MmulENSMMUP00000040655:0.025402[&&NHX:D=N:T=9544])duplication:0.013713[&&NHX:D=N:B=75:T=9528:DD=])speciation:0.010332[&&NHX:D=N:T=9526:B=0:DD=],TP73_CjacENSCJAP00000005070:0.291972[&&NHX:D=N:T=9483])speciation:0.022859[&&NHX:D=N:B=0:T=314293:DD=])speciation:0.014731[&&NHX:D=N:B=0:T=9443:DD=])speciation:0.020217[&&NHX:D=N:T=314146:B=0:DD=])speciation:0.01086[&&NHX:D=N:T=1437010:B=0:DD=])speciation:0.048685[&&NHX:D=N:T=9347:B=0:DD=],ENSSSCG00000003361_SscrENSSSCP00000003644:0.097446[&&NHX:D=N:T=9823])duplication:0.016508[&&NHX:D=Y:T=9347:B=0],((TP73_MeugENSMEUP00000000705:0.023362[&&NHX:D=N:T=9315],TP73_MdomENSMODP00000008216:0.259151[&&NHX:D=N:T=13616])speciation:0.035881[&&NHX:D=N:B=57:T=9263:DD=],TP73_SharENSSHAP00000006513:0.042193[&&NHX:D=N:T=9305])speciation:0.069704[&&NHX:D=N:T=9263:B=36:DD=])speciation:0.023293[&&NHX:D=N:T=32525:B=2:DD=],TP73_OanaENSOANP00000019815:0.30572[&&NHX:D=N:T=9258])speciation:0.017992[&&NHX:D=N:B=0:T=40674:DD=],(((((TP73_GgalENSGALP00000001485:0.002093[&&NHX:D=N:T=9031],TP73_MgalENSMGAP00000001059:0.036491[&&NHX:D=N:T=9103])speciation:0.047733[&&NHX:D=N:T=9005:B=100:DD=],TP73_AplaENSAPLP00000003415:0.02254[&&NHX:D=N:T=8839])speciation:0.021618[&&NHX:D=N:T=1549675:B=97:DD=],(TP73_TgutENSTGUP00000002829:0.010561[&&NHX:D=N:T=59729],TP73_FalbENSFALP00000010031:0.030208[&&NHX:D=N:T=59894])speciation:0.023763[&&NHX:D=N:T=9126:B=100:DD=])speciation:0.016346[&&NHX:D=N:B=97:T=8825:DD=],TP73_PsinENSPSIP00000004448:0.109544[&&NHX:D=N:T=13735])speciation:0.026517[&&NHX:D=N:T=1329799:B=84:DD=],TP73_AcarENSACAP00000001746:0.128451[&&NHX:D=N:T=28377])speciation:0.019965[&&NHX:D=N:B=67:T=32561:DD=])speciation:0.036745[&&NHX:D=N:T=32524:B=15:DD=],tp73_XtroENSXETP00000010981:0.182635[&&NHX:D=N:T=8364])speciation:0.011019[&&NHX:D=N:B=1:T=32523:DD=],TP73_LchaENSLACP00000021702:0.142378[&&NHX:D=N:T=7897])speciation:0.024057[&&NHX:D=N:B=0:T=8287:DD=],((((((tp73_TnigENSTNIP00000014938:0.027328[&&NHX:D=N:T=99883],tp73_TrubENSTRUP00000038165:0.032469[&&NHX:D=N:T=31033])speciation:0.059199[&&NHX:D=N:T=31031:B=100:DD=],tp73_GacuENSGACP00000008676:0.048591[&&NHX:D=N:T=69293])speciation:0.007086[&&NHX:D=N:T=1489922:B=29:DD=],(((tp73_PforENSPFOP00000010896:0.013197[&&NHX:D=N:T=48698],tp73_XmacENSXMAP00000017403:0.030558[&&NHX:D=N:T=8083])speciation:0.063838[&&NHX:D=N:B=100:T=586240:DD=],tp73_OlatENSORLP00000005521:0.062083[&&NHX:D=N:T=8090])speciation:0.017304[&&NHX:D=N:B=58:T=1489913:DD=],tp73_OnilENSONIP00000002627:0.053778[&&NHX:D=N:T=8128])speciation:0.014746[&&NHX:D=N:T=1489908:B=29:DD=])speciation:0.072637[&&NHX:D=N:B=14:T=1489872:DD=],tp73_GmorENSGMOP00000016675:0.181445[&&NHX:D=N:T=8049])speciation:0.038065[&&NHX:D=N:T=123368:B=98:DD=],(tp73_AmexENSAMXP00000014358:0.086906[&&NHX:D=N:T=7994],tp73_DrerENSDARP00000109674:0.134572[&&NHX:D=N:T=7955])speciation:0.064476[&&NHX:D=N:T=186626:B=100:DD=])speciation:0.04364[&&NHX:D=N:T=186625:B=43:DD=],tp73_LocuENSLOCP00000006343:0.115822[&&NHX:D=N:T=7918])speciation:0.046704[&&NHX:D=N:T=41665:B=14:DD=])speciation:0.167736[&&NHX:D=N:T=117571:B=27:DD=])duplication:0.067299[&&NHX:D=Y:B=0:T=117571],tp63_PmarENSPMAP00000007639:0.797694[&&NHX:D=N:T=7757])speciation:0.076045[&&NHX:D=N:T=7742:B=0:DD=],(('p53/p73-b CintENSCINP00000004447':0.450754[&&NHX:D=N:T=7719],ENSCSAVG00000009788_CsavENSCSAVP00000016659:0.47517[&&NHX:D=N:T=51511])speciation:0.378426[&&NHX:D=N:B=100:T=7718:DD=],(ENSCING00000001960_CintENSCINP00000003956:0.141945[&&NHX:D=N:T=7719],ENSCSAVG00000009964_CsavENSCSAVP00000016940:0.26284[&&NHX:D=N:T=51511])speciation:0.525939[&&NHX:D=N:T=7718:B=100:DD=])duplication:0.603292[&&NHX:D=Y:B=100:T=7718])duplication:0.0[&&NHX:D=N:T=7711:B=0:DD=];\",\n \"LRF2\" : \"((((((((((((((((((TP53_AmelENSAMEP00000017825:0.0263[&&NHX:D=N:T=9646],TP53_MpfuENSMPUP00000008945:0.066538[&&NHX:D=N:T=9669])speciation:0.032561[&&NHX:D=N:B=99:T=379584:DD=],TP53_CfamENSCAFP00000024579:0.086484[&&NHX:D=N:T=9615])speciation:0.034068[&&NHX:D=N:B=81:T=379584:DD=],TP53_FcatENSFCAP00000008925:0.06619[&&NHX:D=N:T=9685])speciation:0.025911[&&NHX:D=N:B=31:T=33554:DD=],TP53_EcabENSECAP00000006210:0.04971[&&NHX:D=N:T=9796])speciation:0.01224[&&NHX:D=N:T=314145:B=17:DD=],(((TP53_BtauENSBTAP00000001420:0.043108[&&NHX:D=N:T=9913],TP53_OariENSOARP00000016707:0.049064[&&NHX:D=N:T=9940])speciation:0.055294[&&NHX:D=N:B=98:T=9895:DD=],TP53_TtruENSTTRP00000009721:0.022529[&&NHX:D=N:T=9739])speciation:0.022515[&&NHX:D=N:T=91561:B=39:DD=],TP53_SscrENSSSCP00000019016:0.065797[&&NHX:D=N:T=9823])speciation:0.020972[&&NHX:D=N:T=91561:B=35:DD=])speciation:0.006996[&&NHX:D=N:B=9:T=314145:DD=],TP53_SaraENSSARP00000005616:0.149927[&&NHX:D=N:T=42254])speciation:0.013221[&&NHX:D=N:T=314145:B=7:DD=],TP53_PvamENSPVAP00000015400:0.117578[&&NHX:D=N:T=132908])speciation:0.0[&&NHX:D=N:B=1:T=314145:DD=],((ENSMLUG00000006411_MlucENSMLUP00000005861:0.003702[&&NHX:D=N:T=59463],ENSMLUG00000025140_MlucENSMLUP00000016733:0.12569[&&NHX:D=N:T=59463])duplication:0.131525[&&NHX:D=Y:T=59463:B=100],TP53_EeurENSEEUP00000013295:0.183463[&&NHX:D=N:T=9365])speciation:0.042602[&&NHX:D=N:T=314145:B=33:DD=])duplication:0.018327[&&NHX:DD=Y:T=314145:B=0:D=],(((((Trp53_MmusENSMUSP00000104298:0.002681[&&NHX:D=N:T=10090],Trp53_MsspMGP_SPRETEiJ_P0028933:0.017851[&&NHX:D=N:T=10096])speciation:0.064969[&&NHX:D=N:B=100:T=862507:DD=],Tp53_RnorENSRNOP00000074031:0.079068[&&NHX:D=N:T=10116])speciation:0.12872[&&NHX:D=N:T=39107:B=100:DD=],LOC100910954_RnorENSRNOP00000064177:0.056502[&&NHX:D=N:T=10116])duplication:0.0[&&NHX:D=Y:B=5:T=39107],TP53_OpriENSOPRP00000005906:0.185911[&&NHX:D=N:T=9978])speciation:0.0[&&NHX:D=N:T=314147:B=0:DD=],((((TP53_MmurENSMICP00000039812:0.054544[&&NHX:D=N:T=30608],TP53_OgarENSOGAP00000015106:0.095719[&&NHX:D=N:T=30611])speciation:0.012762[&&NHX:D=N:B=52:T=376911:DD=],((((((TP53_HsapENSP00000269305:0.0[&&NHX:D=N:T=9606],TP53_GgorENSGGOP00000009561:0.002907[&&NHX:D=N:T=9595])speciation:0.001345[&&NHX:D=N:B=61:T=207598:DD=],TP53_PtroENSPTRP00000014836:0.000592[&&NHX:D=N:T=9598])speciation:0.00877[&&NHX:D=N:B=61:T=207598:DD=],TP53_PabeENSPPYP00000008923:0.009552[&&NHX:D=N:T=9601])speciation:4.8e-05[&&NHX:D=N:T=9604:B=100:DD=],TP53_NleuENSNLEP00000011861:0.032229[&&NHX:D=N:T=61853])speciation:0.004444[&&NHX:D=N:T=314295:B=97:DD=],((TP53_PanuENSPANP00000019643:0.007102[&&NHX:D=N:T=9555],TP53_CsabENSCSAP00000007551:0.010543[&&NHX:D=N:T=60711])speciation:0.000953[&&NHX:D=N:B=100:T=9528:DD=],TP53_MmulENSMMUP00000035274:0.043449[&&NHX:D=N:T=9544])speciation:0.019535[&&NHX:D=N:T=9528:B=55:DD=])speciation:0.013822[&&NHX:D=N:T=9526:B=52:DD=],TP53_CjacENSCJAP00000027663:0.047099[&&NHX:D=N:T=9483])speciation:0.027286[&&NHX:D=N:B=57:T=314293:DD=])speciation:0.013265[&&NHX:D=N:T=9443:B=4:DD=],TP53_TbelENSTBEP00000010189:0.222843[&&NHX:D=N:T=37347])speciation:0.008121[&&NHX:D=N:B=0:T=314146:DD=],((TP53_ItriENSSTOP00000019678:0.08339[&&NHX:D=N:T=43179],Tp53_CporENSCPOP00000012841:0.120892[&&NHX:D=N:T=10141])speciation:0.018406[&&NHX:D=N:T=9989:B=42:DD=],(ENSOCUG00000001138_OcunENSOCUP00000000989:0.013142[&&NHX:D=N:T=9986],ENSOCUG00000022109_OcunENSOCUP00000025959:0.090881[&&NHX:D=N:T=9986])duplication:0.069194[&&NHX:D=Y:T=9986:B=97])speciation:0.015339[&&NHX:D=N:T=314147:B=15:DD=])speciation:0.019539[&&NHX:D=N:B=0:T=314146:DD=])duplication:0.026935[&&NHX:DD=Y:T=314146:B=0:D=])speciation:0.017095[&&NHX:D=N:T=1437010:B=0:DD=],((((((((ENSLAFG00000028692_LafrENSLAFP00000023554:0.00886[&&NHX:D=N:T=9785],ENSLAFG00000030880_LafrENSLAFP00000027441:0.052436[&&NHX:D=N:T=9785])duplication:0.006909[&&NHX:D=Y:B=0:T=9785],ENSLAFG00000030555_LafrENSLAFP00000027808:0.044446[&&NHX:D=N:T=9785])duplication:0.003043[&&NHX:D=Y:T=9785:B=0],(ENSLAFG00000028299_LafrENSLAFP00000024998:0.011792[&&NHX:D=N:T=9785],ENSLAFG00000032042_LafrENSLAFP00000023389:0.017693[&&NHX:D=N:T=9785])duplication:0.015904[&&NHX:D=Y:T=9785:B=74])duplication:0.0[&&NHX:D=Y:B=0:T=9785],(((ENSLAFG00000027365_LafrENSLAFP00000025852:0.011873[&&NHX:D=N:T=9785],ENSLAFG00000026238_LafrENSLAFP00000027253:0.026457[&&NHX:D=N:T=9785])duplication:0.019571[&&NHX:D=Y:T=9785:B=81],ENSLAFG00000027669_LafrENSLAFP00000028793:0.027495[&&NHX:D=N:T=9785])duplication:0.016599[&&NHX:D=Y:T=9785:B=70],ENSLAFG00000027820_LafrENSLAFP00000028173:0.058133[&&NHX:D=N:T=9785])duplication:0.031788[&&NHX:D=Y:T=9785:B=87])duplication:0.038135[&&NHX:D=Y:T=9785:B=10],(ENSLAFG00000027348_LafrENSLAFP00000027515:0.028441[&&NHX:D=N:T=9785],ENSLAFG00000027474_LafrENSLAFP00000018379:0.03464[&&NHX:D=N:T=9785])duplication:0.131904[&&NHX:D=Y:B=100:T=9785])duplication:0.082412[&&NHX:D=Y:T=9785:B=96],ENSLAFG00000007483_LafrENSLAFP00000006292:0.058399[&&NHX:D=N:T=9785])duplication:0.0075[&&NHX:D=Y:T=9785:B=23],TP53_PcapENSPCAP00000011892:0.114307[&&NHX:D=N:T=9813])speciation:0.010282[&&NHX:D=N:T=311790:B=18:DD=],(ENSETEG00000008987_EtelENSETEP00000007296:0.0[&&NHX:D=N:T=9371],ENSETEG00000009984_EtelENSETEP00000008111:0.105253[&&NHX:D=N:T=9371])duplication:0.154739[&&NHX:D=Y:B=100:T=9371])speciation:0.044399[&&NHX:D=N:T=311790:B=35:DD=])speciation:0.041158[&&NHX:D=N:B=0:T=9347:DD=],TP53_DnovENSDNOP00000004075:0.078395[&&NHX:D=N:T=9361])speciation:0.080059[&&NHX:D=N:B=0:T=9347:DD=],((TP53_SharENSSHAP00000018268:0.0496[&&NHX:D=N:T=9305],ENSMODG00000007271_MdomENSMODP00000009014:0.172546[&&NHX:D=N:T=13616])speciation:0.024952[&&NHX:D=N:T=9263:B=83:DD=],ENSMEUG00000013135_MeugENSMEUP00000011978:0.069167[&&NHX:D=N:T=9315])speciation:0.225429[&&NHX:D=N:B=83:T=9263:DD=])speciation:0.228895[&&NHX:D=N:B=81:T=32525:DD=],tp53_XtroENSXETP00000053759:0.483686[&&NHX:D=N:T=8364])speciation:0.095084[&&NHX:D=N:B=55:T=32523:DD=],(TP53_PsinENSPSIP00000014905:0.228951[&&NHX:D=N:T=13735],ENSOANG00000011981_OanaENSOANP00000018980:0.553865[&&NHX:D=N:T=9258])speciation:0.126185[&&NHX:D=N:B=48:T=32524:DD=])duplication:0.03737[&&NHX:DD=Y:B=17:T=32523:D=],TP53_LchaENSLACP00000015915:0.317935[&&NHX:D=N:T=7897])speciation:0.062274[&&NHX:D=N:B=13:T=8287:DD=],(((tp53_DrerENSDARP00000051548:0.365455[&&NHX:D=N:T=7955],tp53_AmexENSAMXP00000021366:0.579505[&&NHX:D=N:T=7994])speciation:0.105036[&&NHX:D=N:B=46:T=186626:DD=],((((((tp53_TrubENSTRUP00000030645:0.158124[&&NHX:D=N:T=31033],tp53_TnigENSTNIP00000013035:0.25403[&&NHX:D=N:T=99883])speciation:0.1396[&&NHX:D=N:T=31031:B=100:DD=],tp53_OlatENSORLP00000008029:0.359414[&&NHX:D=N:T=8090])speciation:0.040022[&&NHX:D=N:T=1489872:B=1:DD=],(tp53_GacuENSGACP00000025614:0.249641[&&NHX:D=N:T=69293],tp53_OnilENSONIP00000023874:0.251831[&&NHX:D=N:T=8128])speciation:0.085834[&&NHX:D=N:T=1489872:B=100:DD=])duplication:0.070104[&&NHX:DD=Y:T=1489872:B=0:D=],(tp53_PforENSPFOP00000007556:0.070709[&&NHX:D=N:T=48698],tp53_XmacENSXMAP00000015753:0.165631[&&NHX:D=N:T=8083])speciation:0.290725[&&NHX:D=N:B=100:T=586240:DD=])duplication:0.058888[&&NHX:DD=Y:B=2:T=1489872:D=],ENSGMOG00000007755_GmorENSGMOP00000008291:0.272843[&&NHX:D=N:T=8049])speciation:0.143728[&&NHX:D=N:T=123368:B=3:DD=],TP531ofmany_AmexENSAMXP00000007265:0.383807[&&NHX:D=N:T=7994])speciation:0.129809[&&NHX:D=N:T=186625:B=41:DD=])duplication:0.079851[&&NHX:D=Y:B=6:T=186625],tp53_LocuENSLOCP00000017063:0.263043[&&NHX:D=N:T=7918])speciation:0.079504[&&NHX:D=N:T=41665:B=5:DD=])speciation:0.205725[&&NHX:D=N:B=10:T=117571:DD=],ENSPMAG00000009535_PmarENSPMAP00000010479:0.363682[&&NHX:D=N:T=7757])speciation:0.005138[&&NHX:D=N:B=0:T=7742:DD=],((((((((((((TP63_MgalENSMGAP00000001036:0.00675[&&NHX:D=N:T=9103],TP63_GgalENSGALP00000032705:0.02786[&&NHX:D=N:T=9031])speciation:0.018196[&&NHX:D=N:B=100:T=9005:DD=],TP63_AplaENSAPLP00000012746:0.025285[&&NHX:D=N:T=8839])speciation:0.020559[&&NHX:D=N:B=100:T=1549675:DD=],(TP63_TgutENSTGUP00000009686:0.018245[&&NHX:D=N:T=59729],TP63_FalbENSFALP00000007718:0.02902[&&NHX:D=N:T=59894])speciation:0.022707[&&NHX:D=N:B=100:T=9126:DD=])speciation:0.046097[&&NHX:D=N:T=8825:B=100:DD=],TP63_PsinENSPSIP00000018044:0.123057[&&NHX:D=N:T=13735])speciation:0.005555[&&NHX:D=N:T=1329799:B=37:DD=],TP63_AcarENSACAP00000000376:0.736631[&&NHX:D=N:T=28377])speciation:0.010123[&&NHX:D=N:B=0:T=32561:DD=],(((((((((((Trp63_MmusENSMUSP00000110965:0.000847[&&NHX:D=N:T=10090],Trp63_MsspMGP_SPRETEiJ_P0042982:0.004734[&&NHX:D=N:T=10096])speciation:0.021561[&&NHX:D=N:B=100:T=862507:DD=],Tp63_RnorENSRNOP00000033463:0.030383[&&NHX:D=N:T=10116])speciation:0.048568[&&NHX:D=N:T=39107:B=100:DD=],Trp63_DordENSDORP00000001930:0.044582[&&NHX:D=N:T=10020])speciation:0.014056[&&NHX:D=N:B=17:T=33553:DD=],TP63_ItriENSSTOP00000012357:0.057295[&&NHX:D=N:T=43179])speciation:0.000474[&&NHX:D=N:T=33553:B=0:DD=],TP63_CporENSCPOP00000013308:0.058396[&&NHX:D=N:T=10141])speciation:0.003336[&&NHX:D=N:B=0:T=9989:DD=],TP63_OpriENSOPRP00000002632:0.076764[&&NHX:D=N:T=9978])speciation:0.001386[&&NHX:D=N:B=0:T=314147:DD=],(TP63_OcunENSOCUP00000014157:0.04305[&&NHX:D=N:T=9986],TP63_OgarENSOGAP00000003415:0.053686[&&NHX:D=N:T=30611])speciation:0.018263[&&NHX:D=N:B=56:T=314146:DD=])duplication:0.0[&&NHX:DD=Y:T=314146:B=0:D=],TP63_TbelENSTBEP00000003655:0.050557[&&NHX:D=N:T=37347])speciation:0.000127[&&NHX:D=N:B=0:T=314146:DD=],(((((((TP63_PvamENSPVAP00000008543:0.02784[&&NHX:D=N:T=132908],TP63_MlucENSMLUP00000014213:0.029592[&&NHX:D=N:T=59463])speciation:0.007063[&&NHX:D=N:B=37:T=9397:DD=],(((TP63_AmelENSAMEP00000000831:0.015923[&&NHX:D=N:T=9646],TP63_CfamENSCAFP00000020585:0.020935[&&NHX:D=N:T=9615])speciation:0.003042[&&NHX:D=N:T=379584:B=80:DD=],TP63_MpfuENSMPUP00000003407:0.032827[&&NHX:D=N:T=9669])speciation:0.009414[&&NHX:D=N:B=64:T=379584:DD=],TP63_FcatENSFCAP00000000731:0.02322[&&NHX:D=N:T=9685])speciation:0.017067[&&NHX:D=N:T=33554:B=74:DD=])speciation:0.001436[&&NHX:D=N:T=314145:B=0:DD=],((((TP63_BtauENSBTAP00000020544:0.005072[&&NHX:D=N:T=9913],TP63_OariENSOARP00000021997:0.009983[&&NHX:D=N:T=9940])speciation:0.025469[&&NHX:D=N:T=9895:B=100:DD=],TP63_TtruENSTTRP00000011034:0.022489[&&NHX:D=N:T=9739])speciation:0.005877[&&NHX:D=N:B=58:T=91561:DD=],TP63_SscrENSSSCP00000025960:0.02089[&&NHX:D=N:T=9823])speciation:0.005665[&&NHX:D=N:B=29:T=91561:DD=],TP63_VpacENSVPAP00000011479:0.032735[&&NHX:D=N:T=30538])speciation:0.007589[&&NHX:D=N:B=13:T=91561:DD=])speciation:0.001552[&&NHX:D=N:B=0:T=314145:DD=],(TP63_EcabENSECAP00000016315:0.020605[&&NHX:D=N:T=9796],TP63_EeurENSEEUP00000012623:0.068478[&&NHX:D=N:T=9365])speciation:0.015388[&&NHX:D=N:B=15:T=314145:DD=])speciation:0.00388[&&NHX:D=N:T=314145:B=0:DD=],((((((((TP63_HsapENSP00000264731:0.001872[&&NHX:D=N:T=9606],TP63_GgorENSGGOP00000020551:0.002754[&&NHX:D=N:T=9595])speciation:0.000918[&&NHX:D=N:T=207598:B=46:DD=],TP63_PtroENSPTRP00000027067:0.001869[&&NHX:D=N:T=9598])speciation:0.002874[&&NHX:D=N:T=207598:B=46:DD=],TP63_PabeENSPPYP00000016106:0.004542[&&NHX:D=N:T=9601])speciation:0.000913[&&NHX:D=N:T=9604:B=70:DD=],TP63_NleuENSNLEP00000008197:0.004734[&&NHX:D=N:T=61853])speciation:0.000949[&&NHX:D=N:T=314295:B=66:DD=],((TP63_MmulENSMMUP00000038274:0.003714[&&NHX:D=N:T=9544],TP63_CsabENSCSAP00000005295:0.026509[&&NHX:D=N:T=60711])speciation:0.0[&&NHX:D=N:B=31:T=9528:DD=],TP63_PanuENSPANP00000003169:0.001823[&&NHX:D=N:T=9555])speciation:0.010162[&&NHX:D=N:B=31:T=9528:DD=])speciation:0.010185[&&NHX:D=N:T=9526:B=95:DD=],TP63_CjacENSCJAP00000026376:0.015601[&&NHX:D=N:T=9483])speciation:0.013295[&&NHX:D=N:T=314293:B=100:DD=],TP63_MmurENSMICP00000022696:0.021271[&&NHX:D=N:T=30608])speciation:0.0[&&NHX:D=N:B=42:T=9443:DD=],(TP63_TsyrENSTSYP00000003403:0.025783[&&NHX:D=N:T=1868482],TP63_SaraENSSARP00000011553:0.056367[&&NHX:D=N:T=42254])speciation:0.010618[&&NHX:D=N:B=14:T=1437010:DD=])duplication:0.006497[&&NHX:DD=Y:B=1:T=1437010:D=])duplication:0.0[&&NHX:DD=Y:B=0:T=1437010:D=],(TP63_DnovENSDNOP00000012853:0.025753[&&NHX:D=N:T=9361],TP63_ChofENSCHOP00000009300:0.040693[&&NHX:D=N:T=9358])speciation:0.020456[&&NHX:D=N:B=76:T=9348:DD=])speciation:0.001941[&&NHX:D=N:T=9347:B=0:DD=],((TP63_LafrENSLAFP00000020806:0.016207[&&NHX:D=N:T=9785],TP63_PcapENSPCAP00000004708:0.030306[&&NHX:D=N:T=9813])speciation:0.00755[&&NHX:D=N:T=311790:B=91:DD=],TP63_EtelENSETEP00000001864:0.071017[&&NHX:D=N:T=9371])speciation:0.015236[&&NHX:D=N:T=311790:B=8:DD=])speciation:0.007477[&&NHX:D=N:B=0:T=9347:DD=])duplication:0.052158[&&NHX:DD=Y:B=0:T=9347:D=],((TP63_MdomENSMODP00000018831:0.034607[&&NHX:D=N:T=13616],TP63_MeugENSMEUP00000014131:0.045944[&&NHX:D=N:T=9315])speciation:0.011561[&&NHX:D=N:T=9263:B=100:DD=],TP63_SharENSSHAP00000008666:0.303146[&&NHX:D=N:T=9305])speciation:0.054652[&&NHX:D=N:B=12:T=9263:DD=])speciation:0.017647[&&NHX:D=N:B=2:T=32525:DD=],TP63_OanaENSOANP00000021753:0.079276[&&NHX:D=N:T=9258])speciation:0.043447[&&NHX:D=N:T=40674:B=2:DD=])speciation:0.034349[&&NHX:D=N:T=32524:B=0:DD=],tp63_XtroENSXETP00000055541:0.267401[&&NHX:D=N:T=8364])speciation:0.032348[&&NHX:D=N:B=0:T=32523:DD=],(ENSACAG00000002961_AcarENSACAP00000002870:0.0[&&NHX:D=N:T=28377],ENSACAG00000022533_AcarENSACAP00000021196:1.16541[&&NHX:D=N:T=28377])duplication:0.116614[&&NHX:D=Y:T=28377:B=0])duplication:0.005373[&&NHX:D=Y:T=32523:B=0],TP63_LchaENSLACP00000022643:0.17787[&&NHX:D=N:T=7897])speciation:0.031924[&&NHX:D=N:T=8287:B=0:DD=],(((((((tp63_PforENSPFOP00000001124:0.014737[&&NHX:D=N:T=48698],tp63_XmacENSXMAP00000016461:0.044393[&&NHX:D=N:T=8083])speciation:0.052269[&&NHX:D=N:B=99:T=586240:DD=],tp63_OlatENSORLP00000019616:0.105223[&&NHX:D=N:T=8090])speciation:0.020917[&&NHX:D=N:B=24:T=1489913:DD=],tp63_OnilENSONIP00000024326:0.065197[&&NHX:D=N:T=8128])speciation:0.01928[&&NHX:D=N:T=1489908:B=16:DD=],(tp63_TnigENSTNIP00000016776:0.042973[&&NHX:D=N:T=99883],tp63_TrubENSTRUP00000008025:0.048688[&&NHX:D=N:T=31033])speciation:0.043668[&&NHX:D=N:B=100:T=31031:DD=])speciation:0.020832[&&NHX:D=N:B=77:T=1489872:DD=],(ENSGACG00000013629_GacuENSGACP00000018012:0.069577[&&NHX:D=N:T=69293],ENSGMOG00000000413_GmorENSGMOP00000000401:0.110102[&&NHX:D=N:T=8049])speciation:0.067443[&&NHX:D=N:B=97:T=123368:DD=])duplication:0.040724[&&NHX:DD=Y:B=65:T=123368:D=],(tp63_AmexENSAMXP00000004961:0.092792[&&NHX:D=N:T=7994],tp63_DrerENSDARP00000108362:0.121291[&&NHX:D=N:T=7955])speciation:0.046115[&&NHX:D=N:T=186626:B=86:DD=])speciation:0.034365[&&NHX:D=N:T=186625:B=37:DD=],tp63_LocuENSLOCP00000006202:0.102939[&&NHX:D=N:T=7918])speciation:0.049371[&&NHX:D=N:B=52:T=41665:DD=])speciation:0.110844[&&NHX:D=N:B=0:T=117571:DD=],(((((((((((TP73_LafrENSLAFP00000005892:0.029578[&&NHX:D=N:T=9785],TP73_PcapENSPCAP00000000662:0.051492[&&NHX:D=N:T=9813])speciation:0.003183[&&NHX:D=N:T=311790:B=90:DD=],TP73_EtelENSETEP00000007165:0.095673[&&NHX:D=N:T=9371])speciation:0.033805[&&NHX:D=N:T=311790:B=0:DD=],TP73_DnovENSDNOP00000028722:0.457081[&&NHX:D=N:T=9361])speciation:0.006287[&&NHX:D=N:B=0:T=9347:DD=],((((((((TP73_BtauENSBTAP00000007643:0.009498[&&NHX:D=N:T=9913],TP73_OariENSOARP00000017005:0.019572[&&NHX:D=N:T=9940])speciation:0.012531[&&NHX:D=N:T=9895:B=100:DD=],ENSSSCG00000025685_SscrENSSSCP00000022771:0.057187[&&NHX:D=N:T=9823])speciation:0.018712[&&NHX:D=N:T=91561:B=1:DD=],TP73_TtruENSTTRP00000003223:0.039795[&&NHX:D=N:T=9739])speciation:0.015091[&&NHX:D=N:T=91561:B=0:DD=],(((TP73_AmelENSAMEP00000009745:0.040276[&&NHX:D=N:T=9646],TP73_MpfuENSMPUP00000007349:0.069423[&&NHX:D=N:T=9669])speciation:0.011068[&&NHX:D=N:B=5:T=379584:DD=],TP73_CfamENSCAFP00000028819:0.025289[&&NHX:D=N:T=9615])speciation:0.003214[&&NHX:D=N:B=4:T=379584:DD=],TP73_FcatENSFCAP00000010792:0.059719[&&NHX:D=N:T=9685])speciation:0.021832[&&NHX:D=N:B=20:T=33554:DD=])speciation:0.009094[&&NHX:D=N:T=314145:B=0:DD=],TP73_PvamENSPVAP00000008433:0.078992[&&NHX:D=N:T=132908])speciation:0.005352[&&NHX:D=N:T=314145:B=0:DD=],TP73_EeurENSEEUP00000011975:0.098606[&&NHX:D=N:T=9365])speciation:0.0[&&NHX:D=N:B=0:T=314145:DD=],TP73_EcabENSECAP00000001313:0.038035[&&NHX:D=N:T=9796])speciation:0.007356[&&NHX:D=N:T=314145:B=0:DD=],((((((Trp73_MsspMGP_SPRETEiJ_P0068738:0.0082[&&NHX:D=N:T=10096],Trp73_MmusENSMUSP00000101269:0.011834[&&NHX:D=N:T=10090])speciation:0.027464[&&NHX:D=N:B=100:T=862507:DD=],Tp73_RnorENSRNOP00000052265:0.034464[&&NHX:D=N:T=10116])speciation:0.085459[&&NHX:D=N:T=39107:B=100:DD=],TP73_ItriENSSTOP00000022492:0.061184[&&NHX:D=N:T=43179])speciation:0.008334[&&NHX:D=N:B=2:T=33553:DD=],Trp73_DordENSDORP00000013966:0.076743[&&NHX:D=N:T=10020])speciation:0.0[&&NHX:D=N:T=33553:B=0:DD=],TP73_CporENSCPOP00000009800:0.075508[&&NHX:D=N:T=10141])speciation:0.004958[&&NHX:D=N:T=9989:B=0:DD=],((TP73_MmurENSMICP00000031305:0.033995[&&NHX:D=N:T=30608],TP73_OgarENSOGAP00000005402:0.043894[&&NHX:D=N:T=30611])speciation:0.017054[&&NHX:D=N:T=376911:B=93:DD=],((((((TP73_GgorENSGGOP00000015180:0.00182[&&NHX:D=N:T=9595],TP73_HsapENSP00000367545:0.005775[&&NHX:D=N:T=9606])speciation:0.0[&&NHX:D=N:T=207598:B=92:DD=],TP73_PtroENSPTRP00000000118:0.05274[&&NHX:D=N:T=9598])speciation:0.005412[&&NHX:D=N:B=81:T=207598:DD=],TP73_PabeENSPPYP00000002277:0.013149[&&NHX:D=N:T=9601])speciation:0.000495[&&NHX:D=N:B=30:T=9604:DD=],TP73_NleuENSNLEP00000009887:0.326917[&&NHX:D=N:T=61853])speciation:0.010918[&&NHX:D=N:T=314295:B=0:DD=],((TP73_PanuENSPANP00000007545:0.004788[&&NHX:D=N:T=9555],TP73_CsabENSCSAP00000017283:0.012519[&&NHX:D=N:T=60711])speciation:0.000519[&&NHX:D=N:T=9528:B=86:DD=],TP73_MmulENSMMUP00000040655:0.025402[&&NHX:D=N:T=9544])speciation:0.013713[&&NHX:D=N:B=75:T=9528:DD=])speciation:0.010332[&&NHX:D=N:T=9526:B=0:DD=],TP73_CjacENSCJAP00000005070:0.291972[&&NHX:D=N:T=9483])speciation:0.022859[&&NHX:D=N:B=0:T=314293:DD=])speciation:0.014731[&&NHX:D=N:B=0:T=9443:DD=])speciation:0.020217[&&NHX:D=N:T=314146:B=0:DD=])speciation:0.01086[&&NHX:D=N:T=1437010:B=0:DD=])speciation:0.048685[&&NHX:D=N:T=9347:B=0:DD=],ENSSSCG00000003361_SscrENSSSCP00000003644:0.097446[&&NHX:D=N:T=9823])duplication:0.016508[&&NHX:D=Y:T=9347:B=0],((TP73_MeugENSMEUP00000000705:0.023362[&&NHX:D=N:T=9315],TP73_MdomENSMODP00000008216:0.259151[&&NHX:D=N:T=13616])speciation:0.035881[&&NHX:D=N:B=57:T=9263:DD=],TP73_SharENSSHAP00000006513:0.042193[&&NHX:D=N:T=9305])speciation:0.069704[&&NHX:D=N:T=9263:B=36:DD=])speciation:0.023293[&&NHX:D=N:T=32525:B=2:DD=],TP73_OanaENSOANP00000019815:0.30572[&&NHX:D=N:T=9258])speciation:0.017992[&&NHX:D=N:B=0:T=40674:DD=],(((((TP73_GgalENSGALP00000001485:0.002093[&&NHX:D=N:T=9031],TP73_MgalENSMGAP00000001059:0.036491[&&NHX:D=N:T=9103])speciation:0.047733[&&NHX:D=N:T=9005:B=100:DD=],TP73_AplaENSAPLP00000003415:0.02254[&&NHX:D=N:T=8839])speciation:0.021618[&&NHX:D=N:T=1549675:B=97:DD=],(TP73_TgutENSTGUP00000002829:0.010561[&&NHX:D=N:T=59729],TP73_FalbENSFALP00000010031:0.030208[&&NHX:D=N:T=59894])speciation:0.023763[&&NHX:D=N:T=9126:B=100:DD=])speciation:0.016346[&&NHX:D=N:B=97:T=8825:DD=],TP73_PsinENSPSIP00000004448:0.109544[&&NHX:D=N:T=13735])speciation:0.026517[&&NHX:D=N:T=1329799:B=84:DD=],TP73_AcarENSACAP00000001746:0.128451[&&NHX:D=N:T=28377])speciation:0.019965[&&NHX:D=N:B=67:T=32561:DD=])speciation:0.036745[&&NHX:D=N:T=32524:B=15:DD=],tp73_XtroENSXETP00000010981:0.182635[&&NHX:D=N:T=8364])speciation:0.011019[&&NHX:D=N:B=1:T=32523:DD=],TP73_LchaENSLACP00000021702:0.142378[&&NHX:D=N:T=7897])speciation:0.024057[&&NHX:D=N:B=0:T=8287:DD=],((((((tp73_TnigENSTNIP00000014938:0.027328[&&NHX:D=N:T=99883],tp73_TrubENSTRUP00000038165:0.032469[&&NHX:D=N:T=31033])speciation:0.059199[&&NHX:D=N:T=31031:B=100:DD=],tp73_GacuENSGACP00000008676:0.048591[&&NHX:D=N:T=69293])speciation:0.007086[&&NHX:D=N:T=1489922:B=29:DD=],(((tp73_PforENSPFOP00000010896:0.013197[&&NHX:D=N:T=48698],tp73_XmacENSXMAP00000017403:0.030558[&&NHX:D=N:T=8083])speciation:0.063838[&&NHX:D=N:B=100:T=586240:DD=],tp73_OlatENSORLP00000005521:0.062083[&&NHX:D=N:T=8090])speciation:0.017304[&&NHX:D=N:B=58:T=1489913:DD=],tp73_OnilENSONIP00000002627:0.053778[&&NHX:D=N:T=8128])speciation:0.014746[&&NHX:D=N:T=1489908:B=29:DD=])speciation:0.072637[&&NHX:D=N:B=14:T=1489872:DD=],tp73_GmorENSGMOP00000016675:0.181445[&&NHX:D=N:T=8049])speciation:0.038065[&&NHX:D=N:T=123368:B=98:DD=],(tp73_AmexENSAMXP00000014358:0.086906[&&NHX:D=N:T=7994],tp73_DrerENSDARP00000109674:0.134572[&&NHX:D=N:T=7955])speciation:0.064476[&&NHX:D=N:T=186626:B=100:DD=])speciation:0.04364[&&NHX:D=N:T=186625:B=43:DD=],tp73_LocuENSLOCP00000006343:0.115822[&&NHX:D=N:T=7918])speciation:0.046704[&&NHX:D=N:T=41665:B=14:DD=])speciation:0.167736[&&NHX:D=N:T=117571:B=27:DD=])duplication:0.067299[&&NHX:D=Y:B=0:T=117571],tp63_PmarENSPMAP00000007639:0.797694[&&NHX:D=N:T=7757])speciation:0.076045[&&NHX:D=N:T=7742:B=0:DD=],(('p53/p73-b CintENSCINP00000004447':0.450754[&&NHX:D=N:T=7719],ENSCSAVG00000009788_CsavENSCSAVP00000016659:0.47517[&&NHX:D=N:T=51511])speciation:0.378426[&&NHX:D=N:B=100:T=7718:DD=],(ENSCING00000001960_CintENSCINP00000003956:0.141945[&&NHX:D=N:T=7719],ENSCSAVG00000009964_CsavENSCSAVP00000016940:0.26284[&&NHX:D=N:T=51511])speciation:0.525939[&&NHX:D=N:T=7718:B=100:DD=])duplication:0.603292[&&NHX:D=Y:B=100:T=7718])duplication:0.0[&&NHX:D=N:T=7711:B=0:DD=];\",\n }\n\n // this make able the corner placement for all UI elements inside\n this.container_d3.style('position', 'relative')\n\n // remove previous placeholder & UI\n this.container_d3.selectAll(\".corner_placeholder\").remove()\n this.container_d3.selectAll(\".modal_data\").remove()\n this.remove_scale()\n this.remove_color_legend('node')\n this.remove_color_legend('leaf')\n this.container_d3.selectAll(\".menu_settings\").remove()\n this.container_d3.selectAll(\".empty_message\").remove()\n this.container_d3.select('#histogram-legend').remove();\n\n this.container_d3.select(\"#menu-node\").remove()\n\n/*\n if (phylo.phylo_embedded && !empty_mode){\n\n tooltip_object[0].hide()\n tooltip_object[3].hide()\n\n\n }\n\n\n */\n\n\n if (empty_mode){\n this.top_left = this.add_top_left_container()\n this.add_data_icon()\n this.add_empty_message()\n return\n }\n\n // Create corner placeholder for UI elements\n this.bottom_left = this.add_bottom_left_container()\n this.bottom_right = this.add_bottom_right_container()\n this.top_left = this.add_top_left_container()\n this.top_right = this.add_top_right_container()\n\n // BOTTOM LEFT\n if (this.viewer.model.settings.use_branch_lenght) {\n this.scale_text = this.add_scale()\n }\n this.loader = this.bottom_left.append('text').style('color', 'red').style('font-size', 'small')\n if (this.container_object.message_loader){\n this.update_loader_message()\n }\n //this.add_root_badge()\n\n // BOTTOM RIGHT\n\n if (this.viewer.model.big_tree){\n this.add_rescale_zoom()\n }\n this.add_maximise()\n this.add_fit_height()\n this.add_zoom()\n\n // TOP LEFT\n if (!this.api.settings.phylostratigraphy) {\n if (this.container_object.models.length > 0) {\n this.add_toggle()\n }\n this.add_data_icon()\n }\n\n // TOP RIGHT\n this.add_search()\n this.add_export()\n this.add_meta()\n this.add_settings()\n this.add_undo()\n\n // COLOR LEGEND\n if (this.api.settings.compareMode || (this.viewer.model.settings.style.color_accessor['node'] !== null && this.viewer.model.settings.style.color_accessor['node'] !== 'Topology' )){\n this.add_color_legend('node')\n }\n\n if (this.viewer.model.settings.style.color_accessor['leaf'] !== null){\n this.viewer.set_color_scale('leaf')\n this.add_color_legend('leaf')\n }\n\n // Add Stack\n if (this.viewer.model.settings.has_histogram_data && this.viewer.model.settings.show_histogram){\n\n this.add_histogram_legend();\n\n }\n\n\n\n }\n\n // PLACEHOLDER\n add_bottom_left_container() {\n return this.container_d3.append(\"div\")\n .attr(\"class\",\"corner_placeholder bottom left\")\n .style(\"flex-direction\", \"column\")\n }\n add_bottom_right_container(){\n return this.container_d3.append(\"div\")\n .attr(\"class\",\"corner_placeholder bottom right\")\n .style(\"flex-direction\", \"column\")\n .style( \"align-items\", \"flex-end\")\n }\n add_top_left_container(){\n return this.container_d3.append(\"div\")\n .attr(\"class\",\"corner_placeholder top left\")\n }\n add_top_right_container(){\n var div = this.container_d3.append(\"div\").attr(\"class\",\"corner_placeholder top right\")\n .style(\"flex-direction\",'column')\n .style(\"align-items\",'end')\n\n this.tr_buttons = div.append(\"div\").attr(\"class\",\"tr-button\").style(\"display\",'flex')\n\n this.tr_menus = div.append(\"div\").attr(\"class\",\"tr-menus\")\n\n return div\n }\n\n update_loader_message(){\n this.loader.text(this.container_object.message_loader)\n }\n\n\n add_histogram_legend() {\n\n\n d3__WEBPACK_IMPORTED_MODULE_1__.select('#histogram-legend').remove();\n\n var width = 230;\n var height = 80;\n var svgHeight = height + 25;\n var legendRectSize = 20;\n var left_margin = 25;\n var top_margin = 50;\n\n if (this.api.settings.phylostratigraphy){\n top_margin = 25;\n }\n\n var legendTxtSize = 13;\n // center text in the middle of the legend colored rectangle, rounding it to smaller Y-value\n var legendTxtYPadding = (legendRectSize + legendTxtSize) / 2\n\n if(this.viewer.model.settings.stack.type == \"genes\"){\n var dataLabels = [\"Gained\", \"Duplicated\", \"Retained\", \"Lost\" ]\n } else {\n var dataLabels = [\"Gains\", \"Duplications\", \"Losses\" ]\n }\n\n // to position legends correctly\n var rects = dataLabels.length - 1;\n\n\n var legendSvg = this.viewer.svg.append(\"svg\")\n .attr(\"id\", \"histogram-legend\")\n .attr(\"x\", left_margin)\n .attr(\"y\", top_margin)\n .attr(\"width\", width + \"px\")\n .attr(\"height\", svgHeight + \"px\")\n .append(\"g\")\n\n\n legendSvg.append(\"line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", rects * legendRectSize)\n .attr(\"x2\", 200)\n .attr(\"y2\", rects * legendRectSize)\n .attr(\"class\", \"divline\")\n .attr(\"stroke-width\", 2)\n .attr(\"stroke\", \"black\");\n\n legendSvg.selectAll('rect')\n .data(dataLabels)\n .enter()\n .append('rect')\n .attr('x', 110)\n .attr('y', function(d, i){\n return i * legendRectSize;\n })\n .attr('width', legendRectSize)\n .attr('height', legendRectSize)\n .attr('fill', (d, i, node) => {\n return this.viewer.settings.stack.colorMap[d];\n });\n\n legendSvg.selectAll('text')\n .data(dataLabels)\n .enter()\n .append('text')\n .text(function(d){\n return d;\n })\n .attr('x', 110 + legendRectSize + 5)\n .attr('y', function(d, i){\n return i * legendRectSize + legendTxtYPadding;\n })\n .attr('text-anchor', 'start')\n .attr('alignment-baseline', 'baseline')\n .attr(\"font-size\", legendTxtSize).attr(\"stroke\", \"black\");\n\n\n legendSvg\n .append('text')\n .attr(\"class\", \"legendGeneTotal\")\n .text(\"Total # of \"+this.viewer.model.settings.stack.type)\n .attr('x', 0)\n .attr('y', rects * legendRectSize - 5)\n .attr('text-anchor', 'start')\n .attr(\"font-size\", legendTxtSize).attr(\"stroke\", \"black\");\n\n d3__WEBPACK_IMPORTED_MODULE_1__.selectAll(\".legendGeneTotal\").moveToFront();\n\n }\n\n // DATA ICON\n\n get_modal_adder_corpus(){\n return `\n \n <div class=\"container-fluid\">\n \n <div class=\"card\">\n \n <div class=\"card-body\">\n \n <h5> <b>Step 1: Add data from text or file</b> </h5>\n \n \n <div class=\"row\" style=\" margin-left: 24px\">\n <div class=\"col\" >\n <textarea class=\"form-control\" placeholder=\"Paste or type your tree here\" id=\"exampleFormControlTextarea1s\" rows=\"3\"></textarea>\n\n\n </div>\n <div class=\"col-1 my-auto \"><p class=\"align-middle\" style=\"margin: 0px;\"><b>OR</b></p></div>\n <div class=\"col my-auto\">\n\n <div class=\"input-group mb-3\" style=\"padding-left: 24px;\">\n <input class=\"form-control\" type=\"file\" id=\"add_tree_file_input\"> <div class=\"input-group-append\">\n </div>\n </div>\n\n\n </div>\n </div>\n\n <div class=\"row\" style=\"margin-left: 24px\">\n <div class=\"col\" >\n <h6 class=\"card-subtitle mb-2 text-muted\" style=\"margin-top: 6px\"><small>Example: <a href=\"#\" class=\"t1\">tree #1</a>, <a href=\"#\" class=\"t2\">tree #2</a>, <a href=\"#\" class=\"tbig\">big tree</a>, <a href=\"#\" class=\"nhx_ex\">Extended Newick</a>.</small></h6>\n </div>\n </div>\n \n </div>\n\n \n </div>\n \n <br>\n \n <div class=\"card\">\n \n <div class=\"card-body\">\n \n <h5> <b>Step 2: Choose tree data format </b> </h5>\n \n \n <div class=\"text-center\">\n\n <select class=\"custom-select\" id=\"add_tree_str_select\" style=\"margin-left: 24px;\">\n <option selected value=\"newick\">Newick</option>\n <option value=\"nhx\">Extended Newick</option>\n </select>\n\n\n </div>\n\n\n \n </div>\n\n \n </div>\n \n <br>\n \n <div class=\"card\">\n \n <div class=\"card-body\">\n \n <h5> <b>(Optional) Step 3 : Add a mapping file </b> </h5>\n \n <br>\n \n STEP3__\n \n \n </div>\n\n \n </div>\n \n <br>\n \n <div style=\"margin: auto; width: fit-content;\">\n \n \n <button type=\"button\" class=\"btn btn-danger\" data-bs-dismiss=\"modal\">Cancel</button>\n <button type=\"button\" id=\"modal_add_tree_final_button\" class=\"btn btn-success\" data-bs-dismiss=\"modal\" >Upload tree</button>\n \n </div>\n \n </div>\n \n \n `\n }\n\n\n add_data_icon(){\n\n this.container_d3.select(\"#exampleModal\" + this.container_object.uid).remove()\n\n var b = this.top_left.append('button')\n .attr('class', ' dashed_button')\n .attr('id', 'buttonmodal_' + this.container_object.div_id )\n .attr('data-bs-toggle', 'modal')\n .attr('data-bs-target', '#exampleModal' + this.container_object.uid)\n .attr('data-bs-placement', 'right')\n .attr('title', 'Add a new tree')\n .append(\"div\")\n .attr(\"class\",\"label\")\n\n b.html(\" <i class='fas fa-plus' style='color:#888'></i> Add tree\")\n\n let mod_html = this.get_modal_template()\n\n mod_html = mod_html.replace('TEMPLATE_CORPUS', this.get_modal_adder_corpus())\n mod_html = mod_html.replace('TITLE_', 'Upload your tree')\n mod_html = mod_html.replace('SUB_TITLE_', '')\n mod_html = mod_html.replace('STEP3__', this.get_modal_meta_corpus())\n\n\n\n mod_html = mod_html.replace('exampleFormControlTextarea1s', 'exampleFormControlTextarea1s' + this.container_object.uid)\n mod_html = mod_html.replace('add_tree_file_input', 'add_tree_file_input' + this.container_object.uid)\n mod_html = mod_html.replace('exampleModal', 'exampleModal' + this.container_object.uid)\n mod_html = mod_html.replace('add_tree_str_select', 'add_tree_str_select' + this.container_object.uid)\n mod_html = mod_html.replace('modal_add_tree_final_button', 'modal_add_tree_final_button' + this.container_object.uid)\n mod_html = mod_html.replace('upload_mapping_close', 'upload_mapping_close' + this.container_object.uid)\n mod_html = mod_html.replace('upload_mapping_validation', 'upload_mapping_validation' + this.container_object.uid)\n\n // META CORPUS\n\n mod_html = mod_html.replaceAll('add_meta_file_input', 'tree_adder_modal_add_mapping_file_input' + this.container_object.uid)\n mod_html = mod_html.replace('mod_meta_card2', 'tree_adder_mod_meta_card2_' + this.container_object.uid)\n mod_html = mod_html.replace('mod_meta_card3', 'tree_adder_mod_meta_card3_' + this.container_object.uid)\n mod_html = mod_html.replace('mod_meta_card2_radio', 'tree_adder_mod_meta_card2_radio' + this.container_object.uid)\n\n mod_html = mod_html.replace('flexCheckChecked', 'tree_adder_flexCheckChecked' + this.container_object.uid)\n mod_html = mod_html.replace('flexCheckDefault', 'tree_adder_flexCheckDefault' + this.container_object.uid)\n\n mod_html = mod_html.replace('mapping_check_nodes', 'tree_adder_mapping_check_nodes' + this.container_object.uid)\n mod_html = mod_html.replace('mapping_check_leaf', 'tree_adder_mapping_check_leaf' + this.container_object.uid)\n\n //\n\n\n\n\n document.getElementById(this.container_object.div_id).insertAdjacentHTML('afterend',mod_html)\n\n var modmod = document.getElementById('exampleModal'+ this.container_object.uid);\n\n var thaty = this\n\n const add_tree_helpers = function(container_object, str, format, mapping){\n\n var mapping = (typeof mapping == 'undefined') ? false : mapping;\n\n container_object.add_tree(str, {'data_type':format})\n container_object.current_model = container_object.models.length-1\n\n if (mapping !== false){\n\n let moddy = container_object.models[container_object.current_model]\n\n moddy.settings.use_meta_for_leaf = mapping.parameters.use_meta_for_leaf\n moddy.settings.use_meta_for_node = mapping.parameters.use_meta_for_node\n\n if (moddy.settings.use_meta_for_leaf){\n moddy.add_meta_leaves(mapping.meta, mapping.parameters.headers, container_object.api)\n }\n\n if (moddy.settings.use_meta_for_node){\n moddy.add_meta_nodes(mapping.meta, mapping.parameters.headers, container_object.api)\n }\n\n }\n\n\n document.querySelector('#exampleModal'+ container_object.uid).style.display = 'none'\n document.querySelectorAll('.modal-backdrop').forEach(elem => {\n elem.parentNode.removeChild(elem);\n });\n container_object.viewer.set_data(container_object.models[container_object.current_model]);\n container_object.api.stop_all_workers()\n container_object.compute_topology_and_render_bounded_viewer()\n container_object.viewer.render(container_object.viewer.hierarchy);\n //container_object.viewer.update_collapse_level(container_object.models[container_object.current_model].settings.collapse_level)\n\n\n if (thaty.api.settings.compute_distance && thaty.api.bound_container.includes(thaty)){\n thaty.api.send_worker_distance()\n }\n }\n\n const add_data_from_modal = (format) => {\n\n // mapping information\n var mapping_file = document.getElementById('tree_adder_modal_add_mapping_file_input' + that.container_object.uid).files[0];\n\n\n let s = document.getElementById(\"exampleFormControlTextarea1s\" + this.container_object.uid).value\n\n if (s.length > 0){\n\n if (mapping_file) {\n\n var parameters = that.get_mapping_parameter_from_UI(true)\n\n console.log(parameters)\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n\n var meta = []\n\n if (mapping_file.name.split('.').pop() == 'tsv'){\n d3__WEBPACK_IMPORTED_MODULE_1__.tsvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n else{\n d3__WEBPACK_IMPORTED_MODULE_1__.csvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n\n\n\n add_tree_helpers(this.container_object, s, format, {'meta': meta, 'parameters': parameters})\n return\n\n\n\n });\n reader.readAsText(mapping_file);\n\n\n }\n else {\n add_tree_helpers(this.container_object, s, format)\n return}\n\n\n\n\n }\n\n var file = document.getElementById('add_tree_file_input' + this.container_object.uid).files[0];\n\n if (file) {\n var reader = new FileReader();\n reader.readAsText(file, \"UTF-8\");\n reader.onload = (evt) => {\n\n if (mapping_file) {\n var parameters = that.get_mapping_parameter_from_UI(true)\n\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n\n var meta = []\n\n\n if (mapping_file.name.split('.').pop() == 'tsv'){\n d3__WEBPACK_IMPORTED_MODULE_1__.tsvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n else{\n d3__WEBPACK_IMPORTED_MODULE_1__.csvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n\n add_tree_helpers(this.container_object, evt.target.result, format, {'meta': meta, 'parameters': parameters})\n return\n\n\n\n });\n reader.readAsText(mapping_file);\n\n\n }\n else {\n add_tree_helpers(this.container_object, evt.target.result, format)\n return}\n\n\n }\n reader.onerror = function (evt) {\n console.log(\"error reading file\")\n }\n }\n\n\n\n }\n\n document.getElementById('modal_add_tree_final_button' + this.container_object.uid).onclick = () => {\n\n\n var e = document.getElementById('add_tree_str_select' + this.container_object.uid);\n\n add_data_from_modal(e.value)\n }\n\n modmod.getElementsByClassName('t1')[0].onclick = () => {\n document.getElementById(\"exampleFormControlTextarea1s\"+ this.container_object.uid).value = this.examples.small1\n document.getElementById('add_tree_str_select' + this.container_object.uid).value = 'newick'\n };\n\n modmod.getElementsByClassName('t1')[0].onclick = () => {\n document.getElementById(\"exampleFormControlTextarea1s\"+ this.container_object.uid).value = this.examples.small1\n document.getElementById('add_tree_str_select' + this.container_object.uid).value = 'newick'\n };\n\n modmod.getElementsByClassName('t2')[0].onclick = () => {\n document.getElementById(\"exampleFormControlTextarea1s\"+ this.container_object.uid).value = this.examples.small2\n document.getElementById('add_tree_str_select' + this.container_object.uid).value = 'newick'\n };\n\n modmod.getElementsByClassName('tbig')[0].onclick = () => {\n document.getElementById(\"exampleFormControlTextarea1s\"+ this.container_object.uid).value = this.examples.big\n document.getElementById('add_tree_str_select' + this.container_object.uid).value = 'newick'\n };\n\n modmod.getElementsByClassName('nhx_ex')[0].onclick = () => {\n document.getElementById(\"exampleFormControlTextarea1s\"+ this.container_object.uid).value = this.examples.nhx\n document.getElementById('add_tree_str_select' + this.container_object.uid).value = 'nhx'\n };\n\n\n // META DATA UPLOADER\n document.getElementById('upload_mapping_validation'+ this.container_object.uid).style.display = 'none'\n document.getElementById('upload_mapping_close'+ this.container_object.uid).style.display = 'none'\n\n\n\n var x = modmod.getElementsByClassName('card')\n for (var i = 0; i < x.length; i++) {\n x[i].style.border = 'none';\n }\n\n // Add JS for modal corpus\n var that = this\n\n document.getElementById('tree_adder_modal_add_mapping_file_input' + this.container_object.uid).onchange = function() {\n let input = this.files[0];\n\n if (input) {\n\n document.getElementById('tree_adder_mod_meta_card2_' + that.container_object.uid).style.display = 'block'\n document.getElementById('tree_adder_mod_meta_card3_' + that.container_object.uid).style.display = 'block'\n\n var reader = new FileReader();\n var data;\n\n reader.addEventListener(\"load\", parseFile, false);\n reader.readAsText(input);\n function parseFile(){\n\n // load data\n if (input.name.split('.').pop() == 'tsv'){\n data = d3__WEBPACK_IMPORTED_MODULE_1__.tsvParse(reader.result, function(d){\n return d;\n });\n }\n else{\n\n data = d3__WEBPACK_IMPORTED_MODULE_1__.csvParse(reader.result, function(d){\n return d;\n });\n\n }\n\n\n // Get columns + types\n var numerisator = {}\n data['columns'].forEach((currentElement) => { if (currentElement != 'id'){ numerisator[currentElement] = 'num'}})\n data.forEach((currentElement) => {\n for (var key of Object.keys(numerisator)) {\n if (isNaN(currentElement[key])){\n numerisator[key] = 'cat'\n }\n }\n })\n\n // creates radios\n var radio_container = document.getElementById( 'tree_adder_mod_meta_card2_radio' + that.container_object.uid)\n var get_el = function(){return `\n \n <div style = \"padding: 12px 24px 0;\"> <span><b style = \"margin-right: 12px\" > Column: </b> \"NAME_\"</span> <br>\n\n <div class=\"form-check \" style=\"margin-left: 24px\" >\n <input class=\"form-check-input \" name=\"flexRadioDefault\" type=\"radio\" value=\"num\" id=\"RADIO_1\" ATTR_NUM>\n <label class=\"form-check-label\" for=\"RADIO_1\">\n Numerical\n </label>\n </div>\n \n <div class=\"form-check \" style=\"margin-left: 24px\" >\n <input class=\"form-check-input\" name=\"flexRadioDefault\" type=\"radio\" value=\"cat\" id=\"RADIO_2\" ATTR_CAT>\n <label class=\"form-check-label\" for=\"RADIO_2\">\n Categorical\n </label>\n </div>\n \n <div class=\"form-check\" style=\"margin-left: 24px\">\n <input class=\"form-check-input\" name=\"flexRadioDefault\" type=\"radio\" value=\"color\" id=\"RADIO_3\">\n <label class=\"form-check-label\" for=\"RADIO_3\">\n Color\n </label>\n </div>\n \n \n \n \n \n \n \n </div>\n `}\n\n for (var key of Object.keys(numerisator)){\n\n var rad = get_el()\n\n\n rad = rad.replace('NAME_', key)\n rad = rad.replaceAll('flexRadioDefault', 'tree_adder_flexRadioDefault_' + key + that.container_object.uid )\n rad = rad.replace('RADIO_1', that.container_object.uid + 'mapping_header_radiotree_adder_1' + '__' + key )\n rad = rad.replace('RADIO_2', that.container_object.uid + 'mapping_header_radiotree_adder_2' + '__' + key )\n rad = rad.replace('RADIO_3', that.container_object.uid + 'mapping_header_radiotree_adder_3' + '__' + key )\n\n\n\n if (numerisator[key] == 'num'){\n rad = rad.replace('ATTR_NUM', 'checked')\n rad = rad.replace('ATTR_CAT', '')\n }\n else{\n rad = rad.replace('ATTR_NUM', 'disabled')\n rad = rad.replace('ATTR_CAT', 'checked')\n }\n\n\n\n radio_container.insertAdjacentHTML('beforeend',rad)\n\n }\n radio_container.insertAdjacentHTML('beforeend','<br>')\n\n }\n\n }\n\n };\n\n\n\n }\n\n get_modal_template(){\n return `\n <div class=\"modal\" id=\"exampleModal\" tabindex=\"-1\">\n <div class=\"modal-dialog modal-dialog-centered modal-lg\">\n <div class=\"modal-content\">\n \n <div class=\"modal-header\" style=\"height: 128px;border:none !important\">\n <h3 class=\"modal-title\" id=\"exampleModalLabel\" style=\"margin: auto; text-align: center\">\n <b>TITLE_</b> <br>\n \n <small style=\"color:grey\">\n SUB_TITLE_\n </small>\n </h3>\n \n </div>\n \n <div class=\"modal-body\" style=\"background-color: #f8f9fa; padding: 24px 48px;\">\n \n \n TEMPLATE_CORPUS\n \n </div>\n \n \n </div>\n\n </div>\n </div>\n </div>\n`\n }\n\n // TOGGLE\n add_toggle(){\n var sub_div = this.top_left.append(\"div\")\n .style( \"display\", \"flex\")\n .style('margin', '2px')\n\n\n var butty_putty = sub_div.append('button')\n .on('click', d => {return this.container_object.shift_model(-1)})\n .attr('class', ' square_button')\n .attr('id', 'buttontoggleleft_' + this.container_object.div_id )\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'Load previous tree')\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-chevron-left ')\n\n butty_putty.append('p')\n .text('Previous')\n .style('font-size', 'xx-small')\n\n this.tooltip_shiftleft = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttontoggleleft_' + this.container_object.div_id))\n\n\n\n var stoggle = sub_div.append('div')\n .attr('class', ' square_button screen_toggle')\n .style('min-width', '92px')\n .style('display', 'flex')\n .style('align-items', 'center')\n\n\n var sd = stoggle.append('div')\n\n\n\n\n sd.append(\"div\")\n .style('cursor', 'text')\n .attr('id', 'input_edit_name'+ this.container_object.uid)\n .attr(\"contenteditable\",\"true\")\n .attr(\"class\",\"label\")\n .style('display', 'inline')\n .text(this.viewer.model.settings.name)\n\n\n\n var ol = sd.append(\"ul\").attr('class', \"progress-indicator\" )\n .style('width', 'auto')\n .style('min-width', \"50px\")\n\n for (var i = 0; i < this.container_object.models.length; i++) {\n\n let li = ol.append('li')\n\n if (i == this.container_object.current_model){\n\n li.attr('class','completed' )\n\n }\n\n li.append('span')\n .attr('class','bubble' )\n\n }\n\n\n sub_div.append('button')\n .attr('class', 'square_button')\n .attr('id', 'button_edit_name_check'+ this.container_object.uid)\n .append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#fff')\n .attr('class', ' fas fa-check ')\n\n sub_div.append('button')\n .attr('class', 'square_button button_edit_name')\n .attr('id', 'button_edit_name_trash'+ this.container_object.uid)\n .append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#fff')\n .attr('class', ' fas fa-trash ')\n\n\n var butty_putty = sub_div.append('button')\n .attr('class', ' square_button')\n .on('click', d => { return this.container_object.shift_model(1)})\n .attr('id', 'buttonshiftright_' + this.container_object.div_id )\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'Load next tree')\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-chevron-right ')\n\n butty_putty.append('p')\n .text('Next')\n .style('font-size', 'xx-small')\n\n this.tooltip_shiftright = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonshiftright_' + this.container_object.div_id))\n\n\n\n // bind events and action to editable div\n\n var edit_name = document.querySelector('#input_edit_name'+ this.container_object.uid);\n var edit_name_ok = document.querySelector('#button_edit_name_check'+ this.container_object.uid);\n var edit_name_trash = document.querySelector('#button_edit_name_trash'+ this.container_object.uid);\n\n edit_name.addEventListener(\"keypress\", (e) => {\n if (e.which == 13) {\n event.preventDefault();\n edit_name_ok.style.display = 'none';\n edit_name_trash.style.display = 'none';\n var old_name = this.viewer.model.get_name()\n this.container_object.add_action('Rename tree', this.viewer.model, this.viewer.model.set_name, [old_name], true )\n this.viewer.model.set_name(edit_name.textContent)\n return false;\n }\n\n\n //You can add delete key event code as well over here for windows users.\n if(edit_name.textContent.length === 20 && e.keyCode != 8) {\n e.preventDefault();\n }\n });\n\n edit_name.addEventListener('focus', (event) => {\n edit_name_ok.style.display = 'inline';\n edit_name_trash.style.display = 'inline';\n });\n\n edit_name.addEventListener('blur', (event) => {\n setTimeout(() => {\n edit_name_ok.style.display = 'none';\n edit_name_trash.style.display = 'none';\n edit_name.textContent = this.viewer.model.get_name()\n }, 300);\n\n });\n\n\n edit_name_trash.addEventListener('click', (event) => {\n this.container_object.remove_current_tree(true)\n\n });\n\n edit_name_ok.addEventListener('click', (event) => {\n var old_name = this.viewer.model.get_name()\n this.container_object.add_action('Rename tree', this.viewer.model, this.viewer.model.set_name, [old_name], true )\n this.viewer.model.set_name(edit_name.textContent)\n\n });\n\n\n\n\n }\n\n add_rescale_zoom(){\n\n var butty_putty = this.bottom_right.append('button')\n .on('click', d => {\n\n this.viewer.force_zoom_rescaling = true;\n this.viewer.zoomed( {'transform':this.viewer.d3.zoomTransform(this.viewer.svg.node())});\n this.viewer.force_zoom_rescaling = false;\n })\n .attr('class', ' square_button')\n .attr('id', 'buttonscaleviewer_' + this.container_object.div_id )\n .attr('data-bs-placement', 'left')\n .attr('title', 'Optimise text size')\n .style('margin', '2px')\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-text-height ')\n\n butty_putty.append('p')\n .text('Optimise text')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n\n\n this.tooltip_fitviewer = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonscaleviewer_' + this.container_object.div_id))\n\n }\n\n add_fit_height() {\n\n var butty_putty = this.bottom_right.append('button')\n .on('click', d => {\n this.viewer.fit_to_viewer_height()\n })\n .attr('class', ' square_button')\n .attr('id', 'buttonfitviewer_' + this.container_object.div_id )\n .attr('data-bs-placement', 'left')\n .attr('title', 'Optimise view (possible collapse/expand)')\n .style('margin', '2px')\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-compress ')\n\n butty_putty.append('p')\n .text('Optimise view')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n\n this.tooltip_fitviewer = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonfitviewer_' + this.container_object.div_id))\n\n }\n\n add_maximise() {\n\n var butty_putty= this.bottom_right.append('button')\n .on('click', d => {\n this.viewer.maximise_zoom()\n })\n .attr('class', ' square_button')\n .attr('id', 'button_maximise_zoom_' + this.container_object.div_id )\n .attr('data-bs-placement', 'left')\n .attr('title', 'Fit tree into viewer (no collapse/expand)')\n .style('margin', '2px')\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-expand ')\n\n butty_putty.append('p')\n .text('Fit screen')\n .style('font-size', 'xx-small')\n\n this.tooltip_fitviewer = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('button_maximise_zoom_' + this.container_object.div_id))\n\n }\n\n // BADGE ROOTING\n add_root_badge() {\n\n\n\n this.bottom_left.append('button')\n .attr('class', ' square_button')\n .style('padding', '4px')\n .style('margin', '2px')\n .style('cursor', 'default')\n .style('color', 'white')\n .style('background', 'rgb(136, 136, 136)')\n .append(\"div\")\n .on('click', d => { return this.container_object.toggle_rooting()})\n .attr(\"class\", \"label\")\n .append('small')\n .html(this.viewer.model.rooted ? 'Rooted Tree <i class=\\\"fas fa-sync-alt\\\"></i>' : 'Unrooted Tree <i class=\\\"fas fa-sync-alt\\\"></i> ')\n }\n\n // ZOOM\n add_zoom(){\n\n var butty_putty =this.bottom_right.append('button')\n .on('click', d => {return this.viewer.zoom_in()})\n .attr('class', ' square_button')\n .attr('id', 'buttonzoomplus_' + this.container_object.div_id )\n .attr('data-bs-placement', 'left')\n .attr('title', 'Zoom in')\n .style('margin', '2px')\n\n\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-search-plus ')\n\n butty_putty.append('p')\n .text('Zoom in')\n .style('font-size', 'xx-small')\n\n this.tooltip_zoomplus = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonzoomplus_' + this.container_object.div_id))\n\n\n var butty_putty = this.bottom_right.append('button')\n .on('click', d => {return this.viewer.zoom_out()})\n .attr('class', ' square_button')\n .style('margin', '2px')\n .attr('id', 'buttonzoomminus_' + this.container_object.div_id )\n .attr('data-bs-placement', 'left')\n .attr('title', 'Zoom out')\n\n\n\n butty_putty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-search-minus ')\n\n butty_putty.append('p')\n .text('Zoom out')\n .style('font-size', 'xx-small')\n\n this.tooltip_zoomminus = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonzoomminus_' + this.container_object.div_id))\n\n }\n\n // SCALE\n add_scale(){\n\n var scaleLineLateralPadding = 10\n var scaleLineBottomPadding = 10\n\n\n var gg = this.viewer.svg_d3.node().append('g')\n .attr(\"class\", 'scale')\n .attr(\"transform\", \"translate(0,\" + (this.viewer.height - scaleLineBottomPadding) + \")\")\n\n gg.append(\"path\")\n .attr(\"d\", (d) => {return \"M\" + scaleLineLateralPadding + \",20L\" + (this.scale_pixel_length) + \",20\"})\n .attr(\"class\", 'scale_line')\n\n\n var scale_text = gg.append(\"text\")\n .attr(\"class\", 'scale_text')\n .attr(\"x\", this.scale_pixel_length/2)\n .attr(\"y\", 10)\n .attr(\"fill\", \"#555\")\n .attr('text-anchor', 'middle')\n .attr(\"dy\", \".2em\")\n .text(d => {return this.compute_scale()})\n\n\n return scale_text\n\n\n\n }\n remove_scale(){this.container_d3.select(\".scale\").remove()}\n\n update_scale_value(zoom_scale){\n this.scale_text.text(this.compute_scale(zoom_scale))\n\n }\n\n compute_scale(zoom_scale){\n var zoom_scale = zoom_scale || 1;\n return (this.viewer.scale_branch_length.invert(this.scale_pixel_length)/zoom_scale).toFixed(4);\n }\n\n //COLORING\n add_color_legend(type){\n\n this.container_d3.select(\".colorlegend_\" + type).remove()\n\n var tt =this.viewer.model.settings.extended_data_type[this.viewer.model.settings.style.color_accessor[type]]\n\n if ( tt === 'cat' || tt === 'color'){return}\n\n\n var type = (typeof type !== 'undefined') ? type : 'node';\n\n let top_padding = 16;\n let left_padding = 16;\n let width = 16;\n let height = 100;\n let gutter = 8;\n let rect_height = height/100;\n\n var offset = type == 'node' ? (this.viewer.height/2) + 30 : this.viewer.height/2-height - 10\n\n let gg = this.viewer.svg_d3.node().append('g')\n .attr(\"class\", 'colorlegend_' + type)\n\n\n var values = []\n\n for (let i = 0; i < 100; i++) {\n let n = this.viewer.intercolor[type]((i/100).toFixed(2));\n values.push(this.viewer.colorScale[type](n));\n }\n\n gg.selectAll(\"rect\")\n .data(values)\n .join(\"rect\")\n .attr(\"x\", left_padding)\n .attr(\"y\", (d, i) => offset + i)\n .attr(\"width\", width)\n .attr(\"height\", rect_height)\n .attr(\"fill\", d => d);\n\n gg.append(\"text\")\n .attr(\"x\", left_padding + width + gutter )\n .attr(\"y\", offset - 6 )\n .attr(\"fill\", \"#555\")\n .attr('text-anchor', 'start')\n .attr(\"dy\", \".2em\")\n .text(() => {\n var ms = this.viewer.model.settings.style;\n\n if (ms.color_accessor[type]){\n var n = ms.color_extent_max[type][ms.color_accessor[type]];\n return Number.isInteger(n) ? n : parseFloat(n).toFixed(3);\n\n }\n return 1\n })\n\n gg.append(\"text\")\n .attr(\"x\", left_padding + width + gutter )\n .attr(\"y\", offset + height + 10 )\n .attr(\"fill\", \"#555\")\n .attr('text-anchor', 'start')\n .attr(\"dy\", \".2em\")\n .text(() => {\n var ms = this.viewer.model.settings.style;\n\n if (ms.color_accessor[type]){\n\n var n;\n\n if (ms.color_extent_max[type][ms.color_accessor[type]] == ms.color_extent_min[type][ms.color_accessor[type]]){\n n = ms.color_extent_min[type][ms.color_accessor[type]]-1;\n }else{\n n = ms.color_extent_min[type][ms.color_accessor[type]];\n }\n\n\n return Number.isInteger(n) ? n : parseFloat(n).toFixed(3);\n\n }\n return 0\n })\n\n\n var xx = gutter\n var yy = offset + height/2\n\n gg.append(\"text\")\n .attr(\"fill\", \"#555\")\n .attr('transform', \"translate(\"+xx+\", \" +yy+ \")rotate(-90)\")\n .attr('text-anchor', 'middle')\n .attr(\"dy\", \".2em\")\n .text(() => {\n var ms = this.viewer.model.settings.style;\n return ms.color_accessor[type] ? ms.color_accessor[type] : \"Topology\"\n\n\n })\n\n }\n remove_color_legend(type){this.container_d3.select(\".colorlegend_\" + type).remove()}\n\n // SEARCH\n\n autocomplete(inp, arr) {\n\n var that = this\n\n\n /*the autocomplete function takes two arguments,\n the text field element and an array of possible autocompleted values:*/\n var currentFocus;\n /*execute a function when someone writes in the text field:*/\n\n inp.addEventListener(\"input\", function(e) {\n\n\n\n var a, b, i, val = this.value;\n /*close any already open lists of autocompleted values*/\n closeAllLists();\n if (!val) { return false;}\n currentFocus = -1;\n /*create a DIV element that will contain the items (values):*/\n a = document.createElement(\"DIV\");\n a.setAttribute(\"id\", this.id + \"autocomplete-list\");\n a.setAttribute(\"class\", \"autocomplete-items\");\n /*append the DIV element as a child of the autocomplete container:*/\n this.parentNode.appendChild(a);\n /*for each item in the array...*/\n for (i = 0; i < arr.length; i++) {\n /*check if the item starts with the same letters as the text field value:*/\n if (arr[i].toUpperCase().includes(val.toUpperCase()) ){\n //if (arr[i].substr(0, val.length).toUpperCase() === val.toUpperCase()) {\n /*create a DIV element for each matching element:*/\n b = document.createElement(\"DIV\");\n /*make the matching letters bold:*/\n var start_index = arr[i].toUpperCase().indexOf(val.toUpperCase())\n b.innerHTML += arr[i].substr(0, start_index);\n b.innerHTML += \"<strong>\" + arr[i].substr(start_index, val.length) + \"</strong>\";\n b.innerHTML += arr[i].substr(start_index + val.length);\n /*insert a input field that will hold the current array item's value:*/\n b.innerHTML += \"<input type='hidden' value='\" + arr[i] + \"'>\";\n /*execute a function when someone clicks on the item value (DIV element):*/\n b.addEventListener(\"click\", function(e) {\n /*insert the value for the autocomplete text field:*/\n that.dismiss_blur = true\n inp.value = this.getElementsByTagName(\"input\")[0].value;\n document.getElementById('buttonsearch_' + this.container_object.div_id ).focus();\n\n that.container_object.zoom_to_node(inp.value)\n that.viewer.maximise_zoom()\n\n /*close the list of autocompleted values,\n (or any other open lists of autocompleted values:*/\n closeAllLists();\n });\n a.appendChild(b);\n }\n }\n });\n /*execute a function presses a key on the keyboard:*/\n inp.addEventListener(\"keydown\", function(e) {\n var x = document.getElementById(this.id + \"autocomplete-list\");\n if (x) x = x.getElementsByTagName(\"div\");\n if (e.keyCode == 40) {\n /*If the arrow DOWN key is pressed,\n increase the currentFocus variable:*/\n currentFocus++;\n /*and and make the current item more visible:*/\n addActive(x);\n } else if (e.keyCode == 38) { //up\n /*If the arrow UP key is pressed,\n decrease the currentFocus variable:*/\n currentFocus--;\n /*and and make the current item more visible:*/\n addActive(x);\n } else if (e.keyCode == 13) {\n /*If the ENTER key is pressed, prevent the form from being submitted,*/\n e.preventDefault();\n if (currentFocus > -1) {\n /*and simulate a click on the \"active\" item:*/\n if (x) x[currentFocus].click();\n }\n }\n });\n function addActive(x) {\n /*a function to classify an item as \"active\":*/\n if (!x) return false;\n /*start by removing the \"active\" class on all items:*/\n removeActive(x);\n if (currentFocus >= x.length) currentFocus = 0;\n if (currentFocus < 0) currentFocus = (x.length - 1);\n /*add class \"autocomplete-active\":*/\n x[currentFocus].classList.add(\"autocomplete-active\");\n }\n function removeActive(x) {\n /*a function to remove the \"active\" class from all autocomplete items:*/\n for (var i = 0; i < x.length; i++) {\n x[i].classList.remove(\"autocomplete-active\");\n }\n }\n function closeAllLists(elmnt) {\n /*close all autocomplete lists in the document,\n except the one passed as an argument:*/\n var x = document.getElementsByClassName(\"autocomplete-items\");\n for (var i = 0; i < x.length; i++) {\n if (elmnt != x[i] && elmnt != inp) {\n x[i].parentNode.removeChild(x[i]);\n }\n }\n }\n /*execute a function when someone clicks in the document:*/\n document.addEventListener(\"click\", function (e) {\n closeAllLists(e.target);\n });\n\n\n }\n\n add_search(){\n\n\n this.container_d3.selectAll(\"#searchinp\" + this.viewer.uid).remove()\n\n // add input\n this.search_input = this.tr_buttons.append('input')\n .attr('class', ' search_input')\n .style('display', 'none')\n .style('height', '56px')\n .attr('id', \"searchinp\" + this.viewer.uid )\n\n var input_el = document.getElementById(\"searchinp\" + this.viewer.uid );\n\n // add search button\n var search_but = this.tr_buttons.append('button')\n .attr('class', ' square_button search_button')\n .attr('id', 'buttonsearch_' + this.container_object.div_id )\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'search for label')\n .style('border-top-left-radius', '8px')\n .style('border-bottom-left-radius', '8px')\n .style('margin', '2px')\n .on(\"click\", d => {\n var display = input_el.style.display;\n\n if (display == 'none'){\n let search_el = document.getElementById('buttonsearch_' + this.container_object.div_id );\n\n input_el.style.display = 'inline-block';\n search_el.style.borderTopLeftRadius = '0px';\n search_el.style.borderBottomLeftRadius = '0px';\n }\n else{\n this.container_object.zoom_to_node(document.getElementById(\"searchinp\" + this.viewer.uid).value)\n this.viewer.maximise_zoom()\n\n input_el.style.display = 'none';\n search_el.style.borderTopLeftRadius = '8px';\n search_el.style.borderBottomLeftRadius = '8px';\n document.getElementById('searchinp' + this.viewer.uid + 'autocomplete-list').remove();\n }\n })\n\n\n search_but.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-search ')\n\n search_but.append('p')\n .text('Search')\n .style('font-size', 'xx-small')\n\n this.tooltip_search = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonsearch_' + this.container_object.div_id))\n\n\n\n let search_el = document.getElementById('buttonsearch_' + this.container_object.div_id );\n\n this.autocomplete(document.getElementById(\"searchinp\" + this.viewer.uid ), this.viewer.model.settings.suggestions)\n\n input_el.addEventListener(\"keyup\", ({key}) => {\n if (key === \"Enter\") {\n this.container_object.zoom_to_node(document.getElementById(\"searchinp\" + this.viewer.uid).value)\n this.viewer.maximise_zoom()\n }\n })\n\n input_el.addEventListener(\"blur\", (e) => {\n\n setTimeout(() => {\n\n if (this.dismiss_blur){\n this.dismiss_blur = false\n\n }\n else{\n input_el.style.display = 'none';\n search_el.style.borderTopLeftRadius = '8px';\n search_el.style.borderBottomLeftRadius = '8px';\n document.getElementById('searchinp' + this.viewer.uid + 'autocomplete-list').remove();\n\n }\n }, 200);\n\n })\n\n\n }\n\n // META\n get_modal_meta_corpus(){\n return `\n\n <div class=\"container-fluid\">\n \n <div class=\"card\">\n \n <div class=\"card-body\">\n \n <h5> <b>Step 1: Select your mapping file</b> </h5>\n \n\n <div class=\"input-group mb-3\" style=\"padding: 24px 24px 0;\">\n <input class=\"form-control\" type=\"file\" id=\"add_meta_file_input\" > \n </div>\n \n <p style=\"padding: 0 24px;\"><small>\n <b>Accepted format:</b> '.csv' or '.tsv' and must contain column names at first row. \n The mapping is done using the column named 'id' to identify leaves and nodes.\n</small></p>\n\n </div>\n \n </div>\n\n <br>\n \n <div class=\"card\" id=\"mod_meta_card2\" style=\"display: none\">\n \n <div class=\"card-body\" id=\"mod_meta_card2_radio\" >\n \n <h5> <b>Step 2: Configure data mapping types</b> </h5>\n \n \n \n </div>\n \n </div>\n \n <br>\n \n <div class=\"card\" id=\"mod_meta_card3\" style=\"display: none\">\n \n <div class=\"card-body\">\n \n <h5> <b>Step 3: Choose a target for additional data</b> </h5>\n \n <div class=\"form-check\" style=\"padding: 12px 48px 0;\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"mapping_check_leaf\" checked>\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\n Apply to leaves\n </label>\n </div>\n <div class=\"form-check\" style=\"padding: 12px 48px 0;\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"\" id=\"mapping_check_nodes\">\n <label class=\"form-check-label\" for=\"flexCheckChecked\">\n Apply to Nodes\n </label>\n </div>\n \n\n </div>\n \n </div>\n \n <br>\n \n <div style=\"margin: auto; width: fit-content;\">\n \n <button type=\"button\" id=\"upload_mapping_close\" class=\"btn btn-danger\" data-bs-dismiss=\"modal\">Cancel</button>\n <button type=\"button\" id=\"upload_mapping_validation\" class=\"btn btn-success\" data-bs-dismiss=\"modal\" disabled >Upload mapping file</button>\n</div>\n \n \n \n </div>\n \n `\n }\n\n add_meta(){\n\n let mod_html = this.get_modal_template()\n\n\n mod_html = mod_html.replace('TEMPLATE_CORPUS', this.get_modal_meta_corpus())\n mod_html = mod_html.replace('TITLE_', 'Upload your own mapping file')\n mod_html = mod_html.replace('SUB_TITLE_', 'to add additional information to leaves and nodes')\n\n mod_html = mod_html.replace('exampleModal', 'modal_meta_' + this.container_object.uid)\n mod_html = mod_html.replaceAll('add_meta_file_input', 'modal_add_mapping_file_input' + this.container_object.uid)\n\n mod_html = mod_html.replace('mod_meta_card2', 'mod_meta_card2_' + this.container_object.uid)\n mod_html = mod_html.replace('mod_meta_card3', 'mod_meta_card3_' + this.container_object.uid)\n mod_html = mod_html.replace('mod_meta_card2_radio', 'mod_meta_card2_radio' + this.container_object.uid)\n\n mod_html = mod_html.replace('flexCheckChecked', 'flexCheckChecked' + this.container_object.uid)\n mod_html = mod_html.replace('flexCheckDefault', 'flexCheckDefault' + this.container_object.uid)\n\n mod_html = mod_html.replace('upload_mapping_validation', 'upload_mapping_validation' + this.container_object.uid)\n mod_html = mod_html.replace('mapping_check_nodes', 'mapping_check_nodes' + this.container_object.uid)\n mod_html = mod_html.replace('mapping_check_leaf', 'mapping_check_leaf' + this.container_object.uid)\n\n document.getElementById(this.container_object.div_id).insertAdjacentHTML('afterend',mod_html)\n\n // Add JS for modal corpus\n var that = this\n\n document.getElementById('modal_add_mapping_file_input' + this.container_object.uid).onchange = function() {\n let input = this.files[0];\n\n if (input) {\n\n document.getElementById('mod_meta_card2_' + that.container_object.uid).style.display = 'block'\n document.getElementById('mod_meta_card3_' + that.container_object.uid).style.display = 'block'\n document.getElementById('upload_mapping_validation' + that.container_object.uid).disabled = false;\n\n\n var reader = new FileReader();\n var data;\n\n reader.addEventListener(\"load\", parseFile, false);\n reader.readAsText(input);\n function parseFile(){\n\n // load data\n if (input.name.split('.').pop() == 'tsv'){\n data = d3__WEBPACK_IMPORTED_MODULE_1__.tsvParse(reader.result, function(d){\n return d;\n });\n }\n else{\n\n data = d3__WEBPACK_IMPORTED_MODULE_1__.csvParse(reader.result, function(d){\n return d;\n });\n\n }\n\n\n // Get columns + types\n var numerisator = {}\n data['columns'].forEach((currentElement) => { if (currentElement != 'id'){ numerisator[currentElement] = 'num'}})\n data.forEach((currentElement) => {\n for (var key of Object.keys(numerisator)) {\n if (isNaN(currentElement[key])){\n numerisator[key] = 'cat'\n }\n }\n })\n\n // creates radios\n var radio_container = document.getElementById( 'mod_meta_card2_radio' + that.container_object.uid)\n var get_el = function(){return `\n \n <div style = \"padding: 12px 24px 0;\"> <span><b style = \"margin-right: 12px\" > Column: </b> \"NAME_\"</span> <br>\n\n <div class=\"form-check \" style=\"margin-left: 24px\" >\n <input class=\"form-check-input \" name=\"flexRadioDefault\" type=\"radio\" value=\"num\" id=\"RADIO_1\" ATTR_NUM>\n <label class=\"form-check-label\" for=\"RADIO_1\">\n Numerical\n </label>\n </div>\n \n <div class=\"form-check \" style=\"margin-left: 24px\" >\n <input class=\"form-check-input\" name=\"flexRadioDefault\" type=\"radio\" value=\"cat\" id=\"RADIO_2\" ATTR_CAT>\n <label class=\"form-check-label\" for=\"RADIO_2\">\n Categorical\n </label>\n </div>\n \n <div class=\"form-check\" style=\"margin-left: 24px\">\n <input class=\"form-check-input\" name=\"flexRadioDefault\" type=\"radio\" value=\"color\" id=\"RADIO_3\">\n <label class=\"form-check-label\" for=\"RADIO_3\">\n Color\n </label>\n </div>\n \n \n \n \n \n \n \n </div>\n `}\n\n for (var key of Object.keys(numerisator)){\n\n var rad = get_el()\n\n\n rad = rad.replace('NAME_', key)\n rad = rad.replaceAll('flexRadioDefault', 'flexRadioDefault_' + key + that.container_object.uid )\n rad = rad.replace('RADIO_1', that.container_object.uid + 'mapping_header_radio1' + '__' + key )\n rad = rad.replace('RADIO_2', that.container_object.uid + 'mapping_header_radio2' + '__' + key )\n rad = rad.replace('RADIO_3', that.container_object.uid + 'mapping_header_radio3' + '__' + key )\n\n\n\n if (numerisator[key] == 'num'){\n rad = rad.replace('ATTR_NUM', 'checked')\n rad = rad.replace('ATTR_CAT', '')\n }\n else{\n rad = rad.replace('ATTR_NUM', 'disabled')\n rad = rad.replace('ATTR_CAT', 'checked')\n }\n\n\n\n radio_container.insertAdjacentHTML('beforeend',rad)\n\n }\n radio_container.insertAdjacentHTML('beforeend','<br>')\n\n }\n\n }\n\n else {\n document.getElementById('upload_mapping_validation' + that.container_object.uid).disabled = true;\n }\n };\n\n document.getElementById('upload_mapping_validation' + this.container_object.uid).onclick = function(){\n\n\n var file = document.getElementById('modal_add_mapping_file_input' + that.container_object.uid).files[0];\n\n if (file) {\n\n var parameters = that.get_mapping_parameter_from_UI()\n\n console.log(parameters)\n const reader = new FileReader();\n\n reader.addEventListener('load', (event) => {\n\n var meta = []\n\n if (file.name.split('.').pop() == 'tsv'){\n d3__WEBPACK_IMPORTED_MODULE_1__.tsvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n else{\n d3__WEBPACK_IMPORTED_MODULE_1__.csvParse(event.target.result, (d) => {meta[d.id] = d});\n }\n\n that.viewer.model.settings.use_meta_for_leaf = parameters.use_meta_for_leaf\n that.viewer.model.settings.use_meta_for_node = parameters.use_meta_for_node\n\n\n\n if (that.viewer.model.settings.use_meta_for_leaf){\n that.viewer.model.add_meta_leaves(meta, parameters.headers, that.container_object.api)\n }\n\n if (that.viewer.model.settings.use_meta_for_node){\n that.viewer.model.add_meta_nodes(meta, parameters.headers, that.container_object.api)\n }\n\n\n\n that.viewer.interface = new Interface(that.viewer, that.viewer.container_object)\n\n });\n reader.readAsText(file);\n\n }\n\n\n\n\n }\n\n\n // add the button\n var ex_b = this.tr_buttons.append('button')\n .attr('id', 'button_meta' + this.container_object.uid)\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'Add additional informations to the tree')\n .attr('data-bs-toggle', 'modal')\n .attr('data-bs-target', '#modal_meta_' + this.container_object.uid )\n\n var divybuty = ex_b.attr('class', ' square_button')\n .style('margin', '2px')\n\n divybuty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', 'fas fa-file-lines')\n\n divybuty.append('p')\n .text('Mapping')\n .style('font-size', 'xx-small')\n\n\n }\n\n get_mapping_parameter_from_UI(modal){\n\n var modal = (typeof modal == 'undefined') ? false : modal;\n\n var p = {'headers': {}}\n\n if (modal){\n var prefix = this.container_object.uid + 'mapping_header_radiotree_adder_'\n }\n else{\n var prefix = this.container_object.uid + 'mapping_header_radio'\n }\n\n\n var checkies = document.querySelectorAll(`[id^=\"${prefix}\"]`);\n\n\n checkies.forEach(element => {\n\n if (element.checked) {\n var column_type = element.value\n var column_name = element.id.split('__').pop()\n\n\n p['headers'][column_name] = column_type\n }\n\n\n });\n\n if (modal){\n p['use_meta_for_node'] = document.getElementById( 'tree_adder_mapping_check_nodes' + this.container_object.uid).checked\n p['use_meta_for_leaf'] = document.getElementById( 'tree_adder_mapping_check_leaf' + this.container_object.uid).checked\n }\n else{\n p['use_meta_for_node'] = document.getElementById( 'mapping_check_nodes' + this.container_object.uid).checked\n p['use_meta_for_leaf'] = document.getElementById( 'mapping_check_leaf' + this.container_object.uid).checked\n }\n\n\n\n\n\n return p\n }\n\n // EXPORT\n add_export() {\n\n // add the button\n var ex_b = this.tr_buttons.append('button')\n .attr('id', 'button_export' + this.container_object.uid)\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'Export this tree as graphic or text file')\n\n var divybuty = ex_b.attr('class', ' square_button')\n .style('margin', '2px')\n .on(\"click\", d => {\n if (this.menu_export.style('display') === 'none'){\n this.menu_settings.style(\"display\", 'none') // make it more general to all menu/button\n ex_b.style('background-color', '#CCC');\n document.getElementById(\"button_settings\" + this.container_object.uid).style.backgroundColor = 'rgba(239, 239, 239, 0.95)';\n return this.menu_export.style(\"display\", 'block')\n }\n ex_b.style('background-color', 'rgba(239, 239, 239, 0.95)');\n return this.menu_export.style(\"display\", 'none')\n })\n\n\n\n\n divybuty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-download ')\n\n divybuty.append('p')\n .text('Download')\n .style('font-size', 'xx-small')\n\n\n this.tooltip_export = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('button_export' + this.container_object.uid))\n\n\n\n // add the sub menu container\n this.menu_export = this.tr_menus.append('div')\n .style(\"background-color\", '#aaa')\n .attr('class', 'menu_export')\n\n\n // ADD THE ACCORDION SYSTEM\n\n this.menu_exportimage_b = this.menu_export.append('button').attr('class', 'accordion').text(\"Export as Graphic\")\n this.menu_exportimage_p = this.menu_export.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n this.export_as = this.menu_exportimage_p.append('div')\n .style('display', 'flex')\n\n this.export_as.append('button') // todo clean click\n .attr('class', ' square_button')\n .on(\"click\", d => {\n this.screen_shot('png')\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"PNG\")\n\n\n this.export_as.append('button')\n .attr('class', ' square_button')\n .on(\"click\", d => { // todo clean\n this.screen_shot('svg')\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"SVG\")\n\n\n\n this.menu_exportfile_b = this.menu_export.append('button').attr('class', 'accordion').text(\"Export as Text\")\n this.menu_exportfile_p = this.menu_export.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n this.export_as = this.menu_exportfile_p.append('div')\n .style('display', 'flex')\n\n this.export_as.append('button') // todo clean click\n .attr('class', ' square_button')\n .on(\"click\", d => {\n this.container_object.export_as_newick()\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"Newick\")\n\n }\n\n screen_shot(format){\n\n var svg = this.viewer.d3.select(\"#svg\" + this.viewer.uid)\n this.addLogo(svg);\n var name = svg.attr(\"id\");\n var svgString = this.getSVGString(svg.node());\n\n if(format === 'svg') {\n\n var blob = new Blob([svgString], {\"type\": \"image/svg+xml;base64,\"+ btoa(svgString)});\n file_saver__WEBPACK_IMPORTED_MODULE_0__.saveAs(blob, name+\".svg\");\n svg.select(\"#exportLogo\").remove();\n\n }\n else if (format === 'png'){\n var exportElement = svg.node();\n var width = exportElement.getBoundingClientRect().width;\n var height = exportElement.getBoundingClientRect().height;\n this.svgString2Image(svgString, 2 * width, 2 * height, 'png', save);\n svg.select(\"#exportLogo\").remove();\n\n function save(dataBlob, filesize) {\n var filename = (name) ? name+\".\" : \"\";\n file_saver__WEBPACK_IMPORTED_MODULE_0__.saveAs(dataBlob, filename+'phylo.io.png'); // FileSaver.js function\n }\n\n }\n\n }\n\n // UNDO\n add_undo(){\n var divybuty = this.tr_buttons.append('button')\n .attr('class', ' square_button')\n .attr('id', 'buttonundo_' + this.container_object.div_id )\n .attr('data-bs-placement', 'bottom')\n .attr('title', d=> { return this.container_object.history_actions.length > 0 ? 'Undo ' + this.container_object.get_last_action().name : 'Nothing to undo' })\n .style('margin', '2px')\n .on(\"click\", d => {\n this.api.undoing = true\n var cta = this.container_object.pop_last_action();\n if (cta) {\n cta.fonct.apply(cta.fonction_obj, cta.argu);\n\n if (cta.refresh_interface){\n let empty = this.container_object.models.length <= 0\n this.container_object.interface = new Interface(this.viewer, this.container_object, empty )\n }\n\n }\n this.api.undoing = false\n })\n\n\n\n\n\n divybuty.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-undo ')\n\n divybuty.append('p')\n .text('Undo')\n .style('font-size', 'xx-small')\n\n this.tooltip_undo = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('buttonundo_' + this.container_object.div_id))\n\n }\n\n toggle_select_node_face(cid){\n\n var acc = document.getElementById(\"accordion_branch\"+cid)\n\n\n if (acc.classList.contains('active')) {\n\n document.getElementById('selectlt' + cid).style.display = 'block';\n document.getElementById('selectlb' + cid).style.display = 'block';\n document.getElementById('selectr' + cid).style.display = 'block';\n\n document.getElementById('selectlt' + cid).style.top = -90 + 'px';\n document.getElementById('selectlb' + cid).style.top = -40 + 'px';\n document.getElementById('selectr' + cid).style.top = -60 + 'px';\n\n document.getElementById('selectlt' + cid).style.left = '30px';\n document.getElementById('selectlb' + cid).style.left = '30px';\n document.getElementById('selectr' + cid).style.left = '130px';\n\n }\n else{\n document.getElementById('selectlt' + cid).style.display = 'none';\n document.getElementById('selectlb' + cid).style.display = 'none';\n document.getElementById('selectr' + cid).style.display = 'none';\n }\n }\n\n // SETTINGS\n add_settings() {\n\n // add the buttons\n var set_b = this.tr_buttons.append('button')\n .attr('data-bs-placement', 'bottom')\n .attr('title', 'Viewer settings')\n\n set_b.attr('class', ' square_button')\n set_b.attr('id', 'button_settings' + this.container_object.uid)\n .style('margin', '2px')\n .on(\"click\", d => {\n if (this.menu_settings.style('display') === 'none') { //make it as funtion\n this.menu_export.style(\"display\", 'none')\n set_b.style('background-color', '#CCC');\n document.getElementById(\"button_export\" + this.container_object.uid).style.backgroundColor = 'rgba(239, 239, 239, 0.95)';\n return this.menu_settings.style(\"display\", 'block')\n }\n set_b.style('background-color', 'rgba(239, 239, 239, 0.95)');\n return this.menu_settings.style(\"display\", 'none')\n })\n\n set_b.append(\"div\")\n .attr(\"class\",\"label\")\n .append('i')\n .style('color', '#888')\n .attr('class', ' fas fa-sliders-h ')\n\n set_b.append('p')\n .text('Settings')\n .style('font-size', 'xx-small')\n\n\n\n this.tooltip_settings = new bootstrap__WEBPACK_IMPORTED_MODULE_2__.Tooltip(document.getElementById('button_settings' + this.container_object.uid))\n\n\n // add the menu\n this.menu_settings = this.tr_menus.append('div')\n .attr('class', 'menu_settings')\n\n\n // ADD THE ACCORDION SYSTEM todo close other when open one\n\n this.menu_general_b = this.menu_settings.append('button').attr('id', 'accordion_tree'+this.container_object.uid).attr('class', 'accordion').text(\"Tree\")\n this.menu_general_p = this.menu_settings.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n this.menu_tree_b = this.menu_settings.append('button').attr('id', 'accordion_branch'+this.container_object.uid).attr('class', 'accordion').text(\"Branch & Labels\")\n this.menu_tree_p = this.menu_settings.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n this.menu_search_b = this.menu_settings.append('button').attr('id', 'accordion_branch'+this.container_object.uid).attr('class', 'accordion').text(\"Search\")\n this.menu_search_p = this.menu_settings.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n //this.menu_metadata_b = this.menu_settings.append('button').attr('id', 'accordion_color'+this.container_object.uid).attr('class', 'accordion').text(\"Additional Information\")\n //this.menu_metadata_p = this.menu_settings.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n this.menu_coloring_b = this.menu_settings.append('button').attr('id', 'accordion_color'+this.container_object.uid).attr('class', 'accordion').text(\"Coloring\")\n this.menu_coloring_panel = this.menu_settings.append('div').attr('class', 'panel')\n\n this.menu_coloring_p = this.menu_coloring_panel.append(\"div\").style(\"padding\", \"14px\")\n\n if (this.viewer.model.settings.has_histogram_data && this.viewer.model.settings.show_histogram ) {\n this.menu_stack_b = this.menu_settings.append('button').attr('class', 'accordion').text(\"Bar Graph\")\n this.menu_stack_p = this.menu_settings.append('div').attr('class', 'panel').append(\"div\").style(\"padding\", \"14px\")\n\n\n\n this.slider_sts = this.add_slider_UI(this.menu_stack_p, \"Bar height\", 40, 300, this.viewer.model.settings.stack.stackHeight, 5, \"slider_stack_height_\",\n (e ) =>{this.viewer.update_stack_height(e.target.value)})\n\n this.slider_sts = this.add_slider_UI(this.menu_stack_p, \"Bar width\", 10, 150, this.viewer.model.settings.stack.stackWidth, 5, \"slider_stack_width_\",\n (e ) =>{this.viewer.update_stack_width(e.target.value)})\n\n this.slider_sts = this.add_slider_UI(this.menu_stack_p, \"Label size\", 6, 40, this.viewer.model.settings.stack.legendTxtSize, 1, \"slider_stack_text_size_\",\n (e ) =>{this.viewer.update_stack_font(e.target.value)})\n\n this.menu_stack_p.append(\"p\").text('Labels').style('margin-bottom', \"0px\")\n\n\n this.stack_type = this.menu_stack_p.append('div')\n .style('display', 'flex')\n .style('margin-bottom', \"14px\")\n\n\n\n this.stack_type.append('button') // todo clean click\n .attr('class', ' square_button')\n .attr('id', 'stack_type_events')\n .style('background-color', d => {return this.viewer.model.settings.stack.type === 'events' ? 'rgb(204, 204, 204)': null })\n .on(\"click\", d => {\n this.viewer.update_stack_type('events')\n this.viewer. d3.select(\"#stack_type_events\").style('background-color','rgb(204, 204, 204)')\n this.viewer.d3.select(\"#stack_type_genes\").style('background-color', null)\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"Events\")\n\n\n this.stack_type.append('button')\n .attr('class', ' square_button')\n .attr('id', 'stack_type_genes')\n .style('background-color', d => {return this.viewer.model.settings.stack.type === 'genes' ? 'rgb(204, 204, 204)': null })\n .on(\"click\", d => {\n this.viewer.update_stack_type('genes')\n this.viewer.d3.select(\"#stack_type_genes\").style('background-color','rgb(204, 204, 204)')\n this.viewer.d3.select(\"#stack_type_events\").style('background-color', null)\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"Genes\")\n\n this.add_swicth_UI(this.menu_stack_p, (this.viewer.model.settings.stack.maxStackHeight === 'ratio'),\"Fix stack height\", this.viewer.toggle_height_max_ratio.bind(this.viewer))\n\n this.add_swicth_UI(this.menu_stack_p, this.viewer.model.settings.stack.showHistogramValues,\"Show numbers\", this.viewer.toggle_show_stack_number.bind(this.viewer))\n\n if (this.viewer.model.settings.stack.has_support){\n this.add_swicth_UI(this.menu_stack_p, this.viewer.model.settings.stack.only_support,\"remove low coverage hogs\", this.viewer.toggle_only_support.bind(this.viewer))\n\n }\n\n\n\n\n }\n\n // ADD LOGIC TO ACCORDION todo add it general or to this div only\n var acc = document.getElementById(this.container_object.div_id).getElementsByClassName(\"accordion\");\n var that = this;\n var i;\n\n for (i = 0; i < acc.length; i++) {\n acc[i].addEventListener(\"click\", function(e) {\n\n this.classList.toggle(\"active\");\n\n var panel = this.nextElementSibling;\n if (panel.style.maxHeight) {\n panel.style.maxHeight = null;\n } else {\n panel.style.maxHeight = panel.scrollHeight + \"px\";\n }\n\n that.toggle_select_node_face(that.container_object.uid)\n\n /*\n\n var checkExist = setInterval(function() {\n\n var obs_h = panel.style.maxHeight ? panel.getBoundingClientRect().height : 0\n var exp_h = panel.style.maxHeight ? panel.scrollHeight : 0\n\n if (obs_h == exp_h ) {\n that.toggle_select_node_face(that.container_object.uid)\n clearInterval(checkExist);\n }\n\n else {\n console.log(obs_h, exp_h )\n }\n }, 200);\n\n */\n\n });\n\n\n }\n\n // ADD TOGGLE BRANCH LENGTH\n if(this.viewer.model.settings.has_branch_lenght){\n this.add_swicth_UI(this.menu_general_p, this.viewer.model.settings.use_branch_lenght,\"Use branch length\", this.viewer.toggle_use_length.bind(this.viewer))\n }\n\n this.add_swicth_UI(this.menu_general_p, this.viewer.model.settings.align_tip,\"Align leaves\", this.viewer.toggle_align_tip.bind(this.viewer))\n\n this.add_swicth_UI(this.menu_general_p, this.viewer.model.settings.mirror,\"Mirror tree\", this.viewer.toggle_mirror.bind(this.viewer))\n\n // ADD SLIDER RESIZE X/Y\n /*\n this.slider_v = this.add_slider_UI(this.menu_general_p, \"Tree height\", 2, 1000, this.viewer.model.settings.tree.node_vertical_size, 1, \"slider_node_vertical_size_\",\n (e ) =>{this.viewer.modify_node_size('vertical', e.target.value - this.viewer.model.settings.tree.node_vertical_size)})\n\n this.slider_h = this.add_slider_UI(this.menu_general_p, \"Tree width\", 2, 1000, this.viewer.model.settings.tree.node_horizontal_size, 1, \"slider_node_horyzontal_size_\",\n (e ) =>{this.viewer.modify_node_size('horizontal', e.target.value - this.viewer.model.settings.tree.node_horizontal_size)})\n */\n\n\n this.buttons_height = this.add_quartet_buttons(this.menu_general_p, \"Tree height\", \"buton_vertical_size_\", this.container_object.modify_node_size_percent, 'vertical')\n this.buttons_width = this.add_quartet_buttons(this.menu_general_p, \"Tree width\", \"buton_horyzontal_size_\", this.container_object.modify_node_size_percent, 'horizontal')\n\n\n // ADD SELECT LEFT NODE LABEL\n this.add_node_face_UI(this.menu_tree_p, this.container_object.uid)\n\n // ADD TOGGLE INTERNAL LABEL\n //this.add_swicth_UI(this.menu_tree_p, this.viewer.model.settings.display_internal_label,\"Show internal label\", this.viewer.toggle_internal_label.bind(this.viewer))\n\n\n // ADD TOGGLE tooltips\n this.add_swicth_UI(this.menu_tree_p, this.viewer.model.settings.subsample_label,\"Subsample Labels\", this.viewer.toggle_subsample.bind(this.viewer))\n\n // ADD TOGGLE LEAF LABEL\n this.add_swicth_UI(this.menu_tree_p, this.viewer.model.settings.display_leaves,\"Show Leaves Labels\", this.viewer.toggle_leaves.bind(this.viewer))\n\n // ADD TOGGLE tooltips\n this.add_swicth_UI(this.menu_tree_p, this.viewer.model.settings.show_tooltips,\"Show tooltips\", this.viewer.toggle_tooltips.bind(this.viewer))\n\n if (this.viewer.model.settings.has_duplications){\n // ADD TOGGLE DUPLICATION\n this.add_swicth_UI(this.menu_tree_p, this.viewer.model.settings.display_duplication,\"Show duplications\", this.viewer.toggle_duplication.bind(this.viewer))\n\n }\n\n // ADD SLIDER NODE/LINE/TEXT\n /*\n this.slider_n = this.add_slider_UI(this.menu_tree_p, \"Node Radius\", 1, this.viewer.model.settings.tree.node_vertical_size/2, this.viewer.model.settings.tree.node_radius, 1, \"slider_node_radius_\",\n (e ) =>{this.viewer.update_node_radius(e.target.value)})\n\n this.slider_l = this.add_slider_UI(this.menu_tree_p, \"Line width\", 1, this.viewer.model.settings.tree.node_vertical_size/2, this.viewer.model.settings.tree.line_width, 1, \"slider_line_width_\",\n (e ) =>{this.viewer.update_line_width(e.target.value)})\n\n this.slider_t = this.add_slider_UI(this.menu_tree_p, \"Leaf label size\", 4, 50, this.viewer.model.settings.tree.font_size, 1, \"slider_text_size_\",\n (e ) =>{this.viewer.update_font_size(e.target.value)})\n\n this.slider_i = this.add_slider_UI(this.menu_tree_p, \"Node label size\", 1, this.viewer.model.settings.tree.node_vertical_size*2, this.viewer.model.settings.style.font_size_internal, 1, \"slider_text_node_size_\",\n (e ) =>{this.viewer.update_font_size_node(e.target.value)})\n\n */\n\n this.add_quartet_buttons(this.menu_tree_p, \"Node Radius\", \"buton_node_radius_\", this.container_object.update_node_radius_percent )\n this.add_quartet_buttons(this.menu_tree_p, \"Line width\", \"buton_line_width_\", this.container_object.update_line_width_percent)\n this.add_quartet_buttons(this.menu_tree_p, \"Leaf label size\", \"buton_leaf_label_size_\", this.container_object.update_font_size_leaf_percent)\n this.add_quartet_buttons(this.menu_tree_p, \"Node label size\", \"buton_node_label_\", this.container_object.update_font_size_node_percent)\n\n\n\n\n\n // COLLAPSE\n\n this.slider_c = this.add_slider_UI(this.menu_general_p,\n this.viewer.model.settings.collapse_level == 0 ? \"Autocollapse: Off\" : \"Autocollapse: \" + this.viewer.model.settings.collapse_level,\n 0, this.viewer.model.settings.tree.max_depth , this.viewer.model.settings.collapse_level, 0,\"slider_collapse_level_\",)\n document.getElementById(\"slider_collapse_level_\" + this.container_object.uid).onchange = (e) => {\n\n\n this.viewer.update_collapse_level(e.target.value, false)\n var lab = e.target.value == 0 ? \"Autocollapse: Off\" : \"Autocollapse: \" + this.viewer.model.settings.collapse_level;\n\n document.getElementById(\"slider_collapse_level_\" + this.container_object.uid)\n .parentElement.previousSibling.innerHTML = lab;\n\n }\n\n\n if (this.api.settings.compareMode) {\n // equalize tree\n this.menu_general_p.append(\"p\").text('Equalize trees')\n .style('margin-bottom', '0px')\n\n\n this.equalize_div = this.menu_general_p.append('div')\n .style('display', 'flex')\n .style('margin-top', '0px')\n\n\n this.equalize_div.append('button')\n .attr('class', ' square_button')\n .attr('id', 'equ_reroot' + this.viewer.uid)\n .on(\"click\", d => {\n this.container_object.reroot_to_compared_tree()\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"Reroot\")\n\n\n this.equalize_div.append('button')\n .attr('class', ' square_button')\n .attr('id', 'equ_reorder' + this.viewer.uid)\n .on(\"click\", d => {\n this.container_object.reorder_to_compared_tree()\n })\n .style('margin', '2px')\n .style('flex-grow', '1')\n .append(\"text\")\n .text(\"Reorder\")\n }\n\n\n // ADD TOGGLE MULTIPLE SEARCH\n this.add_swicth_UI(this.menu_search_p, this.viewer.model.settings.multiple_search,\"Multiple search\", this.viewer.toggle_multiple_search.bind(this.viewer))\n\n\n /*\n // ADDITIONAL DATA\n var meta_div = this.menu_metadata_p.append('div')\n .style('display','block')\n //.style('margin','8px')\n\n\n meta_div.append('p').text(\"Mapping file\").style('font-weight','bold')\n\n\n meta_div.append('input')\n .attr('id','filemeta' + this.container_object.uid )\n .attr('type','file')\n .style('margin-bottom','16px')\n\n\n this.add_swicth_UI(this.menu_metadata_p, this.viewer.model.settings.use_meta_for_leaf,\"Apply to leaves\", this.viewer.toggle_use_meta_for_leaf.bind(this.viewer) )\n this.add_swicth_UI(this.menu_metadata_p, this.viewer.model.settings.use_meta_for_node,\"Apply to nodes\", this.viewer.toggle_use_meta_for_node.bind(this.viewer))\n\n\n this.meta_div = this.menu_metadata_p.append('div')\n .style('display', 'flex')\n .style('margin-top', '0px')\n\n\n this.button_meta = this.meta_div.append('button')\n .attr('id','button_add_meta' + this.container_object.uid )\n .on(\"click\", (e) => {\n\n var file = document.getElementById('filemeta' + this.container_object.uid).files[0];\n\n if (file) {\n const reader = new FileReader();\n reader.addEventListener('load', (event) => {\n\n var meta = []\n\n d3.csvParse(event.target.result, (d) => {meta[d.id] = d});\n\n if (this.viewer.model.settings.use_meta_for_leaf){\n this.viewer.model.add_meta_leaves(meta)\n }\n\n if (this.viewer.model.settings.use_meta_for_node){\n this.viewer.model.add_meta_nodes(meta)\n }\n\n this.viewer.interface = new Interface(this.viewer, this.viewer.container_object)\n\n });\n reader.readAsText(file);\n\n }\n\n\n\n })\n .attr('class', ' square_button')\n .style('border-radius', '2px')\n .style('flex-grow', '1')\n .style('background-color', '#CCC')\n .text('Use this file')\n\n\n */\n\n\n // COLORING\n var that = this;\n\n\n this.menu_coloring_p.append('p').text(\"Leaves\").style('font-weight','bold')\n\n var color_leaves_div = this.menu_coloring_p.append('div')\n .style('display','block')\n .style('margin-left','8px')\n\n var options = Array.from(this.viewer.model.settings.colorlabels['leaf'])\n\n if (options.length > 0){\n\n options.unshift('None')\n\n color_leaves_div.append('label').text(\"Data\")\n\n var selectcoloring_leaf = color_leaves_div.append('select')\n .attr('id','selectcoloring_leaf' + this.container_object.uid )\n .attr('class','select')\n .style('float','right')\n .on('change', function(){\n\n that.on_change_coloring_scheme('leaf', this.value)\n\n })\n\n\n\n selectcoloring_leaf.selectAll('option').data(options).enter()\n .append('option')\n .attr('value', function (d) {\n return d; })\n .property(\"selected\", (d) => { return d == this.viewer.model.settings.style.color_accessor['leaf'] })\n .text(function (d) { return d; });\n\n\n\n\n this.color_leaf_div = this.menu_coloring_p.append('div')\n\n }\n else {\n color_leaves_div.style('float','right').append('label').text(\"No Data available\");\n this.menu_coloring_p.append('br')\n\n }\n\n\n this.menu_coloring_p.append('p').text(\"Nodes\").style('font-weight','bold').style('margin-top','8px')\n\n var drop = this.menu_coloring_p.append('div')\n .style('display','block')\n .style('margin-left','8px')\n\n\n drop.append('label').text(\"Data\");\n\n var selectcoloring = drop.append('select')\n .attr('id','selectcoloring' + this.container_object.uid )\n .attr('class','select')\n .style('float','right')\n .on('change', function(){\n\n that.on_change_coloring_scheme('node', this.value)\n\n })\n\n var options = Array.from(this.viewer.model.settings.colorlabels['node'])\n options.push(\"None\")\n\n selectcoloring.selectAll('option').data(options).enter().append('option').attr('value', function (d) { return d; })\n .property(\"selected\", (d) => { return d == this.viewer.model.settings.style.color_accessor['node'] })\n .text(function (d) { return d; });\n\n\n this.color_node_div = this.menu_coloring_p.append('div')\n\n this.create_color_scheme_picker('node')\n\n\n }\n\n on_change_coloring_scheme(type, val){\n\n this.viewer.model.settings.style.color_accessor[type] = val === 'None' ? null : val;\n\n console.log()\n\n this.create_color_scheme_picker(type)\n\n this.viewer.set_color_scale(type);\n this.viewer.render(this.viewer.hierarchy)\n\n this.remove_color_legend(type)\n if(this.viewer.model.settings.style.color_accessor[type]) {\n this.add_color_legend(type)\n }\n\n this.menu_coloring_panel.style(\"max-height\", this.menu_coloring_p.style(\"height\"))\n\n }\n\n create_color_scheme_picker(type){\n\n var acc = this.viewer.model.settings.style.color_accessor[type]\n var type_acc = this.viewer.model.settings.extended_data_type[acc]\n\n\n if (type == 'leaf'){\n var container_ = this.color_leaf_div\n container_.html('')\n }\n\n else if (type == 'node'){\n var container_ = this.color_node_div\n container_.html('')\n }\n\n if (type_acc == 'num'){\n\n var domain_leaf = container_.append('div')\n .style('display','block')\n .style('margin','12px')\n\n domain_leaf.append('label').text(\"# domain\");\n\n domain_leaf.append('input')\n .attr('id','inputcoloring_' + type + this.container_object.uid )\n .attr('type','number')\n .attr('name','quantity')\n .attr('min','2')\n .attr('value', this.viewer.model.settings.style.number_domain[type])\n .attr('max','5')\n .style('float','right')\n .on('change', (d) => {\n this.viewer.model.settings.style.number_domain[type] = document.getElementById('inputcoloring_' + type + this.container_object.uid ).value;\n this.create_color_picker(type)\n this.viewer.set_color_scale(type);\n this.viewer.render(this.viewer.hierarchy)\n\n\n })\n\n\n var colcol = container_.append('div')\n .style('display','block')\n .style('margin','8px')\n\n colcol.append('label').text(\"Color\");\n\n colcol.append(\"span\").attr('id',type + '_colorspan_' + this.container_object.uid );\n\n this.create_color_picker(type)\n\n }\n\n\n else if (type_acc == 'color' ){\n container_.append('label').text(\"Use color loaded\").style('float', 'right');\n container_.append('br')\n this.viewer.set_color_scale(type);\n this.viewer.render(this.viewer.hierarchy)\n }\n\n else if (type_acc == 'cat' || typeof type_acc == 'undefined'){\n container_.append('label').text(\"Default color scheme\").style('float', 'right');\n container_.append('br')\n this.viewer.set_color_scale(type);\n this.viewer.render(this.viewer.hierarchy)\n }\n\n else{\n container_.append('label').text(\"\");\n }\n\n\n\n\n}\n\n create_color_picker(type){\n\n var colspan = d3__WEBPACK_IMPORTED_MODULE_1__.select(\"#\" + type + '_colorspan_' + this.container_object.uid)\n\n colspan.html(\"\")\n\n\n var number = this.viewer.model.settings.style.number_domain[type];\n var default_color = this.viewer.model.settings.style.color_domain_default[type];\n var w = Math.round(135/number);\n var color = []\n\n switch (number) {\n case '2':\n color = [default_color[0], default_color[4]]\n break;\n case '3':\n color = [default_color[0],default_color[2], default_color[4]]\n break;\n case '4':\n color = [default_color[0],default_color[1],default_color[2], default_color[4]]\n break;\n case '5':\n color = default_color\n\n }\n\n\n\n for (let i = 0; i < number; i++) {\n var idd = type + '_color_picker_' + this.viewer.container_object.uid + '_' + i;\n colspan.append(\"span\").style('display',' inline-block').style('float','right')\n .html(\"<input class='colpicker_\" + type + \"' type=\\\"color\\\" id=\\\"\"+idd+\"\\\" style='width:\" + w +\"px;'name=\\\"favcolor\\\" value=\\\"\" + color[i] + \"\\\">\")\n\n d3__WEBPACK_IMPORTED_MODULE_1__.select(\"#\" + idd).on('change', () => {\n\n\n this.update_color_pickers(type)\n\n this.viewer.set_color_scale(type);\n this.viewer.render(this.viewer.hierarchy)\n this.remove_color_legend(type)\n this.add_color_legend(type)\n })\n\n }\n\n\n\n\n this.viewer.model.settings.style.color_domain[type] = color;\n\n }\n\n update_color_pickers(type){\n\n var colspan = d3__WEBPACK_IMPORTED_MODULE_1__.select(\"#\" + type + '_colorspan_' + this.container_object.uid)\n\n\n var new_col = []\n colspan.selectAll(\".colpicker_\" + type).each(function(d){\n new_col.push(this.value)\n })\n\n this.viewer.model.settings.style.color_domain[type] = new_col\n\n\n\n }\n\n add_swicth_UI(parent, checked, label, f){\n\n var lab = parent.append('label').style(\"display\", 'inline-block')\n .attr(\"class\",\"switch\")\n\n lab.append('input').attr('type', 'checkbox' ).property('checked', checked);\n lab.append('span').attr(\"class\",\"slider_t round\")\n .on('click', (d) => { f()} )\n\n parent.append('p').text(label).style(\"display\", 'inline-block').style(\"margin-left\", '12px')\n parent.append('br')\n\n }\n\n add_node_face_UI(parent,container_id){\n\n var w = 220;\n var h = 160;\n var gutter = 20\n\n var s = parent.append(\"svg\")\n .attr('display', 'block')\n .attr(\"width\", w )\n .attr(\"height\", h)\n\n s.append('line')\n .style(\"stroke\", \"black\")\n .style(\"stroke-width\", 2)\n .attr(\"x1\", gutter/2)\n .attr(\"y1\", h/2)\n .attr(\"x2\", w/2)\n .attr(\"y2\", h/2);\n\n s.append('line')\n .style(\"stroke\", \"black\")\n .style(\"stroke-width\", 2)\n .attr(\"x1\", w/2)\n .attr(\"y1\", gutter)\n .attr(\"x2\", w/2)\n .attr(\"y2\", h-gutter);\n\n s.append('line')\n .style(\"stroke\", \"black\")\n .style(\"stroke-width\", 2)\n .attr(\"x1\", w/2)\n .attr(\"y1\", gutter)\n .attr(\"x2\", w-gutter)\n .attr(\"y2\", gutter);\n\n s.append('line')\n .style(\"stroke\", \"black\")\n .style(\"stroke-width\", 2)\n .attr(\"x1\", w/2)\n .attr(\"y1\", h-gutter)\n .attr(\"x2\", w-gutter)\n .attr(\"y2\", h-gutter);\n\n s.append('circle')\n .attr('cx', w/2)\n .attr('cy', h/2)\n .attr('r', 5)\n .attr('stroke', 'black')\n .attr('fill', '#69a3b2');\n\n\n var l = Array.from(this.viewer.model.settings.labels['node'])\n\n var options = [\"None\"]\n options = options.concat(l)\n\n var that = this\n\n var selectlt = parent.append('select').attr('id','selectlt' + container_id ).attr('class','select dropdrop ').on('change', function(){\n\n var value = this.value === 'None' ? false : this.value\n\n that.viewer.model.settings.display_internal_label_left_top = value\n\n that.viewer.render(that.viewer.hierarchy)\n\n })\n\n var selectlb = parent.append('select').attr('id','selectlb' + container_id ).attr('class','select dropdrop ').on('change', function(){\n\n var value = this.value === 'None' ? false : this.value\n\n that.viewer.model.settings.display_internal_label_left_bottom = value\n\n that.viewer.render(that.viewer.hierarchy)\n\n })\n\n var selectr = parent.append('select').attr('id','selectr' + container_id ).attr('class','select dropdrop').on('change', function(){\n\n var value = this.value === 'None' ? false : this.value\n\n that.viewer.model.settings.display_internal_label = value\n\n that.viewer.render(that.viewer.hierarchy)\n\n })\n\n selectlt.selectAll('option').data(options).enter().append('option').attr('value', function (d) { return d; }).text(function (d) { return d; });\n selectlb.selectAll('option').data(options).enter().append('option').attr('value', function (d) { return d; }).text(function (d) { return d; });\n selectr.selectAll('option').data(options).enter().append('option').attr('value', function (d) { return d; }).text(function (d) { return d; });\n\n\n\n function selectElement(id, valueToSelect) {\n let element = document.getElementById(id);\n element.value = valueToSelect;\n }\n\n selectElement('selectr' + container_id, this.viewer.model.settings.display_internal_label == false ? \"None\" : this.viewer.model.settings.display_internal_label )\n selectElement('selectlb' + container_id, this.viewer.model.settings.display_internal_label_left_bottom == false ? \"None\" : this.viewer.model.settings.display_internal_label_left_bottom )\n selectElement('selectlt' + container_id, this.viewer.model.settings.display_internal_label_left_top == false ? \"None\" : this.viewer.model.settings.display_internal_label_left_top )\n\n\n }\n\n\n add_quartet_buttons(parent, label, id, f, aux){\n\n var f = f || function(){};\n var aux = aux || null;\n\n parent.append(\"p\").text(label)\n .style('margin-bottom','0px')\n .style('font-weight','bold')\n\n var buttons = parent.append('div')\n .style('display', 'flex')\n .style('margin-top', '0px')\n .style('margin-bottom', '4px')\n\n\n var butty_putty1 = buttons.append('button')\n .attr('class', ' square_button')\n .style('border-radius', '0px')\n .style('padding', '2px')\n .attr('id', id + 'first' + this.container_object.uid )\n .on(\"click\", (e) => f.call(this.container_object,-0.50, aux ) )\n .style('margin', '2px')\n .style('flex-grow', '1')\n\n\n butty_putty1.append(\"div\").append('i')\n .style('color', '#888')\n .style('font-size', '12px')\n .attr('class', ' fas fa-minus ')\n\n butty_putty1.append('p')\n .text('-50%')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n .style('margin-bottom', '4px')\n\n var butty_putty2 = buttons.append('button')\n .attr('class', ' square_button')\n .style('border-radius', '0px')\n .style('padding', '2px')\n .attr('id', id + 'second' + this.container_object.uid )\n .on(\"click\", (e) => f.call(this.container_object,-0.20, aux ) )\n .style('margin', '2px')\n .style('flex-grow', '1')\n\n\n butty_putty2.append(\"div\").append('i')\n .style('color', '#888')\n .style('font-size', '8px')\n .attr('class', ' fas fa-minus ')\n\n butty_putty2.append('p')\n .text('-20%')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n .style('margin-bottom', '4px')\n\n\n var butty_putty3 = buttons.append('button')\n .attr('class', ' square_button')\n .style('border-radius', '0px')\n .style('padding', '2px')\n .attr('id', id + 'third' + this.container_object.uid )\n .on(\"click\", (e) => f.call(this.container_object,0.20, aux ) )\n .style('margin', '2px')\n .style('flex-grow', '1')\n\n\n\n butty_putty3.append(\"div\").append('i')\n .style('color', '#888')\n .style('font-size', '8px')\n .attr('class', ' fas fa-plus ')\n\n butty_putty3.append('p')\n .text('+20%')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n .style('margin-bottom', '4px')\n\n\n\n var butty_putty4 = buttons.append('button')\n .attr('class', ' square_button')\n .style('border-radius', '0px')\n .style('padding', '2px')\n .attr('id', id + 'fourth' + this.container_object.uid )\n .on(\"click\", (e) => f.call(this.container_object,0.50, aux ) )\n .style('margin', '2px')\n .style('flex-grow', '1')\n\n\n\n butty_putty4.append(\"div\").append('i')\n .style('color', '#888')\n .style('font-size', '12px')\n .attr('class', ' fas fa-plus ')\n\n butty_putty4.append('p')\n .text('+50%')\n .style('font-size', 'xx-small')\n .style('line-height', 'normal')\n .style('margin-bottom', '4px')\n\n return buttons\n\n\n\n }\n\n add_slider_UI(parent, label, min, max, current, step, id, f){\n\n var f = f || function(){};\n\n parent.append(\"p\").text(label).style('margin-bottom','0px').style('font-weight','bold')\n\n var d = parent.append('div')\n .attr(\"class\",\"slidecontainer\")\n\n var input = d.append('input').attr(\"class\",\"slider\")\n .attr('type', 'range' )\n .attr('min', min )\n .attr('max', max )\n .attr('value', current )\n //.attr('step', step )\n .attr('id', id + this.container_object.uid )\n .on('click', (e) => { f(e)} )\n .style('margin-bottom','12px')\n\n return input\n\n\n\n }\n\n update_slider(slide ,value){\n slide.attr('value', value);\n }\n\n //OLD PHYLO COPY PASTE todo clean\n // Below are the functions that handle actual exporting:\n // getSVGString ( svgNode ) and svgString2Image( svgString, width, height, format, callback )\n getSVGString( svgNode ) {\n svgNode.setAttribute('xlink', 'http://www.w3.org/1999/xlink');\n var cssStyleText = getCSSStyles( svgNode );\n appendCSS( cssStyleText, svgNode );\n\n var serializer = new XMLSerializer();\n var svgString = serializer.serializeToString(svgNode);\n svgString = svgString.replace(/(\\w+)?:?xlink=/g, 'xmlns:xlink='); // Fix root xlink without namespace\n svgString = svgString.replace(/NS\\d+:href/g, 'xlink:href'); // Safari NS namespace fix\n\n return svgString;\n\n function getCSSStyles( parentElement ) {\n var selectorTextArr = [];\n\n // Add Parent element Id and Classes to the list\n selectorTextArr.push( '#'+parentElement.id );\n for (var c = 0; c < parentElement.classList.length; c++)\n if ( !contains('.'+parentElement.classList[c], selectorTextArr) )\n selectorTextArr.push( '.'+parentElement.classList[c] );\n\n // Add Children element Ids and Classes to the list\n var nodes = parentElement.getElementsByTagName(\"*\");\n for (var i = 0; i < nodes.length; i++) {\n var id = nodes[i].id;\n if ( !contains('#'+id, selectorTextArr) )\n selectorTextArr.push( '#'+id );\n\n var classes = nodes[i].classList;\n for (var c = 0; c < classes.length; c++)\n if ( !contains('.'+classes[c], selectorTextArr) )\n selectorTextArr.push( '.'+classes[c] );\n }\n\n // Extract CSS Rules\n var extractedCSSText = \"\";\n for (var i = 0; i < document.styleSheets.length; i++) {\n var s = document.styleSheets[i];\n\n try {\n if(!s.cssRules) continue;\n } catch( e ) {\n if(e.name !== 'SecurityError') throw e; // for Firefox\n continue;\n }\n\n var cssRules = s.cssRules;\n for (var r = 0; r < cssRules.length; r++) {\n if ( contains( cssRules[r].selectorText, selectorTextArr ) )\n extractedCSSText += cssRules[r].cssText;\n }\n }\n\n\n return extractedCSSText;\n\n function contains(str,arr) {\n return arr.indexOf( str ) === -1 ? false : true;\n }\n\n }\n\n function appendCSS( cssText, element ) {\n var styleElement = document.createElement(\"style\");\n styleElement.setAttribute(\"type\",\"text/css\");\n styleElement.innerHTML = cssText;\n var refNode = element.hasChildNodes() ? element.children[0] : null;\n element.insertBefore( styleElement, refNode );\n }\n }\n\n svgString2Image( svgString, width, height, format, callback ) {\n var format = format ? format : 'png';\n\n var imgsrc = 'data:image/svg+xml;base64,'+ btoa( unescape( encodeURIComponent( svgString ) ) ); // Convert SVG string to dataurl\n\n var canvas = document.createElement(\"canvas\");\n var context = canvas.getContext(\"2d\");\n\n canvas.width = width;\n canvas.height = height;\n\n var image = new Image;\n image.onload = function() {\n\n context.clearRect ( 0, 0, width, height );\n context.fillStyle = \"#ffffff\";\n context.fillRect(0, 0, width, height);\n context.drawImage(image, 0, 0, width, height);\n\n canvas.toBlob( function(blob) {\n var filesize = Math.round( blob.length/1024 ) + ' KB';\n if ( callback ) callback( blob, filesize );\n });\n };\n image.src = imgsrc;\n }\n\n addLogo(svg) {\n // TODO load with ajax\n var logo_xml = '<svg id=\"exportLogo\" x=\"0\" y=\"0\"><g id=\"g4169\"> <path d=\"m 29.606259,23.679171 1.905511,0 c 0.193778,0.617882 0.290669,1.188505 0.290672,1.711869 0.466506,-0.545171 1.022728,-0.99222 1.668668,-1.341146 0.653108,-0.348904 1.295455,-0.523362 1.927043,-0.523373 0.976073,1.1e-5 1.86603,0.261698 2.669869,0.78506 0.810999,0.523383 1.442581,1.221215 1.894747,2.093495 0.459321,0.865028 0.688986,1.802739 0.688998,2.813134 -1.2e-5,1.010407 -0.229677,1.951752 -0.688998,2.824038 -0.452166,0.865023 -1.083748,1.559219 -1.894747,2.082592 -0.803839,0.516105 -1.693796,0.774156 -2.669869,0.774157 -0.638765,-1e-6 -1.284701,-0.163554 -1.937809,-0.490663 -0.653117,-0.334377 -1.20575,-0.770521 -1.657902,-1.308434 l 0,6.542172 -1.711731,0 0,-12.713622 c -2e-6,-0.552441 -0.04665,-1.170313 -0.139953,-1.853616 -0.08613,-0.683283 -0.20096,-1.148504 -0.344499,-1.395663 m 2.196183,5.539039 c -3e-6,1.133981 0.355261,2.093499 1.065795,2.878557 0.717702,0.777793 1.561006,1.166688 2.529916,1.166687 0.954543,10e-7 1.79067,-0.392528 2.508385,-1.177592 0.717697,-0.785056 1.07655,-1.740939 1.076561,-2.867652 -1.1e-5,-1.1267 -0.358864,-2.082583 -1.076561,-2.867652 -0.717715,-0.79232 -1.553842,-1.188485 -2.508385,-1.188495 -0.96891,10e-6 -1.812214,0.396175 -2.529916,1.188495 -0.710534,0.785069 -1.065798,1.740952 -1.065795,2.867652\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee Bold\" id=\"path4145\" /> <path d=\"m 43.224746,34.75725 0,-16.279106 1.711731,0 0,7.152775 c 0.437798,-0.610593 0.94378,-1.112159 1.517951,-1.504699 0.581337,-0.399789 1.151913,-0.599688 1.71173,-0.599699 0.602867,1.1e-5 1.141147,0.123585 1.614841,0.370723 0.473678,0.23989 0.854062,0.570633 1.141153,0.99223 0.287074,0.421615 0.502386,0.897739 0.645937,1.428373 0.143531,0.523382 0.215302,1.083101 0.215312,1.679158 l 0,6.760245 -1.6902,0 0,-6.760245 c -8e-6,-0.33437 -0.0323,-0.65421 -0.09689,-0.959518 -0.05742,-0.305294 -0.154315,-0.603326 -0.290672,-0.894097 -0.136371,-0.298024 -0.337329,-0.534268 -0.602873,-0.708736 -0.265559,-0.181718 -0.584938,-0.272581 -0.958139,-0.272591 -0.473692,10e-6 -0.96891,0.243524 -1.485653,0.730544 -0.509576,0.487036 -0.925846,1.05039 -1.24881,1.69006 -0.315795,0.632417 -0.47369,1.177598 -0.473687,1.635543 l 0,5.53904 -1.711731,0\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee Bold\" id=\"path4147\" /> <path d=\"m 53.581256,23.679171 1.776325,0 3.423461,8.472114 3.337338,-8.472114 1.797856,0 -6.4163,16.388142 -1.819387,0 2.22848,-5.658979 -4.327773,-10.729163\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee Bold\" id=\"path4149\" /> <path d=\"m 67.415055,34.75725 -1.71173,0 0,-16.279106 1.71173,0 0,16.279106\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee Bold\" id=\"path4151\" /> <path d=\"m 80.882824,26.361462 c 0.523914,0.872297 0.785877,1.824546 0.785889,2.856748 -1.2e-5,1.032215 -0.261975,1.984463 -0.785889,2.856749 -0.523937,0.872291 -1.234467,1.562854 -2.131589,2.071689 -0.897143,0.501566 -1.873223,0.752348 -2.928244,0.752349 -1.062213,-1e-6 -2.04547,-0.250783 -2.949776,-0.752349 -0.897136,-0.508835 -1.607665,-1.199398 -2.131589,-2.071689 -0.523928,-0.872286 -0.78589,-1.824534 -0.785889,-2.856749 -10e-7,-1.032202 0.261961,-1.984451 0.785889,-2.856748 0.523924,-0.87955 1.234453,-1.570111 2.131589,-2.071688 0.904306,-0.508825 1.887563,-0.763242 2.949776,-0.763253 1.055021,1.1e-5 2.031101,0.254428 2.928244,0.763253 0.897122,0.501577 1.607652,1.192138 2.131589,2.071688 m -9.20459,2.856748 c -3e-6,1.126713 0.405501,2.082596 1.216513,2.867652 0.811004,0.785064 1.794261,1.177593 2.949775,1.177592 1.1555,10e-7 2.142346,-0.392528 2.960541,-1.177592 0.818175,-0.792325 1.227268,-1.748208 1.227279,-2.867652 -1.1e-5,-1.112162 -0.409104,-2.060776 -1.227279,-2.845844 -0.818195,-0.792321 -1.805041,-1.188485 -2.960541,-1.188495 -1.155514,10e-6 -2.138771,0.396174 -2.949775,1.188495 -0.811012,0.785068 -1.216516,1.733682 -1.216513,2.845844\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee Bold\" id=\"path4153\" /> <path d=\"m 84.532366,34.0049 c -2e-6,-0.247148 0.08612,-0.457951 0.258374,-0.63241 0.172247,-0.181725 0.380382,-0.272588 0.624405,-0.27259 0.244018,2e-6 0.452152,0.09087 0.624405,0.27259 0.179424,0.174459 0.269137,0.385262 0.269141,0.63241 -4e-6,0.239881 -0.08972,0.454318 -0.269141,0.643314 -0.17943,0.181727 -0.387564,0.27259 -0.624405,0.27259 -0.236846,0 -0.444981,-0.09087 -0.624405,-0.27259 -0.172252,-0.188996 -0.258376,-0.403433 -0.258374,-0.643314\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee\" id=\"path4155\" /> <path d=\"m 89.527608,21.08411 c -10e-7,-0.239866 0.08253,-0.447035 0.247608,-0.621507 0.172248,-0.174444 0.380383,-0.261673 0.624406,-0.261687 0.23684,1.4e-5 0.437798,0.08724 0.602874,0.261687 0.172246,0.174472 0.258371,0.381641 0.258374,0.621507 -3e-6,0.247162 -0.08254,0.457964 -0.247609,0.632409 -0.165075,0.167203 -0.369621,0.250796 -0.613639,0.250783 -0.244023,1.3e-5 -0.452158,-0.08358 -0.624406,-0.250783 -0.165074,-0.174445 -0.247609,-0.385247 -0.247608,-0.632409 m 1.356465,13.67314 -0.968904,0 0,-11.056271 0.968904,0 0,11.056271\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee\" id=\"path4157\" /> <path d=\"m 99.593447,23.526521 c 0.753583,1.1e-5 1.474873,0.149027 2.163883,0.447048 0.68899,0.298043 1.28468,0.701476 1.78709,1.210302 0.50238,0.508844 0.90072,1.115812 1.19499,1.820905 0.29424,0.705108 0.44137,1.442918 0.44139,2.213434 -2e-5,0.777797 -0.14715,1.519242 -0.44139,2.224339 -0.29427,0.705104 -0.69261,1.312071 -1.19499,1.820905 -0.50241,0.501568 -1.0981,0.905001 -1.78709,1.210301 -0.68901,0.298033 -1.4103,0.447049 -2.163883,0.447049 -1.543077,0 -2.860068,-0.556084 -3.950979,-1.668254 -1.090916,-1.112166 -1.636373,-2.456945 -1.636372,-4.03434 -10e-7,-1.032202 0.247608,-1.984451 0.742827,-2.856748 0.502393,-0.87955 1.180625,-1.570111 2.0347,-2.071688 0.861243,-0.508825 1.797849,-0.763242 2.809824,-0.763253 m -4.629212,5.691689 c -2e-6,1.301171 0.452153,2.416973 1.356467,3.347412 0.911483,0.923175 2.009573,1.38476 3.294277,1.384759 1.284681,10e-7 2.379191,-0.461584 3.283511,-1.384759 0.91147,-0.930439 1.36721,-2.046241 1.36722,-3.347412 -1e-5,-1.293889 -0.45575,-2.402423 -1.36722,-3.325603 -0.90432,-0.923164 -1.99883,-1.38475 -3.283511,-1.38476 -1.284704,10e-6 -2.382794,0.461596 -3.294277,1.38476 -0.904314,0.92318 -1.356469,2.031714 -1.356467,3.325603\" style=\"font-size:22.18883514px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sawasdee;-inkscape-font-specification:Sawasdee\" id=\"path4159\" /> </g> <g id=\"g4014\" transform=\"translate(12.84,20.592727)\"> <g transform=\"translate(0,-0.065)\" id=\"g3992\"> <polygon style=\"fill:#939598\" id=\"polygon461\" points=\"5.7,0.23 11.86,0.23 11.86,1.65 7.12,1.65 7.12,6.04 11.86,6.04 11.86,7.46 11.86,7.46 5.7,7.46 \" class=\"cls-2\" /> <polygon style=\"fill:#939598\" id=\"polygon463\" points=\"0,7.08 3.51,7.08 3.51,8.49 1.43,8.49 1.45,15.84 12.68,15.84 12.68,17.26 12.68,17.26 0.04,17.26 \" class=\"cls-2\" /> <polygon style=\"fill:#939598\" id=\"polygon465\" points=\"10.49,11.02 10.49,12.44 10.49,12.44 2.84,12.44 2.84,7.79 4.26,7.79 4.26,11.02 \" class=\"cls-2\" transform=\"translate(0,-0.15225398)\" /> <polygon style=\"fill:#bcbec0\" id=\"polygon467\" points=\"4.26,4.55 4.26,7.79 4.26,7.79 2.84,7.79 2.84,3.13 6.41,3.13 6.41,4.55 \" class=\"cls-3\" transform=\"matrix(1,0,0,0.85463687,0,0.4549866)\" /> <rect style=\"fill:#939598;fill-opacity:1\" id=\"rect3926-3\" width=\"1.4240631\" height=\"1.7319686\" x=\"2.8396611\" y=\"7.0799503\" /> <rect style=\"fill:#939598;fill-opacity:1\" id=\"rect3926-6\" width=\"1.3864813\" height=\"1.6934805\" x=\"5.7012329\" y=\"2.9206221\" /> </g> <g id=\"g4005\"> <g id=\"g3984\"> <polygon class=\"cls-2\" points=\"94.93,12.33 94.93,10.91 99.87,10.91 99.87,6.46 94.93,6.46 94.93,5.04 101.29,5.04 101.29,12.33 101.29,12.33 \" id=\"polygon453\" style=\"fill:#939598\" /> <polygon class=\"cls-2\" points=\"94.72,17.36 94.72,15.94 104.87,15.94 104.9,5.41 102.74,5.41 102.74,3.99 106.32,3.99 106.29,17.36 106.29,17.36 \" id=\"polygon455\" style=\"fill:#939598\" /> <polygon class=\"cls-2\" points=\"95.51,1.42 95.51,0 103.45,0 103.45,4.7 103.45,4.7 102.03,4.7 102.03,1.42 \" id=\"polygon457\" style=\"fill:#939598\" /> <polygon class=\"cls-3\" points=\"102.03,7.97 102.03,4.7 103.45,4.7 103.45,9.39 103.45,9.39 100.65,9.39 100.65,7.97 \" id=\"polygon459\" style=\"fill:#bcbec0\" /> <rect y=\"3.9876499\" x=\"102.02941\" height=\"1.4238259\" width=\"1.4579451\" id=\"rect3926\" style=\"fill:#939598;fill-opacity:1\" /> <rect y=\"7.884686\" x=\"99.887817\" height=\"1.6934805\" width=\"1.397205\" id=\"rect3926-7\" style=\"fill:#939598;fill-opacity:1\" /> </g> </g> </g> </g> </svg>';\n\n\n svg.append(\"g\").html(logo_xml);\n\n }\n\n add_empty_message(){\n\n\n this.container_d3.selectAll(\".empty_message\").remove()\n\n\n /*if (phylo.phylo_embedded){\n\n if (phylo.bound_container[0]==this.container_object){\n tooltip_object[0].show()\n tooltip_object[3].show()\n }\n\n }\n\n */\n\n\n\n this.viewer.svg_d3.node().append('g')\n .attr(\"class\", 'empty_message')\n .attr('width',this.viewer.width )\n .attr(\"transform\", \"translate(\"+ (this.viewer.width/2)+\",\" + (this.viewer.height/2) + \")\")\n .append(\"text\")\n .attr(\"fill\", \"#333\")\n .attr('text-anchor', 'middle')\n .style('font-size', '1.2em')\n .html('No tree here ! You can <a href=\"#\" id=\"add_tree_link' + this.container_object.uid +'\">add a tree</a> or use examples below.')\n\n document.querySelector('#add_tree_link'+ this.container_object.uid).addEventListener('click', event => {\n $('#exampleModal' + this.container_object.uid).modal('show')\n });\n\n\n\n this.viewer.svg_d3.node().append('text')\n .attr(\"class\", 'empty_message')\n .attr(\"transform\", \"translate(\"+ (this.viewer.width/2)+\",\" + (this.viewer.height/2 + 24) + \")\")\n .attr('text-anchor', 'middle')\n .attr(\"fill\", \"#bbb\")\n .html(\"Ready to use examples: <a id='ex1\"+ this.container_object.uid +\"' style='cursor:pointer;text-decoration: underline'>Tree bundle #1</a> - <a style='cursor:pointer;text-decoration: underline' id='ex2\"+ this.container_object.uid +\"'>Tree bundle #2</a> \")\n\n\n\n document.querySelector('#ex1'+ this.container_object.uid).addEventListener('click', event => {\n this.container_object.add_tree(this.examples[\"LRF1\"],{'data_type': 'nhx'})\n this.container_object.add_tree(this.examples[\"r2t\"])\n this.container_object.add_tree(this.examples[\"unrooted1\"])\n this.container_object.add_tree(this.examples[\"small1\"])\n\n\n this.api.start()\n });\n\n document.querySelector('#ex2'+ this.container_object.uid).addEventListener('click', event => {\n\n this.container_object.add_tree(this.examples[\"LRF2\"],{'data_type': 'nhx'})\n this.container_object.add_tree(this.examples[\"rokas\"])\n this.container_object.add_tree(this.examples[\"nhx\"],{'data_type': 'nhx'})\n this.container_object.add_tree(this.examples[\"unrooted2\"])\n this.container_object.add_tree(this.examples[\"small2\"])\n this.container_object.add_tree(this.examples[\"stack\"],{'data_type': 'json', 'use_branch_lenght': false, 'show_histogram':true, 'collapse_level': 2})\n this.api.start()\n });\n\n }\n\n\n}\n\n//# sourceURL=webpack://PhyloIO/./src/interface.js?");
|
|
8718
|
-
|
|
8719
|
-
/***/ }),
|
|
8720
|
-
|
|
8721
|
-
/***/ "./src/keyboardManager.js":
|
|
8722
|
-
/*!********************************!*\
|
|
8723
|
-
!*** ./src/keyboardManager.js ***!
|
|
8724
|
-
\********************************/
|
|
8725
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8726
|
-
|
|
8727
|
-
"use strict";
|
|
8728
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ keyboardManager)\n/* harmony export */ });\n\n// Only apply keyboard shortcut to the first (left) and second (right) created containers\nclass keyboardManager {\n\n constructor(phylo) {\n\n this.left;\n this.right;\n\n\n var cs = Object.entries(phylo.containers);\n\n if (cs.length != -1) { this.left = cs[0][1] }\n if(cs.length > 1) { this.right = cs[1][1]}\n\n\n var self_km = this\n\n document.onkeypress = function (e) {\n e = e || window.event;\n\n const formElements = ['INPUT', 'TEXTAREA', 'SELECT', 'OPTION', 'DIV'];\n\n if (formElements.includes(e.target.tagName)) {return}\n\n var shortcuts = {\n // LEFT\n \"r\": function(){self_km.left.viewer.fit_to_viewer_height()},\n \"f\": function(){self_km.left.viewer.maximise_zoom()},\n \"a\": function(){self_km.left.modify_node_size_percent(20, 'horizontal')},\n \"d\": function(){self_km.left.modify_node_size_percent( 20,'horizontal')},\n \"w\": function(){self_km.left.modify_node_size_percent( 20,'vertical')},\n \"s\": function(){self_km.left.modify_node_size_percent( 20,'vertical')},\n \"q\": function(){self_km.left.shift_model(-1)},\n \"e\": function(){self_km.left.shift_model(1)},\n\n // RIGHT\n \"u\": function(){self_km.right.shift_model(-1)},\n \"o\": function(){self_km.right.shift_model(1)},\n \"j\": function(){self_km.right.modify_node_size_percent( 20,'horizontal')},\n \"l\": function(){self_km.right.modify_node_size_percent( 20,'horizontal')},\n \"i\": function(){self_km.right.modify_node_size_percent( 20,'vertical')},\n \"k\": function(){self_km.right.modify_node_size_percent( 20,'vertical')},\n \"z\": function(){self_km.right.viewer.fit_to_viewer_height()},\n \"h\": function(){self_km.right.viewer.maximise_zoom()},\n\n \"t\": function(){\n phylo.settings.compute_distance = true;\n phylo.send_worker_distance()},\n\n \"g\": function(){\n if (phylo.phylo_embedded){document.getElementById(\"menu_compare_mode\").click();}\n }\n\n\n }\n\n if (shortcuts.hasOwnProperty(e.key)){\n shortcuts[e.key]()\n }\n\n };\n\n }\n\n};\n\n\n\n\n\n\n//# sourceURL=webpack://PhyloIO/./src/keyboardManager.js?");
|
|
7804
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Model)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n/* harmony import */ var minhashjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! minhashjs */ \"./node_modules/minhashjs/index.js\");\n/* harmony import */ var biojs_io_newick__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! biojs-io-newick */ \"./node_modules/biojs-io-newick/src/index.js\");\n\n\n\n\nvar uid_model = 0\nvar uid_untitle_counter = 0\n;\nconst { parse_nhx } = __webpack_require__(/*! ./utils.js */ \"./src/utils.js\");\nconst { phyloXml } = __webpack_require__(/*! ./phyloxml.js */ \"./src/phyloxml.js\");\n\nclass Model {\n\n constructor(data, settings, from_raw_data = true) {\n\n this.zoom;\n this.settings = {\n 'uid': null,\n 'domain_extended_data' : {},\n 'edge_related_data' : ['Length'],\n 'default_internal_label_is_for_branch': false,\n 'extended_data_type' : {'Topology': 'num'},\n 'labels' : {'leaf' : new Set(), 'node':new Set()},\n 'colorlabels' :{'leaf' : new Set(), 'node':new Set([\"Topology\"])},\n 'display_leaves' : true,\n 'display_nodes_labels' : true,\n 'mirror': false,\n 'name': null,\n 'first_time_render': true,\n 'data_type' : 'newick',\n 'use_branch_lenght' : true,\n 'show_tooltips' : false,\n 'subsample_label' : true,\n 'display_internal_label' : false,\n 'display_internal_label_left_top' : false,\n 'display_internal_label_left_bottom' : false,\n 'display_leaf_label' : false,\n 'display_leaf_label_left_top' : false,\n 'display_leaf_label_left_bottom' : false,\n 'display_duplication' : false,\n 'has_branch_lenght' : true,\n 'has_duplications' : false,\n 'multiple_search':false,\n 'show_histogram' : false,\n 'align_tip' : false,\n 'use_meta_for_leaf' : true,\n 'use_meta_for_node' : false,\n 'has_histogram_data' : false,\n 'similarity': [],\n 'style': {\n 'font_size_internal' : 14,\n 'color_accessor' : {'leaf' : null, 'node': \"Topology\", 'circle': null},\n 'color_extent_min': {'leaf' : {}, 'node': {\"Topology\":0}, 'circle': {} },\n 'color_extent_max':{'leaf' : {}, 'node': {\"Topology\":1}, 'circle': {}},\n 'number_domain':{ 'Topology': 5, 'Length': 5},\n 'color_domain':{'Topology' : ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC'], 'Length': ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC']},\n 'color_domain_default': ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC'],\n },\n 'tree': {\n 'node_vertical_size' : 30,\n 'node_horizontal_size' : 40,\n 'node_radius' : 6, // move to style\n 'line_width' : 3,// move to style\n 'font_size':14, // move to style\n 'max_depth' : 0,\n },\n 'collapse_level': 0,\n 'stack' : {\n 'type': 'genes',//'events',\n 'showHistogramValues' : false,\n 'showHistogramSummaryValue' : true,\n 'legendTxtSize' : 12,\n 'margin' : 8,\n 'xInitialRightMargin' : 45,\n 'stackHeight' : 120,\n 'stackWidth' : 30,\n 'maxStackHeight': 'max', // ratio -> stack height fixed | max -> largest data = stack height\n 'has_support' : false,\n 'only_support' : false,\n\n },\n 'sync_coloring': false,\n 'selected_triangle_coloring': 'None',\n 'colorScale': {'leaf' : null, 'node':null, 'circle': {}},\n 'intercolor': {'leaf' : null, 'node': null, 'circle': {}}\n }\n\n if (settings) {\n\n for(var key in settings) {\n\n if (key == 'labels_array_leaf'){\n var value = settings[key];\n this.settings['labels']['leaf'] = new Set(value);\n }\n if (key == 'labels_array_node'){\n var value = settings[key];\n this.settings['labels']['node'] = new Set(value);\n }\n if (key == 'colorlabels_array_leaf'){\n var value = settings[key];\n this.settings['colorlabels']['leaf'] = new Set(value);\n }\n\n if (key == 'colorlabels_array_node'){\n var value = settings[key];\n this.settings['colorlabels']['node'] = new Set(value);\n }\n\n else{\n var value = settings[key];\n this.settings[key] = value;\n }\n\n\n }\n\n }\n\n this.settings.name = this.settings.name ? this.settings.name : \"Untitled \" + uid_untitle_counter++\n\n this.uid = null\n this.input_data = data;\n this.leaves = []\n\n\n\n if (from_raw_data){\n this.uid = uid_model++;\n this.settings.uid = this.uid;\n this.data = this.factory(this.parse());\n }\n else{\n this.uid = settings.uid;\n this.settings.uid = this.uid;\n this.data = data\n data.leaves = this.get_leaves(data)\n this.traverse(data, function(n,c){\n n.leaves = this.get_leaves(n)\n })\n this.set_color_scale('node');\n this.set_color_scale('leaf');\n }\n\n this.data.root = true;\n this.data.elementS = {}\n this.data.elementBCN = {}\n this.rooted = this.data.children.length !== 3\n this.big_tree = (this.leaves.length > 500)\n\n // check that histogram data is present and compute\n if(this.settings.show_histogram && this.data.evolutionaryEvents) {\n this.settings.has_histogram_data = true;\n this.largestGenome = 0;\n this.largestEvents = 0; // todo\n\n this.traverse(this.data , function(n,c){\n\n let g = n.nr_hogs ? n.nr_hogs : n.nr_proteins\n if (g > this.largestGenome ) {this.largestGenome = g;}\n\n if (n.evolutionaryEvents){\n\n var ga = n.evolutionaryEvents.gained ? n.evolutionaryEvents.gained : 0\n var l = n.evolutionaryEvents.lost ? n.evolutionaryEvents.lost : 0\n var d = n.evolutionaryEvents.duplications ? n.evolutionaryEvents.duplications : 0\n\n let e = ga + l + d\n\n\n if (e > this.largestEvents ) {this.largestEvents = e;}\n\n }\n\n if (this.settings.stack.has_support){\n\n let g_support = n.nr_hogs_support ? n.nr_hogs_support : n.nr_proteins_support\n if (g_support > this.largestGenome_support ) {this.largestGenome_support = g_support;}\n\n if (n.evolutionaryEvents_support){\n\n\n var ga_support = n.evolutionaryEvents_support.gained ? n.evolutionaryEvents_support.gained : 0\n var l_support = n.evolutionaryEvents_support.lost ? n.evolutionaryEvents_support.lost : 0\n var d_support = n.evolutionaryEvents_support.duplications ? n.evolutionaryEvents_support.duplications : 0\n\n let e_support = ga_support + l_support + d_support\n\n if (e_support > this.largestEvents_support ) {this.largestEvents_support = e_support;}\n\n }\n }\n\n\n\n })\n\n\n }\n\n }\n\n set_all_color_scale(){\n this.set_color_scale('node');\n this.set_color_scale('leaf');\n this.set_color_scale('circle');\n }\n\n remove_all_color_scale(){\n this.settings.colorScale ={'leaf' : null, 'node':null, 'circle': {}}\n this.settings.intercolor ={'leaf' : null, 'node':null, 'circle': {}}\n }\n\n\n\n get_name(){\n return this.settings.name\n }\n\n set_name(name){\n this.settings.name = name\n }\n\n traverse(o,func_pre, func_post) {\n\n if (func_pre){\n func_pre.apply(this,[o,o[\"children\"]])\n }\n\n if(o[\"children\"]){\n\n for (var c in o[\"children\"] ) {\n\n var child = o[\"children\"][c]\n\n child = this.traverse(child, func_pre, func_post)\n\n if (func_post) {\n func_post.apply(this,[child,o])\n }\n\n\n }\n\n\n }\n\n return o\n\n }\n\n set_color_scale(type, api){\n\n\n var type = (typeof type !== 'undefined') ? type : 'node';\n var api = (typeof type !== 'undefined') ? api : null;\n\n\n var colorScaleDomain = false;\n var colorScaleRange;\n var number;\n\n\n if (typeof this != \"undefined\" && this) {\n\n\n // If categorical do special\n var acc = this.settings.style.color_accessor[type]\n var type_acc = this.settings.extended_data_type[acc]\n\n\n if (acc === null){\n this.settings.colorScale[type] = null\n return\n }\n\n\n if (type_acc == 'cat'){\n\n this.settings.colorScale[type] = api.get_color_scale(acc)\n\n\n //var dom = this.settings.domain_extended_data[acc]\n //this.settings.colorScale[type] = d3.scaleOrdinal().domain(dom).range(d3.schemePaired);\n return\n }\n\n else if (type_acc == 'color'){\n\n this.settings.colorScale[type] = null\n return\n }\n\n\n\n number = this.settings.style.number_domain[acc]\n\n\n if (this.settings.style.color_accessor[type] != null && this.settings.style.color_accessor[type] != 'Topology' ) {\n\n var ms = this.settings.style;\n\n var ca = ms.color_accessor[type];\n\n if (ms.color_extent_max[type][ca] == ms.color_extent_min[type][ca]){\n this.settings.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate( ms.color_extent_max[type][ca], ms.color_extent_max[type][ca]-1)\n }else{\n this.settings.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate( ms.color_extent_max[type][ca], ms.color_extent_min[type][ca])\n }\n\n\n colorScaleRange = this.settings.style.color_domain[acc];\n\n }\n\n else {\n this.settings.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate(1,0)\n colorScaleRange = this.settings.style.color_domain[acc];\n }\n\n\n\n }\n else {\n\n number = 5;\n colorScaleRange = ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC']\n this.settings.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate(1, 0);\n }\n\n\n switch (number) {\n case 2:\n colorScaleDomain = [this.settings.intercolor[type](0),this.settings.intercolor[type](1)]\n break;\n case 3:\n colorScaleDomain = [this.settings.intercolor[type](0),this.settings.intercolor[type](0.5) , this.settings.intercolor[type](1)]\n break;\n case 4:\n colorScaleDomain = [this.settings.intercolor[type](0),this.settings.intercolor[type](0.33),this.settings.intercolor[type](0.66) , this.settings.intercolor[type](1)]\n break;\n case 5:\n colorScaleDomain = [this.settings.intercolor[type](0),this.settings.intercolor[type](0.25) ,this.settings.intercolor[type](0.5) ,this.settings.intercolor[type](0.75) , this.settings.intercolor[type](1)]\n\n }\n\n\n this.settings.colorScale[type] = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear()\n .domain(colorScaleDomain)\n .range(colorScaleRange);\n\n\n\n }\n\n traverse_hierarchy(o,func_pre, func_post) {\n\n var children = o[\"children\"] ? o[\"children\"] : o[\"_children\"]\n\n if (func_pre){\n func_pre.apply(this,[o,children])\n }\n\n if(children ){\n\n for (var c in children) {\n\n var child = children[c]\n\n child = this.traverse_hierarchy(child, func_pre, func_post)\n\n if (func_post) {\n func_post.apply(this,[child,o])\n }\n\n\n }\n\n\n }\n\n return o\n\n }\n\n set_parent(node,parent){\n node.parent = parent\n }\n\n set_cumulated_length(node, children){\n if (node.parent) {\n node.depth = node.parent.depth + 1\n node.distance_to_root = node.parent.distance_to_root + node.branch_length\n }\n else{\n node.distance_to_root = 0\n node.depth = 0}\n\n }\n\n factory(json){ // todo do one traversal with all in one function\n\n var p;\n\n //has_branch_lenght\n this.settings.has_branch_lenght = false;\n\n json.children.forEach((child) => {\n if (typeof child.branch_length != 'undefined') { this.settings.has_branch_lenght = true; }\n })\n\n if (this.settings.has_branch_lenght) {\n this.settings.labels['node'].add('Length')\n this.settings.labels['leaf'].add('Length')\n this.settings.colorlabels['node'].add('Length')\n this.settings.colorlabels['leaf'].add('Length')\n this.settings.extended_data_type['Length'] = 'num'\n\n this.settings.style.color_extent_max['node']['Length'] = 0;\n this.settings.style.color_extent_min['node']['Length'] = 1000000000;\n\n this.settings.style.color_extent_max['leaf']['Length'] = 0;\n this.settings.style.color_extent_min['leaf']['Length'] = 1000000000;\n }\n\n\n // if branch size is not used put 1\n if (!this.settings.has_branch_lenght) {\n p = this.traverse(json, function(n,c){n.branch_length=1})\n p.branch_length = 0 // root\n }\n else{ // sanity check\n p = this.traverse(json, function(n,c){if (typeof n.branch_length == 'undefined') {n.branch_length=1} })\n if (typeof p.branch_length == 'undefined') {p.branch_length=1}\n }\n\n // set parent attribute\n p = this.traverse(json, null , this.set_parent)\n\n // compute cumulated lenght\n p = this.traverse(p, this.set_cumulated_length , null)\n\n this.traverse(p, function(n,c){\n\n n.extended_informations = {}\n n.elementS = {}\n n.elementBCN = {}\n n.force_label_show = null;\n\n if(n.branch_length){\n n.extended_informations['Length'] = n.branch_length;\n if (this.settings.style.color_extent_max['node']['Length'] < n.branch_length){\n this.settings.style.color_extent_max['node']['Length'] = n.branch_length\n this.settings.style.color_extent_max['leaf']['Length'] = n.branch_length\n }\n\n if (this.settings.style.color_extent_min['node']['Length'] > n.branch_length){\n this.settings.style.color_extent_min['node']['Length'] = n.branch_length\n this.settings.style.color_extent_min['leaf']['Length'] = n.branch_length\n }\n }\n\n if (typeof c !== 'undefined' && typeof n.name !== 'undefined' && n.name !== \"\" ) {\n n.extended_informations['Data'] = n.name;\n this.settings.labels['node'].add('Data')\n this.settings.labels['leaf'].add('Data')\n this.settings.extended_data_type['Data'] = 'num'\n\n if (!isNaN(n.name)){\n\n if (!this.settings.colorlabels['node'].has('Data')){\n this.settings.colorlabels['node'].add('Data');\n this.settings.style.color_extent_max['node']['Data'] = 0;\n this.settings.style.color_extent_min['node']['Data'] = 1000000000;\n }\n\n if (this.settings.style.color_extent_max['node']['Data'] <n.name){\n this.settings.style.color_extent_max['node']['Data'] = n.name\n }\n\n if (this.settings.style.color_extent_min['node']['Data'] > n.name){\n this.settings.style.color_extent_min['node']['Data'] = n.name\n }\n\n }\n\n else {this.settings.extended_data_type['Data'] = 'cat'}\n }\n\n if(n.data_nhx && Object.keys(n.data_nhx).length > 0){\n\n Object.entries(n.data_nhx).forEach(([key, value]) => {\n\n this.settings.labels['node'].add(key)\n this.settings.labels['leaf'].add(key)\n\n this.settings.colorlabels['node'].add(key)\n this.settings.colorlabels['leaf'].add(key)\n\n\n switch(key){\n case 'Ev':\n if (value == 'duplication') {\n n.duplication = true\n this.settings.has_duplications = true;\n }\n n.extended_informations.events = value\n n.extended_informations[key] = value\n this.settings.extended_data_type['Ev'] = 'cat'\n break;\n case 'DD':\n case 'D':\n if (value == 'Y') {\n n.duplication = true\n this.settings.has_duplications = true;\n\n }\n else if (value == 'N'){\n n.duplication = false\n this.settings.has_duplications = true;\n }\n n.extended_informations.events = value\n n.extended_informations[key] = value\n this.settings.extended_data_type['D'] = 'cat'\n break;\n case 'XB':\n case 'B':\n this.settings.edge_related_data.push(key)\n n.extended_informations[key] = value\n this.settings.extended_data_type[key] = 'num'\n default:\n n.extended_informations[key] = value\n this.settings.extended_data_type[key] = 'cat'\n break;\n }\n });\n\n\n }\n // phyloxml specific attributes\n for (let attr of [\"taxonomies\", \"sequences\"]) {\n if (n.hasOwnProperty(attr)) {\n Object.entries(n[attr][0]).forEach(([key, value]) => {\n n.extended_informations[attr + \"_\" + key] = value;\n this.settings.extended_data_type[attr + \"_\" + key] = \"cat\";\n });\n if (n.name === undefined || n.name === \"\") {\n if (attr === \"taxonomies\" && n.taxonomies[0].hasOwnProperty(\"scientific_name\")) {\n n.name = n.taxonomies[0].scientific_name;\n } else if (attr === \"sequences\" && n.sequence.hasOwnProperty(\"name\")) {\n n.name = n.sequences[0].name;\n }\n }\n }\n }\n if (n.hasOwnProperty(\"date\")){\n n.extended_informations['date'] = n.date;\n this.settings.extended_data_type['date'] = \"cat\";\n }\n\n if (n.depth > this.settings.tree.max_depth){\n this.settings.tree.max_depth = n.depth\n }\n if (!(n.hasOwnProperty('children'))){\n this.leaves.push(n)\n n.correspondingLeaf = {}\n\n }\n\n n.leaves = this.get_leaves(n)\n\n })\n\n // check the type of all extended data\n this.traverse(p, function(n,c){\n\n for (var key in n.extended_informations){\n if (n.extended_informations.hasOwnProperty(key)) {\n\n if (this.settings.extended_data_type[key] === 'num'){\n continue\n }\n\n if (!isNaN(n.extended_informations[key])){\n this.settings.extended_data_type[key] = 'num'\n }\n\n }\n }\n\n })\n\n\n this.settings.colorlabels['node'].forEach( (value) => {\n if (this.settings.extended_data_type[value] === 'num' && value !== 'Topology' ) {\n this.settings.style.color_extent_max['node'][value] = 0\n this.settings.style.color_extent_min['node'][value] = 1000000000\n }\n });\n\n this.settings.colorlabels['leaf'].forEach( (value) => {\n if (this.settings.extended_data_type[value] === 'num' ) {\n this.settings.style.color_extent_max['leaf'][value] = 0\n this.settings.style.color_extent_min['leaf'][value] = 1000000000\n }\n });\n\n\n this.traverse(p, function(n,c) {\n for (var key in n.extended_informations) {\n\n if (n.extended_informations.hasOwnProperty(key)) {\n\n\n\n if (this.settings.extended_data_type[key] === 'num') {\n\n // check if min and max are set for node and leaf\n\n var val = n.extended_informations[key].toString().indexOf('.') != -1 ? parseFloat(n.extended_informations[key]) : parseInt(n.extended_informations[key])\n\n if (this.settings.style.color_extent_max['node'][key] < val) {\n this.settings.style.color_extent_max['node'][key] = val\n\n }\n\n if (this.settings.style.color_extent_min['node'][key] > val) {\n this.settings.style.color_extent_min['node'][key] = val\n }\n\n if (this.settings.style.color_extent_max['leaf'][key] < val) {\n this.settings.style.color_extent_max['leaf'][key] = val\n }\n\n if (this.settings.style.color_extent_min['leaf'][key] > val) {\n this.settings.style.color_extent_min['leaf'][key] = val\n }\n\n }\n\n }\n }\n\n })\n\n\n\n this.settings.suggestions = [] // autocomplete name\n this.traverse(json, function(n,c){\n\n if (n.name !== ''){this.settings.suggestions.push(n.name)}}) //todo add id also and ncBI and more + check empty cfucntion\n\n return p\n }\n\n build_hierarchy_mockup(){\n return d3__WEBPACK_IMPORTED_MODULE_0__.hierarchy(this.data, d => d.children );\n }\n\n parse(){\n\n if (this.settings.data_type === \"newick\") {\n return biojs_io_newick__WEBPACK_IMPORTED_MODULE_2__.parse_newick(this.input_data);\n }\n\n else if (this.settings.data_type === \"nhx\") {\n return parse_nhx(this.input_data);\n }\n\n else if (this.settings.data_type === \"json\") {\n return this.input_data\n }\n else if (this.settings.data_type === \"phyloxml\") {\n let phylogenies = phyloXml.parse(this.input_data);\n if (phylogenies === undefined || phylogenies.length === 0){\n console.error(\"No phylogenies found\");\n return {};\n } else if (phylogenies.length > 1) {\n console.log(\"dataset contains more than one phylogenies: \"+phylogenies.length + \" Will only use the first one\");\n }\n return phylogenies[0].children[0]; // return toplevel clade which is returned as children[0].\n }\n }\n\n collapse(data, action){\n if (!data.children){return}\n if (action) {data.collapse = true}\n else if (action == false){data.collapse = false}\n else{data.collapse ? data.collapse = false : data.collapse = true;}\n\n }\n\n toggle_show_label(data){\n data.force_label_show || data.force_label_show == null ? data.force_label_show = false : data.force_label_show = true;\n }\n\n collapseAll(data, action){\n if (action) {\n this.traverse(data, (n,c) => {\n this.collapse(n, true)\n //n.collapse = true\n } , null)}\n else if (action == false){\n this.traverse(data, (n,c) => {\n this.collapse(n, false)\n //n.collapse = false\n } , null)}\n\n\n }\n\n get_all_collapse(data){\n\n var collapsed = []\n\n this.traverse(data, (n,c) => {if (n.collapse){\n collapsed.push(n)\n }}, null)\n\n return collapsed\n\n }\n\n apply_collapse_to_list(collapsed){\n this.traverse(this.data, (n,c) => {\n if (collapsed.includes(n)){\n this.collapse(n, true)\n }\n else{\n this.collapse(n, false)\n }\n } , null)\n }\n\n swap_subtrees(data){\n var e = data.children.pop()\n data.children.unshift(e)\n data.leaves = this.get_leaves(data)\n }\n\n unswap_subtrees(data){\n var e = data.children.shift()\n data.children.push(e)\n data.leaves = this.get_leaves(data)\n\n }\n\n reroot(data){\n\n // extract meta data (zoom)\n var meta = this.zoom;\n\n // create new root r\n\n var root = {\"children\": [], \"name\": \"\", \"branch_length\": 0, \"extended_informations\": {}}\n\n\n for (var key in data.extended_informations) {\n\n\n if (this.settings.edge_related_data.includes(key)) {\n root.extended_informations[key] = data.extended_informations[key]\n }\n\n else{\n root.extended_informations[key] = null\n }\n\n }\n\n // source and target node of the clicked edges\n var parent = data.parent\n var child = data\n\n // insert new root node between target and source and connect\n root.children.push(child)\n parent.children.push(root)\n this.set_parent(child, root )\n this.set_parent(root, parent )\n const index = parent.children.indexOf(child);\n if (index > -1) {\n parent.children.splice(index, 1);\n }\n\n // ajust distance now that distance target/source is splitted in two\n var old_distance = child.branch_length\n\n child.branch_length = old_distance/2\n child.extended_informations['Length'] = old_distance/2\n\n parent.branch_length_before_reverse = parent.branch_length\n parent.branch_length = old_distance /2\n parent.extended_informations['Length'] = old_distance/2\n\n\n\n // ((C,D)1,(A,(B,X)3)2,E); to test\n\n // Until we reach the old root reverse child/parent order\n var child = root\n var stack = []\n\n while (parent.root != true) {\n\n stack.push([parent,child])\n\n child = parent\n parent = parent.parent\n\n parent.values_before_reverse = {}\n parent.branch_length_before_reverse = parent.branch_length\n\n for (var key of this.settings.edge_related_data) {\n\n var value = key;\n\n parent.values_before_reverse[value] = parent.extended_informations[value]\n\n\n if (value=== 'Length'){\n parent.branch_length = child.branch_length_before_reverse || child.branch_length;\n parent.extended_informations['Length'] = parent.branch_length;\n\n }\n else{\n if ( child.values_before_reverse && value in child.values_before_reverse){\n parent.extended_informations[value] = child.values_before_reverse[value]\n }\n else{\n parent.extended_informations[value] = child.extended_informations[value]\n child.extended_informations[value] = null\n }\n\n }\n\n\n\n }\n\n\n }\n stack.push([parent,child])\n for (var e in stack){\n var p = stack[e][0]\n var c = stack[e][1]\n\n this.reverse_order(p,c)\n\n }\n\n // Remove old root\n\n var old_root = parent\n var leading_branch = parent.parent\n\n\n\n if (old_root.children.length == 1){\n\n const ce = leading_branch.children.indexOf(old_root);\n if (ce > -1) {\n leading_branch.children.splice(ce, 1);\n }\n\n var i = 0,len = old_root.children.length;\n while (i < len) {\n let c = old_root.children[i]\n c.parent = leading_branch\n leading_branch.children.push(c)\n i++\n }\n\n old_root = null\n\n\n\n }\n\n // For multifurcation we need to keep the root\n else {\n old_root.root = false\n old_root.branch_length = leading_branch.branch_length\n parent.extended_informations['Length'] = leading_branch.branch_length\n }\n\n\n for (var key of this.settings.edge_related_data) {\n\n for (var childy of root.children) {\n\n console.log(childy, childy.extended_informations[key], root.extended_informations[key] )\n childy.extended_informations[key] = root.extended_informations[key]\n\n }\n\n root.extended_informations[key] = null\n }\n\n\n // configure new root\n root.zoom = meta\n this.data = root;\n this.data.root = true;\n\n root.leaves = this.get_leaves(root)\n\n\n this.traverse(root, function(n,c){\n n.leaves = this.get_leaves(n)\n })\n\n\n\n }\n\n trim(branch){\n\n // source and target node of the clicked edges\n var parent = branch.parent\n var child = branch\n\n var untrim_data = {\n \"parent\" : null,\n \"floating\" : null,\n \"untrim_data\" : null,\n \"index\": null,\n \"root_mode\": false,\n }\n\n\n if (parent.children.length > 2) {\n untrim_data.index = this.detach_child(parent,child)\n\n untrim_data.parent = parent;\n untrim_data.floating = false;\n untrim_data.child = child;\n\n return untrim_data;\n }\n\n else{\n\n if (typeof parent.parent == 'undefined'){ // parent is root\n untrim_data.root_mode = true;\n\n var sibling = parent.children[0] == child ? parent.children[1] : parent.children[0]\n untrim_data.index = this.detach_child(parent, sibling)\n\n this.data = sibling;\n\n untrim_data.parent = null;\n untrim_data.floating = parent;\n untrim_data.child = sibling;\n\n return untrim_data;\n\n }\n\n else{\n\n this.detach_child(parent.parent, parent)\n var sibling = parent.children[0] == child ? parent.children[1] : parent.children[0]\n untrim_data.index = this.detach_child(parent, sibling)\n this.attach_child(parent.parent, sibling)\n\n untrim_data.parent = parent.parent;\n untrim_data.floating = parent;\n untrim_data.child = sibling;\n\n return untrim_data;\n\n }\n\n\n }\n\n }\n\n untrim(parent, floating, child, index, root_mode){\n\n if (floating != false){\n if (root_mode){\n this.data = floating\n this.attach_child(floating,child, index)\n\n }else{\n this.detach_child(parent,child)\n this.attach_child(parent,floating)\n this.attach_child(floating,child, index)\n }\n\n }\n else {\n this.attach_child(parent,child, index)\n }\n }\n\n detach_child(parent, child){\n var index = parent.children.indexOf(child);\n if (index > -1) {\n parent.children.splice(index, 1);\n }\n return index\n }\n\n attach_child(parent,child_to_adopt, index){\n\n if (typeof index !== 'undefined') {\n parent.children.splice( index, 0, child_to_adopt );\n child_to_adopt.parent = parent;\n\n } else {\n parent.children.push(child_to_adopt);\n child_to_adopt.parent = parent;\n }\n\n\n }\n\n interleave_node(parent, to_insert,child){\n this.detach_child(parent, child)\n this.attach_child(parent,to_insert)\n this.attach_child(to_insert, child)\n }\n\n store_zoomTransform(zoom){\n\n this.zoom = {\n \"k\":zoom.k,\n \"x\":zoom.x,\n \"y\":zoom.y,\n };\n }\n\n /**\n Description:\n Creates list of leaves of each node in subtree rooted at v\n\n Note:\n Difference between deep leaf list and leaves in:\n (A:0.1,B:0.2,(C:0.3,D:0.4):0.5);\n - Root has leaves: A, B, C and D (terminal leaves)\n - Root has deep leaves: A, B, C, D and CD (terminal leaves + intermediate leaves)\n */\n createDeepLeafList(filter) {\n\n function is_leaf(str) {\n return !str.includes(\"|__|\");\n }\n\n var build_deepLeafList = function(child, node){\n\n if ( child.hasOwnProperty('children') ){\n var dp = child.deepLeafList.filter(is_leaf).sort()\n if (!dp.every((e) => e === '')){\n child.deepLeafList.push(dp.join('|__|'));\n }\n\n }\n\n node.deepLeafList = node.deepLeafList.concat(child.deepLeafList)\n }\n\n var build_deepLeafLeaves = function(node,children){\n\n if (!(node.hasOwnProperty('children') )){\n\n if (typeof filter != 'undefined') {\n if (filter.includes(node.name)){\n node.deepLeafList = [node.name]\n }\n else{\n node.deepLeafList = []\n }\n\n }\n else{\n node.deepLeafList = [node.name]\n }\n\n }\n else {\n node.deepLeafList = []\n }\n\n\n }\n\n this.traverse(this.data, build_deepLeafLeaves, build_deepLeafList)\n\n }\n\n createMinHash(){\n\n var assign_hash = function(node,children){\n\n node.min_hash = new minhashjs__WEBPACK_IMPORTED_MODULE_1__.MinHash.MinHash()\n node.deepLeafList.map(function(w) { node.min_hash.update(w) });\n }\n\n this.traverse(this.data, assign_hash, null)\n }\n\n removeMinHash(){\n\n var remove_hash = function(node,children){\n\n node.min_hash = null\n }\n\n this.traverse(this.data, remove_hash, null)\n\n }\n\n reverse_order(parent,child) {\n\n child.children.push(parent)\n parent.parent =child\n\n const b = parent.children.indexOf(child);\n if (b > -1) {\n parent.children.splice(b, 1);\n }\n\n }\n\n get_leaves(node){\n\n\n var l = []\n\n this.traverse(node, function(n,c){\n if (!(n.hasOwnProperty('children'))){\n l.push(n)\n }\n\n\n })\n return l\n }\n\n remove_circularity(){ // safe my model\n var data = Object.assign({}, this.data);\n\n this.traverse(data, function(n,c){\n n.parent=null;\n n.leaves=null;\n n.correspondingLeaf = {}\n n.elementBCN = null})\n\n return data\n }\n\n remove_circularity_only_parent_and_leaves(){ // safe my model\n var data = Object.assign({}, this.data);\n\n this.traverse(data, function(n,c){\n n.parent=null;\n n.leaves=null;\n })\n\n return data\n }\n\n add_circularity_back(){\n\n this.data.leaves = this.get_leaves(this.data)\n\n this.traverse(this.data, function(n,c){n.leaves = this.get_leaves(n)}, this.set_parent)\n\n\n }\n\n add_meta_leaves(meta, headers, api, reference){\n\n // headers: column_name -> type\n\n Object.keys(headers).forEach(item => {\n if (item != reference || item != 'Length' ) {\n\n this.settings.extended_data_type[item] = headers[item]\n this.settings.domain_extended_data[item] = []\n this.settings.labels['leaf'].add(item)\n this.settings.colorlabels['leaf'].add(item)\n\n if (headers[item] == 'num'){\n this.settings.style.color_extent_max['leaf'][item] = 0\n this.settings.style.color_extent_min['leaf'][item] = 100000\n }\n }\n\n })\n\n this.get_leaves(this.data).forEach(d => {\n if (d.name in meta){\n\n Object.entries(meta[d.name]).forEach(item => {\n if (item[0] != reference){\n\n d.extended_informations[item[0]]= item[1]\n\n if (this.settings.extended_data_type[item[0]] == 'num' && !isNaN(item[1])) {\n\n item[1] = item[1].toString().indexOf('.') != -1 ? parseFloat(item[1]) : parseInt(item[1])\n\n if (this.settings.style.color_extent_max['leaf'][item[0]] < item[1]) {\n this.settings.style.color_extent_max['leaf'][item[0]] = item[1]\n }\n\n if (this.settings.style.color_extent_min['leaf'][item[0]] > item[1]) {\n this.settings.style.color_extent_min['leaf'][item[0]] = item[1]\n }\n\n }\n\n if (this.settings.extended_data_type[item[0]] == 'cat'){\n\n var cs = api.get_color_scale(item[0])\n cs.add_value_to_map(item[1])\n\n this.settings.domain_extended_data[item[0]].push(item[1])\n }\n\n }\n\n })\n\n }\n\n })\n\n\n Object.keys(headers).forEach(item => {\n if (item != reference || item != 'Length' ) {\n\n\n if (headers[item] == 'cat'){\n api.get_color_scale(item).update()\n\n }\n }\n\n })\n\n\n\n }\n\n add_meta_nodes(meta, headers, api, reference){\n\n\n Object.keys(headers).forEach(item => {\n if (item != reference|| item != 'Length' ) {\n this.settings.extended_data_type[item] = headers[item]\n this.settings.domain_extended_data[item] = []\n this.settings.labels['node'].add(item)\n this.settings.colorlabels['node'].add(item)\n\n if (headers[item] == 'num'){\n this.settings.style.color_extent_max['node'][item] = 0\n this.settings.style.color_extent_min['node'][item] = 100000\n }\n }\n\n })\n\n this.traverse(this.data, function(n,c){\n\n var name_value = n.name in meta ? n.name : n.extended_informations['Data'] in meta ? n.extended_informations['Data'] : false\n\n if (name_value){\n\n Object.entries(meta[name_value]).forEach(item => {\n\n if (item[0] != reference){\n n.extended_informations[item[0]]= item[1]\n\n if (this.settings.extended_data_type[item[0]] == 'cat'){\n\n var cs = api.get_color_scale(item[0])\n cs.add_value_to_map(item[1])\n\n }\n\n else if (this.settings.extended_data_type[item[0]] == 'num' && !isNaN(item[1]) ) {\n\n item[1] = item[1].toString().indexOf('.') != -1 ? parseFloat(item[1]) : parseInt(item[1])\n\n if (this.settings.style.color_extent_max['node'][item[0]] < item[1]) {\n this.settings.style.color_extent_max['node'][item[0]] = item[1]\n }\n\n if (this.settings.style.color_extent_min['node'][item[0]] > item[1]) {\n this.settings.style.color_extent_min['node'][item[0]] = item[1]\n }\n\n }\n }\n })\n\n }\n })\n\n Object.keys(headers).forEach(item => {\n\n if (item != reference || item != 'Length' ) {\n\n\n if (headers[item] == 'cat'){\n api.get_color_scale(item).update()\n\n }\n }\n\n })\n }\n\n get_node_by_leafset(lset){\n\n function setsAreEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n\n return Array.from(a).every(element => {\n return b.has(element);\n });\n }\n\n lset = new Set(lset.map(leaf => leaf.toString()))\n\n var target = false\n\n\n var check = function(node,children){\n\n var nl = new Set(node.leaves.map(leaf => leaf.name.replaceAll(\"'\", '').toString()))\n\n if ( setsAreEqual(nl,lset)){\n target = node\n }\n\n }\n\n this.traverse(this.data, check, null)\n\n return target\n }\n\n};\n\n//# sourceURL=webpack://PhyloIO/./src/model.js?");
|
|
8729
7805
|
|
|
8730
7806
|
/***/ }),
|
|
8731
7807
|
|
|
8732
|
-
/***/ "./src/
|
|
8733
|
-
|
|
8734
|
-
!*** ./src/
|
|
8735
|
-
|
|
8736
|
-
/***/ ((
|
|
7808
|
+
/***/ "./src/phyloxml.js":
|
|
7809
|
+
/*!*************************!*\
|
|
7810
|
+
!*** ./src/phyloxml.js ***!
|
|
7811
|
+
\*************************/
|
|
7812
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
8737
7813
|
|
|
8738
|
-
"use strict";
|
|
8739
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Model)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n/* harmony import */ var minhashjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! minhashjs */ \"./node_modules/minhashjs/index.js\");\n/* harmony import */ var biojs_io_newick__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! biojs-io-newick */ \"./node_modules/biojs-io-newick/src/index.js\");\n\n\n\n\nvar uid_model = 0\nvar uid_untitle_counter = 0\n;\nconst { parse_nhx } = __webpack_require__(/*! ./utils.js */ \"./src/utils.js\")\n\nclass Model {\n\n constructor(data, settings, from_raw_data = true) {\n\n this.zoom;\n this.settings = {\n 'uid': null,\n 'domain_extended_data' : {},\n 'extended_data_type' : {'Topology': 'num'},\n 'labels' : {'leaf' : new Set(), 'node':new Set()},\n 'colorlabels' :{'leaf' : new Set(), 'node':new Set([\"Topology\"])},\n 'display_leaves' : true,\n 'mirror': false,\n 'name': null,\n 'first_time_render': true,\n 'data_type' : 'newick',\n 'use_branch_lenght' : true,\n 'show_tooltips' : false,\n 'subsample_label' : true,\n 'display_internal_label' : false,\n 'display_internal_label_left_top' : false,\n 'display_internal_label_left_bottom' : false,\n 'display_duplication' : false,\n 'has_branch_lenght' : true,\n 'has_duplications' : false,\n 'dessimode': false,\n 'multiple_search':false,\n 'show_histogram' : false,\n 'align_tip' : false,\n 'use_meta_for_leaf' : true,\n 'use_meta_for_node' : false,\n 'has_histogram_data' : false,\n 'similarity': [],\n 'style': {\n 'font_size_internal' : 14,\n 'color_accessor' : {'leaf' : null, 'node': \"Topology\"},\n 'color_extent_min': {'leaf' : {}, 'node': {\"Topology\":0}},\n 'color_extent_max':{'leaf' : {}, 'node': {\"Topology\":1}},\n 'number_domain':{'leaf' : '3', 'node': '5'},\n 'color_domain':{'leaf' : ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC'], 'node': ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC']},\n 'color_domain_default':{'leaf' : ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC'], 'node': ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC']},\n },\n 'tree': {\n 'node_vertical_size' : 30,\n 'node_horizontal_size' : 40,\n 'node_radius' : 6, // move to style\n 'line_width' : 3,// move to style\n 'font_size':14, // move to style\n 'max_depth' : 0,\n },\n 'collapse_level': 0,\n 'stack' : {\n 'type': 'genes',//'events',\n 'showHistogramValues' : false,\n 'showHistogramSummaryValue' : true,\n 'legendTxtSize' : 12,\n 'margin' : 8,\n 'xInitialRightMargin' : 45,\n 'stackHeight' : 120,\n 'stackWidth' : 30,\n 'maxStackHeight': 'max', // ratio -> stack height fixed | max -> largest data = stack height\n 'has_support' : false,\n 'only_support' : false,\n\n },\n }\n\n if (settings) {\n\n for(var key in settings) {\n\n if (key == 'labels_array_leaf'){\n var value = settings[key];\n this.settings['labels']['leaf'] = new Set(value);\n }\n if (key == 'labels_array_node'){\n var value = settings[key];\n this.settings['labels']['node'] = new Set(value);\n }\n if (key == 'colorlabels_array_leaf'){\n var value = settings[key];\n this.settings['colorlabels']['leaf'] = new Set(value);\n }\n\n if (key == 'colorlabels_array_node'){\n var value = settings[key];\n this.settings['colorlabels']['node'] = new Set(value);\n }\n\n else{\n var value = settings[key];\n this.settings[key] = value;\n }\n\n\n }\n\n }\n\n this.settings.name = this.settings.name ? this.settings.name : \"Untitled \" + uid_untitle_counter++\n\n this.uid = null\n this.input_data = data;\n this.leaves = []\n\n\n\n if (from_raw_data){\n this.uid = uid_model++;\n this.settings.uid = this.uid;\n this.data = this.factory(this.parse());\n }\n else{\n this.uid = settings.uid;\n this.settings.uid = this.uid;\n this.data = data\n data.leaves = this.get_leaves(data)\n this.traverse(data, function(n,c){\n n.leaves = this.get_leaves(n)\n })\n }\n\n this.data.root = true;\n this.data.elementS = {}\n this.data.elementBCN = {}\n this.rooted = this.data.children.length !== 3\n this.big_tree = (this.leaves.length > 500)\n\n // check that histogram data is present and compute\n if(this.settings.show_histogram && this.data.evolutionaryEvents) {\n this.settings.has_histogram_data = true;\n this.largestGenome = 0;\n this.largestEvents = 0; // todo\n\n this.traverse(this.data , function(n,c){\n\n let g = n.nr_hogs ? n.nr_hogs : n.nr_proteins\n if (g > this.largestGenome ) {this.largestGenome = g;}\n\n if (n.evolutionaryEvents){\n\n var ga = n.evolutionaryEvents.gained ? n.evolutionaryEvents.gained : 0\n var l = n.evolutionaryEvents.lost ? n.evolutionaryEvents.lost : 0\n var d = n.evolutionaryEvents.duplications ? n.evolutionaryEvents.duplications : 0\n\n let e = ga + l + d\n\n\n if (e > this.largestEvents ) {this.largestEvents = e;}\n\n }\n\n if (this.settings.stack.has_support){\n\n let g_support = n.nr_hogs_support ? n.nr_hogs_support : n.nr_proteins_support\n if (g_support > this.largestGenome_support ) {this.largestGenome_support = g_support;}\n\n if (n.evolutionaryEvents_support){\n\n\n var ga_support = n.evolutionaryEvents_support.gained ? n.evolutionaryEvents_support.gained : 0\n var l_support = n.evolutionaryEvents_support.lost ? n.evolutionaryEvents_support.lost : 0\n var d_support = n.evolutionaryEvents_support.duplications ? n.evolutionaryEvents_support.duplications : 0\n\n let e_support = ga_support + l_support + d_support\n\n if (e_support > this.largestEvents_support ) {this.largestEvents_support = e_support;}\n\n }\n }\n\n\n\n })\n\n\n }\n\n }\n\n get_name(){\n return this.settings.name\n }\n\n set_name(name){\n this.settings.name = name\n }\n\n traverse(o,func_pre, func_post) {\n\n if (func_pre){\n func_pre.apply(this,[o,o[\"children\"]])\n }\n\n if(o[\"children\"]){\n\n for (var c in o[\"children\"] ) {\n\n var child = o[\"children\"][c]\n\n child = this.traverse(child, func_pre, func_post)\n\n if (func_post) {\n func_post.apply(this,[child,o])\n }\n\n\n }\n\n\n }\n\n return o\n\n }\n\n traverse_hierarchy(o,func_pre, func_post) {\n\n var children = o[\"children\"] ? o[\"children\"] : o[\"_children\"]\n\n if (func_pre){\n func_pre.apply(this,[o,children])\n }\n\n if(children ){\n\n for (var c in children) {\n\n var child = children[c]\n\n child = this.traverse_hierarchy(child, func_pre, func_post)\n\n if (func_post) {\n func_post.apply(this,[child,o])\n }\n\n\n }\n\n\n }\n\n return o\n\n }\n\n set_parent(node,parent){\n node.parent = parent\n }\n\n set_cumulated_length(node, children){\n if (node.parent) {\n node.depth = node.parent.depth + 1\n node.distance_to_root = node.parent.distance_to_root + node.branch_length\n }\n else{\n node.distance_to_root = 0\n node.depth = 0}\n\n }\n\n factory(json){ // todo do one traversal with all in one function\n\n var p;\n\n //has_branch_lenght\n this.settings.has_branch_lenght = false;\n\n json.children.forEach((child) => {\n if (typeof child.branch_length != 'undefined') { this.settings.has_branch_lenght = true; }\n })\n\n if (this.settings.has_branch_lenght) {\n this.settings.labels['node'].add('Length')\n this.settings.colorlabels['node'].add('Length')\n this.settings.extended_data_type['Length'] = 'num'\n\n this.settings.style.color_extent_max['node']['Length'] = 0;\n this.settings.style.color_extent_min['node']['Length'] = 1000000000;\n }\n\n\n // if branch size is not used put 1\n if (!this.settings.has_branch_lenght) {\n p = this.traverse(json, function(n,c){n.branch_length=1})\n p.branch_length = 0 // root\n }\n else{ // sanity check\n p = this.traverse(json, function(n,c){if (typeof n.branch_length == 'undefined') {n.branch_length=1} })\n if (typeof p.branch_length == 'undefined') {p.branch_length=1}\n }\n\n // set parent attribute\n p = this.traverse(json, null , this.set_parent)\n\n // compute cumulated lenght\n p = this.traverse(p, this.set_cumulated_length , null)\n\n this.traverse(p, function(n,c){\n\n n.extended_informations = {}\n n.elementS = {}\n n.elementBCN = {}\n\n if(n.branch_length){\n n.extended_informations['Length'] = n.branch_length;\n if (this.settings.style.color_extent_max['node']['Length'] < n.branch_length){\n this.settings.style.color_extent_max['node']['Length'] = n.branch_length\n }\n\n if (this.settings.style.color_extent_min['node']['Length'] > n.branch_length){\n this.settings.style.color_extent_min['node']['Length'] = n.branch_length\n }\n }\n\n if (typeof c !== 'undefined' && typeof n.name !== 'undefined' && n.name !== \"\" ) {\n n.extended_informations['Data'] = n.name;\n this.settings.labels['node'].add('Data')\n this.settings.extended_data_type['Data'] = 'num'\n\n if (!isNaN(n.name)){\n\n if (!this.settings.colorlabels['node'].has('Data')){\n this.settings.colorlabels['node'].add('Data');\n this.settings.style.color_extent_max['node']['Data'] = 0;\n this.settings.style.color_extent_min['node']['Data'] = 1000000000;\n }\n\n if (this.settings.style.color_extent_max['node']['Data'] <n.name){\n this.settings.style.color_extent_max['node']['Data'] = n.name\n }\n\n if (this.settings.style.color_extent_min['node']['Data'] > n.name){\n this.settings.style.color_extent_min['node']['Data'] = n.name\n }\n\n }\n\n else {this.settings.extended_data_type['Data'] = 'cat'}\n }\n\n if(n.data_nhx && Object.keys(n.data_nhx).length > 0){\n\n Object.entries(n.data_nhx).forEach(([key, value]) => {\n\n this.settings.labels['node'].add(key)\n\n switch(key){\n case 'Ev':\n if (value == 'duplication') {\n n.duplication = true\n this.settings.has_duplications = true;\n }\n n.extended_informations.events = value\n n.extended_informations[key] = value\n this.settings.extended_data_type['Ev'] = 'cat'\n break;\n case 'DD':\n case 'D':\n if (value == 'Y') {\n n.duplication = true\n this.settings.has_duplications = true;\n\n }\n else if (value == 'N'){\n n.duplication = false\n this.settings.has_duplications = true;\n }\n n.extended_informations.events = value\n n.extended_informations[key] = value\n this.settings.extended_data_type['D'] = 'cat'\n break;\n default:\n n.extended_informations[key] = value\n this.settings.extended_data_type[key] = 'cat'\n break;\n }\n });\n\n\n }\n\n\n if (n.depth > this.settings.tree.max_depth){\n this.settings.tree.max_depth = n.depth\n }\n if (!(n.hasOwnProperty('children'))){\n this.leaves.push(n)\n n.correspondingLeaf = {}\n\n }\n\n n.leaves = this.get_leaves(n)\n\n })\n\n this.settings.suggestions = [] // autocomplete name\n this.traverse(json, function(n,c){\n if (n.name !== ''){this.settings.suggestions.push(n.name)}}) //todo add id also and ncBI and more + check empty cfucntion\n return p\n }\n\n build_hierarchy_mockup(){\n return d3__WEBPACK_IMPORTED_MODULE_0__.hierarchy(this.data, d => d.children );\n }\n\n parse(){\n\n if (this.settings.data_type === \"newick\") {\n return biojs_io_newick__WEBPACK_IMPORTED_MODULE_2__.parse_newick(this.input_data);\n }\n\n else if (this.settings.data_type === \"nhx\") {\n return parse_nhx(this.input_data);\n }\n\n else if (this.settings.data_type === \"json\") {\n return this.input_data\n }\n\n\n\n\n }\n\n collapse(data, action){\n if (!data.children){return}\n if (action) {data.collapse = true}\n else if (action == false){data.collapse = false}\n else{data.collapse ? data.collapse = false : data.collapse = true;}\n\n }\n\n collapseAll(data, action){\n if (action) {\n this.traverse(data, (n,c) => {\n this.collapse(n, true)\n //n.collapse = true\n } , null)}\n else if (action == false){\n this.traverse(data, (n,c) => {\n this.collapse(n, false)\n //n.collapse = false\n } , null)}\n\n\n }\n\n get_all_collapse(data){\n\n var collapsed = []\n\n this.traverse(data, (n,c) => {if (n.collapse){\n collapsed.push(n)\n }}, null)\n\n return collapsed\n\n }\n\n apply_collapse_to_list(collapsed){\n this.traverse(this.data, (n,c) => {\n if (collapsed.includes(n)){\n this.collapse(n, true)\n }\n else{\n this.collapse(n, false)\n }\n } , null)\n }\n\n swap_subtrees(data){\n var e = data.children.pop()\n data.children.unshift(e)\n data.leaves = this.get_leaves(data)\n }\n\n unswap_subtrees(data){\n var e = data.children.shift()\n data.children.push(e)\n data.leaves = this.get_leaves(data)\n\n }\n\n reroot(data){\n\n // extract meta data (zoom)\n var meta = this.zoom;\n\n // create new root r\n\n var root = {\"children\": [], \"name\": \"\", \"branch_length\": 0, \"extended_informations\": {}}\n\n for (var key in data.extended_informations) {\n if (data.extended_informations.hasOwnProperty(key)) {\n root.extended_informations[key] = null\n }\n }\n\n // source and target node of the clicked edges\n var parent = data.parent\n var child = data\n\n // insert new root node between target and source and connect\n root.children.push(child)\n parent.children.push(root)\n this.set_parent(child, root )\n this.set_parent(root, parent )\n const index = parent.children.indexOf(child);\n if (index > -1) {\n parent.children.splice(index, 1);\n }\n\n // ajust distance now that distance target/source is splitted in two\n var old_distance = child.branch_length\n\n child.branch_length = old_distance/2\n child.extended_informations['Length'] = old_distance/2\n\n parent.branch_length_before_reverse = parent.branch_length\n parent.branch_length = old_distance /2\n parent.extended_informations['Length'] = old_distance/2\n\n\n\n // While we are at the old root reverse child/parent order\n var parent = parent\n var child = root\n var stack = []\n\n while (parent.root != true) {\n\n stack.push([parent,child])\n\n child = parent\n parent = parent.parent\n\n\n parent.branch_length_before_reverse = parent.branch_length\n if (child.branch_length_before_reverse){\n parent.branch_length = child.branch_length_before_reverse\n parent.extended_informations['Length'] = child.branch_length_before_reverse\n }\n else{\n parent.branch_length = child.branch_length\n parent.extended_informations['Length'] = child.branch_length\n }\n\n\n }\n stack.push([parent,child])\n for (var e in stack){\n var p = stack[e][0]\n var c = stack[e][1]\n\n this.reverse_order(p,c)\n\n }\n\n // Remove old root\n\n var old_root = parent\n var leading_branch = parent.parent\n\n\n\n if (old_root.children.length == 1){\n\n const ce = leading_branch.children.indexOf(old_root);\n if (ce > -1) {\n leading_branch.children.splice(ce, 1);\n }\n\n var i = 0,len = old_root.children.length;\n while (i < len) {\n let c = old_root.children[i]\n c.parent = leading_branch\n leading_branch.children.push(c)\n i++\n }\n\n old_root = null\n\n\n\n }\n\n // For multifurcation we need to keep the root\n else {\n old_root.root = false\n old_root.branch_length = leading_branch.branch_length\n parent.extended_informations['Length'] = leading_branch.branch_length\n }\n\n\n // configure new root\n root.zoom = meta\n this.data = root;\n this.data.root = true;\n\n root.leaves = this.get_leaves(root)\n\n\n this.traverse(root, function(n,c){\n n.leaves = this.get_leaves(n)\n })\n\n\n\n }\n\n trim(branch){\n\n // source and target node of the clicked edges\n var parent = branch.parent\n var child = branch\n\n var untrim_data = {\n \"parent\" : null,\n \"floating\" : null,\n \"untrim_data\" : null,\n \"index\": null,\n \"root_mode\": false,\n }\n\n\n if (parent.children.length > 2) {\n untrim_data.index = this.detach_child(parent,child)\n\n untrim_data.parent = parent;\n untrim_data.floating = false;\n untrim_data.child = child;\n\n return untrim_data;\n }\n\n else{\n\n if (typeof parent.parent == 'undefined'){ // parent is root\n untrim_data.root_mode = true;\n\n var sibling = parent.children[0] == child ? parent.children[1] : parent.children[0]\n untrim_data.index = this.detach_child(parent, sibling)\n\n this.data = sibling;\n\n untrim_data.parent = null;\n untrim_data.floating = parent;\n untrim_data.child = sibling;\n\n return untrim_data;\n\n }\n\n else{\n\n this.detach_child(parent.parent, parent)\n var sibling = parent.children[0] == child ? parent.children[1] : parent.children[0]\n untrim_data.index = this.detach_child(parent, sibling)\n this.attach_child(parent.parent, sibling)\n\n untrim_data.parent = parent.parent;\n untrim_data.floating = parent;\n untrim_data.child = sibling;\n\n return untrim_data;\n\n }\n\n\n }\n\n }\n\n untrim(parent, floating, child, index, root_mode){\n\n if (floating != false){\n if (root_mode){\n this.data = floating\n this.attach_child(floating,child, index)\n\n }else{\n this.detach_child(parent,child)\n this.attach_child(parent,floating)\n this.attach_child(floating,child, index)\n }\n\n }\n else {\n this.attach_child(parent,child, index)\n }\n }\n\n detach_child(parent, child){\n var index = parent.children.indexOf(child);\n if (index > -1) {\n parent.children.splice(index, 1);\n }\n return index\n }\n\n attach_child(parent,child_to_adopt, index){\n\n if (typeof index !== 'undefined') {\n parent.children.splice( index, 0, child_to_adopt );\n child_to_adopt.parent = parent;\n\n } else {\n parent.children.push(child_to_adopt);\n child_to_adopt.parent = parent;\n }\n\n\n }\n\n interleave_node(parent, to_insert,child){\n this.detach_child(parent, child)\n this.attach_child(parent,to_insert)\n this.attach_child(to_insert, child)\n }\n\n store_zoomTransform(zoom){\n\n this.zoom = {\n \"k\":zoom.k,\n \"x\":zoom.x,\n \"y\":zoom.y,\n };\n }\n\n /**\n Description:\n Creates list of leaves of each node in subtree rooted at v\n\n Note:\n Difference between deep leaf list and leaves in:\n (A:0.1,B:0.2,(C:0.3,D:0.4):0.5);\n - Root has leaves: A, B, C and D (terminal leaves)\n - Root has deep leaves: A, B, C, D and CD (terminal leaves + intermediate leaves)\n */\n createDeepLeafList(filter) {\n\n function is_leaf(str) {\n return !str.includes(\"||\");\n }\n\n var build_deepLeafList = function(child, node){\n\n if ( child.hasOwnProperty('children') ){\n var dp = child.deepLeafList.filter(is_leaf).sort()\n if (!dp.every((e) => e === '')){\n child.deepLeafList.push(dp.join('||'));\n }\n\n }\n\n node.deepLeafList = node.deepLeafList.concat(child.deepLeafList)\n }\n\n var build_deepLeafLeaves = function(node,children){\n\n if (!(node.hasOwnProperty('children') )){\n\n if (typeof filter != 'undefined') {\n if (filter.includes(node.name)){\n node.deepLeafList = [node.name]\n }\n else{\n node.deepLeafList = []\n }\n\n }\n else{\n node.deepLeafList = [node.name]\n }\n\n }\n else {\n node.deepLeafList = []\n }\n\n\n }\n\n this.traverse(this.data, build_deepLeafLeaves, build_deepLeafList)\n\n }\n\n createMinHash(){\n\n var assign_hash = function(node,children){\n\n node.min_hash = new minhashjs__WEBPACK_IMPORTED_MODULE_1__.MinHash.MinHash()\n node.deepLeafList.map(function(w) { node.min_hash.update(w) });\n }\n\n this.traverse(this.data, assign_hash, null)\n }\n\n removeMinHash(){\n\n var remove_hash = function(node,children){\n\n node.min_hash = null\n }\n\n this.traverse(this.data, remove_hash, null)\n\n }\n\n reverse_order(parent,child) {\n\n child.children.push(parent)\n parent.parent =child\n\n const b = parent.children.indexOf(child);\n if (b > -1) {\n parent.children.splice(b, 1);\n }\n\n }\n\n get_leaves(node){\n\n\n var l = []\n\n this.traverse(node, function(n,c){\n if (!(n.hasOwnProperty('children'))){\n l.push(n)\n }\n\n\n })\n return l\n }\n\n remove_circularity(){ // safe my model\n var data = Object.assign({}, this.data);\n\n this.traverse(data, function(n,c){\n n.parent=null;\n n.leaves=null;\n n.correspondingLeaf = {}\n n.elementBCN = null})\n\n return data\n }\n\n remove_circularity_only_parent_and_leaves(){ // safe my model\n var data = Object.assign({}, this.data);\n\n this.traverse(data, function(n,c){\n n.parent=null;\n n.leaves=null;\n })\n\n return data\n }\n\n add_circularity_back(){\n\n this.data.leaves = this.get_leaves(this.data)\n\n this.traverse(this.data, function(n,c){n.leaves = this.get_leaves(n)}, this.set_parent)\n\n\n }\n\n add_meta_leaves(meta, headers, api){\n\n // headers: column_name -> type\n\n Object.keys(headers).forEach(item => {\n if (item != 'id' || item != 'Length' ) {\n\n this.settings.extended_data_type[item] = headers[item]\n this.settings.domain_extended_data[item] = []\n this.settings.labels['leaf'].add(item)\n this.settings.colorlabels['leaf'].add(item)\n\n if (headers[item] == 'num'){\n this.settings.style.color_extent_max['leaf'][item] = 0\n this.settings.style.color_extent_min['leaf'][item] = 100000\n }\n }\n\n })\n\n this.get_leaves(this.data).forEach(d => {\n if (d.name in meta){\n\n Object.entries(meta[d.name]).forEach(item => {\n if (item[0] != 'id'){\n\n d.extended_informations[item[0]]= item[1]\n\n if (this.settings.extended_data_type[item[0]] == 'num' && !isNaN(item[1])) {\n\n item[1] = item[1].toString().indexOf('.') != -1 ? parseFloat(item[1]) : parseInt(item[1])\n\n if (this.settings.style.color_extent_max['leaf'][item[0]] < item[1]) {\n this.settings.style.color_extent_max['leaf'][item[0]] = item[1]\n }\n\n if (this.settings.style.color_extent_min['leaf'][item[0]] > item[1]) {\n this.settings.style.color_extent_min['leaf'][item[0]] = item[1]\n }\n\n }\n\n if (this.settings.extended_data_type[item[0]] == 'cat'){\n\n var cs = api.get_color_scale(item[0])\n cs.add_value_to_map(item[1])\n\n this.settings.domain_extended_data[item[0]].push(item[1])\n }\n\n }\n\n })\n\n }\n\n })\n\n\n Object.keys(headers).forEach(item => {\n if (item != 'id' || item != 'Length' ) {\n\n\n if (headers[item] == 'cat'){\n api.get_color_scale(item).update()\n\n }\n }\n\n })\n\n\n\n }\n\n add_meta_nodes(meta, headers, api){\n\n\n Object.keys(headers).forEach(item => {\n if (item != 'id' || item != 'Length' ) {\n this.settings.extended_data_type[item] = headers[item]\n this.settings.domain_extended_data[item] = []\n this.settings.labels['node'].add(item)\n this.settings.colorlabels['node'].add(item)\n\n if (headers[item] == 'num'){\n this.settings.style.color_extent_max['node'][item] = 0\n this.settings.style.color_extent_min['node'][item] = 100000\n }\n }\n\n })\n\n\n this.traverse(this.data, function(n,c){\n\n if (n.extended_informations['Data'] in meta){\n\n Object.entries(meta[n.extended_informations['Data']]).forEach(item => {\n if (item[0] != 'id'){\n n.extended_informations[item[0]]= item[1]\n\n if (this.settings.extended_data_type[item[0]] == 'cat'){\n\n var cs = api.get_color_scale(item[0])\n cs.add_value_to_map(item[1])\n\n }\n\n else if (this.settings.extended_data_type[item[0]] == 'num' && !isNaN(item[1]) ) {\n\n item[1] = item[1].toString().indexOf('.') != -1 ? parseFloat(item[1]) : parseInt(item[1])\n\n if (this.settings.style.color_extent_max['node'][item[0]] < item[1]) {\n this.settings.style.color_extent_max['node'][item[0]] = item[1]\n }\n\n if (this.settings.style.color_extent_min['node'][item[0]] > item[1]) {\n this.settings.style.color_extent_min['node'][item[0]] = item[1]\n }\n\n }\n }\n })\n\n }\n })\n\n Object.keys(headers).forEach(item => {\n\n if (item != 'id' || item != 'Length' ) {\n\n\n if (headers[item] == 'cat'){\n api.get_color_scale(item).update()\n\n }\n }\n\n })\n }\n\n get_node_by_leafset(lset){\n\n function setsAreEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n\n return Array.from(a).every(element => {\n return b.has(element);\n });\n }\n\n lset = new Set(lset.map(leaf => leaf.toString()))\n\n var target = false\n\n\n var check = function(node,children){\n\n var nl = new Set(node.leaves.map(leaf => leaf.name.replaceAll(\"'\", '').toString()))\n\n if ( setsAreEqual(nl,lset)){\n target = node\n }\n\n }\n\n this.traverse(this.data, check, null)\n\n return target\n }\n\n};\n\n//# sourceURL=webpack://PhyloIO/./src/model.js?");
|
|
7814
|
+
eval("/**\n * Copyright (C) 2019 Christian M. Zmasek\n * Copyright (C) 2019 J. Craig Venter Institute\n * All rights reserved\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\n *\n * Created by czmasek on 7/7/2016.\n */\n\n// v 1.0.0\n// 2019-05-16\n//\n// phyloxml.js is a JavaScript program for reading (SAX style parser)\n// and writing phylogenetic trees in phyloXML format.\n//\n// phyloXML website: http://www.phyloxml.org/\n//\n// Availability:\n// https://github.com/cmzmasek/phyloxml-js\n// https://www.npmjs.com/package/phyloxml\n//\n// Dependencies:\n// sax.js (1.2.4): https://www.npmjs.com/package/sax/v/1.2.4\n//\n//\n// Example:\n// This basic example shows how to parse a phyloXML formatted String into to a\n// object representing a phylogenetic tree. Followed by printing some elements\n// and then converting the object back to a phyloXML formatted String.\n//\n// Change './phyloxml' to 'phyloxml' if you use this code outside of this package\n//\n// var phyloXml = require('./phyloxml').phyloXml;\n//\n// phlyoXmlFormattedString = '<phyloxml xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ' +\n// 'xmlns=\"http://www.phyloxml.org\" ' +\n// 'xsi:schemaLocation=\"http://www.phyloxml.org http://www.phyloxml.org/1.10/phyloxml.xsd\">' +\n// '<phylogeny rooted=\"true\" rerootable=\"false\">' +\n// '<clade><branch_length>0.2</branch_length>' +\n// '<clade><branch_length>0.4</branch_length><name>A</name></clade>' +\n// '<clade><branch_length>0.6</branch_length><name>B</name></clade>' +\n// '</clade>' +\n// '</phylogeny>' +\n// '</phyloxml>';\n//\n// var phylogeneticTree = phyloXml.parse(phlyoXmlFormattedString, {trim: true, normalize: true})[0];\n//\n// console.log('Root branch length : ' + phylogeneticTree.children[0].branch_length);\n// console.log('Node A name : ' + phylogeneticTree.children[0].children[0].name);\n// console.log('Node A branch length: ' + phylogeneticTree.children[0].children[0].branch_length);\n// console.log('Node B name : ' + phylogeneticTree.children[0].children[1].name);\n// console.log('Node B branch length: ' + phylogeneticTree.children[0].children[1].branch_length);\n//\n// console.log('Entire tree in phyloXML format:');\n// console.log(phyloXml.toPhyloXML(phylogeneticTree, 4));\n//\n//\n// Synchronous parsing of phyloXML-formatted String:\n//\n// var px = require('./phyloxml').phyloXml;\n// var phys = px.parse(phyloxmlText, {trim: true, normalize: true});\n// console.log(px.toPhyloXML(phys[0], 6));\n//\n//\n// Asynchronous parsing of phyloXML-formatted Stream:\n//\n// var fs = require('fs');\n// var px = require('./phyloxml').phyloXml;\n// var stream = fs.createReadStream(xmlFile, {encoding: 'utf8'});\n// px.parseAsync(stream, {trim: true, normalize: true});\n\n\n(function phyloXml() {\n\n \"use strict\";\n\n var sax = null;\n if ( true && module.exports && !__webpack_require__.g.xmldocAssumeBrowser) {\n // Being used in a Node-like environment\n sax = __webpack_require__(/*! sax */ \"./node_modules/sax/lib/sax.js\");\n }\n else if (typeof window !== \"undefined\") {\n // Attached to the Window object in a browser\n sax = window.sax;\n if (!sax) {\n throw new Error(\"Expected sax to be defined. Make sure you are including sax.js before this file.\");\n }\n }\n else {\n sax = this.sax;\n if (!sax) {\n throw new Error(\"Expected sax to be defined. Make sure you are including sax.js before this file.\");\n }\n }\n\n // --------------------------------------------------------------\n // phyloXML constants\n // --------------------------------------------------------------\n\n // Accession\n var ACCESSION = 'accession';\n var ACCESSION_SOURCE_ATTR = 'source';\n var ACCESSION_COMMENT_ATTR = 'comment';\n\n // Annotation\n var ANNOTATION = 'annotation';\n var ANNOTATION_REF_ATTR = 'ref';\n var ANNOTATION_SOURCE_ATTR = 'source';\n var ANNOTATION_EVIDENCE_ATTR = 'evidence';\n var ANNOTATION_TYPE_ATTR = 'type';\n var ANNOTATION_DESC = 'desc';\n\n // Clade\n var CLADE = 'clade';\n var CLADE_BRANCH_LENGTH = 'branch_length';\n var CLADE_ID_SOURCE_ATTR = 'id_source';\n var CLADE_COLLAPSE_ATTR = 'collapse';\n var CLADE_NAME = 'name';\n var CLADE_WIDTH = 'width';\n\n // Clade Relation\n var CLADE_RELATION = 'clade_relation';\n var CLADE_RELATION_DISTANCE_ATTR = 'distance';\n var CLADE_RELATION_ID_REF_0_ATTR = 'id_ref_0';\n var CLADE_RELATION_ID_REF_1_ATTR = 'id_ref_1';\n var CLADE_RELATION_TYPE_ATTR = 'type';\n\n // Sequence Relation\n var SEQUENCE_RELATION = 'sequence_relation';\n var SEQUENCE_RELATION_DISTANCE_ATTR = 'distance';\n var SEQUENCE_RELATION_ID_REF_0_ATTR = 'id_ref_0';\n var SEQUENCE_RELATION_ID_REF_1_ATTR = 'id_ref_1';\n var SEQUENCE_RELATION_TYPE_ATTR = 'type';\n\n // Color\n var COLOR = 'color';\n var COLOR_RED = 'red';\n var COLOR_GREEN = 'green';\n var COLOR_BLUE = 'blue';\n var COLOR_ALPHA = 'alpha';\n\n // Confidence\n var CONFIDENCE = 'confidence';\n var CONFIDENCE_TYPE_ATTR = 'type';\n var CONFIDENCE_STDDEV_ATTR = 'stddev';\n var CONFIDENCES = 'confidences';\n\n // Cross References\n var CROSS_REFERENCES = 'cross_references';\n\n // Date\n var DATE = 'date';\n var DATE_UNIT_ATTR = 'unit';\n var DATE_DESC = 'desc';\n var DATE_VALUE = 'value';\n var DATE_MINIMUM = 'minimum';\n var DATE_MAXIMUM = 'maximum';\n\n // Distribution\n var DISTRIBUTION = 'distribution';\n var DISTRIBUTION_DESC = 'desc';\n\n // Domain Architecture\n var DOMAIN_ARCHITECTURE = 'domain_architecture';\n var DOMAIN_ARCHITECTURE_LENGTH_ATTR = 'length';\n\n // Events\n var EVENTS = 'events';\n var EVENTS_TYPE = 'type';\n var EVENTS_DUPLICATIONS = 'duplications';\n var EVENTS_SPECIATIONS = 'speciations';\n var EVENTS_LOSSES = 'losses';\n\n // Id\n var ID = 'id';\n var ID_PROVIDER_ATTR = 'provider';\n\n // Mol Seq\n var MOLSEQ = 'mol_seq';\n var MOLSEQ_IS_ALIGNED_ATTR = 'is_aligned';\n\n // Phylogeny\n var PHYLOGENY = 'phylogeny';\n\n // Phyloxml\n var PHYLOXML = 'phyloxml';\n\n // Point\n var POINT = 'point';\n var POINT_ALT_UNIT_ATTR = 'alt_unit';\n var POINT_GEODETIC_DATUM_ATTR = 'geodetic_datum';\n var POINT_LAT = 'lat';\n var POINT_LONG = 'long';\n var POINT_ALT = 'alt';\n\n // Property\n var PROPERTY = 'property';\n var PROPERTY_REF_ATTR = 'ref';\n var PROPERTY_ID_REF_ATTR = 'id_ref';\n var PROPERTY_UNIT_ATTR = 'unit';\n var PROPERTY_DATATYPE_ATTR = 'datatype';\n var PROPERTY_APPLIES_TO_ATTR = 'applies_to';\n var PROPERTIES = 'properties';\n\n // Protein Domain\n var PROTEINDOMAIN = 'domain';\n var PROTEINDOMAIN_FROM_ATTR = 'from';\n var PROTEINDOMAIN_TO_ATTR = 'to';\n var PROTEINDOMAIN_CONFIDENCE_ATTR = 'confidence';\n var PROTEINDOMAIN_ID_ATTR = 'id';\n\n // Reference\n var REFERENCE = 'reference';\n var REFERENCE_DOI_ATTR = 'doi';\n var REFERENCE_DESC = 'desc';\n\n // Sequence\n var SEQUENCE = 'sequence';\n var SEQUENCE_ID_SOURCE_ATTR = 'id_source';\n var SEQUENCE_ID_REF_ATTR = 'id_ref';\n var SEQUENCE_TYPE_ATTR = 'type';\n var SEQUENCE_SYMBOL = 'symbol';\n var SEQUENCE_NAME = 'name';\n var SEQUENCE_GENE_NAME = 'gene_name';\n var SEQUENCE_LOCATION = 'location';\n var SEQUENCES = 'sequences';\n\n // Taxonomy\n var TAXONOMY = 'taxonomy';\n var TAXONOMY_ID_SOURCE_ATTR = 'id_source';\n var TAXONOMY_CODE = 'code';\n var TAXONOMY_SCIENTIFIC_NAME = 'scientific_name';\n var TAXONOMY_AUTHORITY = 'authority';\n var TAXONOMY_COMMON_NAME = 'common_name';\n var TAXONOMY_SYNONYM = 'synonym';\n var TAXONOMY_RANK = 'rank';\n var TAXONOMIES = 'taxonomies';\n var TAXONOMY_SYNONYMS = 'synonyms';\n\n // Uri\n var URI = 'uri';\n var URI_TYPE_ATTR = 'type';\n var URI_DESC_ATTR = 'desc';\n\n // Phylogeny\n var PHYLOGENY_ROOTED_ATTR = 'rooted';\n var PHYLOGENY_REROOTABLE_ATTR = 'rerootable';\n var PHYLOGENY_BRANCH_LENGTH_UNIT_ATTR = 'branch_length_unit';\n var PHYLOGENY_TYPE_ATTR = 'type';\n var PHYLOGENY_NAME = 'name';\n var PHYLOGENY_DESCRIPTION = 'description';\n var PHYLOGENY_DATE = 'date';\n\n // Simple_Characteristics (to be deprecated!)\n var X_SIMPLE_CHARACTERISTICS = 'Simple_Characteristics';\n var X_SIMPLE_CHARACTERISTIC_COUNTRY = 'Country';\n var X_SIMPLE_CHARACTERISTIC_YEAR = 'Year';\n var X_SIMPLE_CHARACTERISTIC_HOST = 'Host';\n var X_SIMPLE_CHARACTERISTIC_HA = 'HA';\n var X_SIMPLE_CHARACTERISTIC_NA = 'NA';\n\n // appType (special for Virus BRC)\n var APPTYPE = 'flu_type';\n\n // Unknown source, id, confidence type:\n var UNKNOWN = 'unknown';\n\n // --------------------------------------------------------------\n // Instance variables\n // --------------------------------------------------------------\n var _phylogenies = null;\n var _phylogeny = null;\n var _cladeStack = null;\n var _tagStack = null;\n var _objectStack = null;\n\n // --------------------------------------------------------------\n // Others\n // --------------------------------------------------------------\n var PROPERTY_REF_RE = /[a-zA-Z0-9_]+:\\S+/;\n var PROPERTY_UNIT_RE = /[a-zA-Z0-9_]+:\\S+/;\n var PROPERTY_DATATYPE_RE = /xsd:\\S+/;\n\n // --------------------------------------------------------------\n // Functions for object creation\n // --------------------------------------------------------------\n function newAccession(tag) {\n var parent = _tagStack.get(1);\n if (!(parent === SEQUENCE || parent === CROSS_REFERENCES)) {\n throw new PhyloXmlError(\"found accession outside of sequence or cross-references\");\n }\n var acc = {};\n acc.value = null;\n acc.source = getAttribute(ACCESSION_SOURCE_ATTR, tag.attributes);\n acc.comment = getAttribute(ACCESSION_COMMENT_ATTR, tag.attributes);\n if (!acc.source) {\n acc.source = UNKNOWN;\n }\n if (parent === SEQUENCE) {\n getCurrentObject().accession = acc;\n }\n else {\n addToArrayInCurrentObjectUnnamed(acc);\n }\n _objectStack.push(acc);\n }\n\n function newAnnotation(tag) {\n var parent = _tagStack.get(1);\n if (parent != SEQUENCE) {\n throw new PhyloXmlError(\"found annotation outside of sequence\");\n }\n var ann = {};\n ann.evidence = getAttribute(ANNOTATION_EVIDENCE_ATTR, tag.attributes);\n ann.ref = getAttribute(ANNOTATION_REF_ATTR, tag.attributes);\n ann.source = getAttribute(ANNOTATION_SOURCE_ATTR, tag.attributes);\n ann.type = getAttribute(ANNOTATION_TYPE_ATTR, tag.attributes);\n addToArrayInCurrentObject('annotations', ann);\n _objectStack.push(ann);\n }\n\n function newBranchColor() {\n var parent = _tagStack.get(1);\n if (parent != CLADE) {\n throw new PhyloXmlError(\"found branch color outside of clade\");\n }\n var col = {};\n col.red = 0;\n col.green = 0;\n col.blue = 0;\n getCurrentObject().color = col;\n _objectStack.push(col);\n }\n\n function newClade(tag) {\n var newClade = {};\n newClade.branch_length = getAttributeAsFloat(CLADE_BRANCH_LENGTH, tag.attributes);\n newClade.collapse = getAttributeAsBoolean(CLADE_COLLAPSE_ATTR, tag.attributes);\n if (CLADE_ID_SOURCE_ATTR in tag.attributes) {\n newClade.id_source = tag.attributes[CLADE_ID_SOURCE_ATTR];\n }\n if (_phylogeny === null) {\n var phylogeny_data = _objectStack.pop();\n if (!_objectStack.isEmpty()) {\n throw new PhyloXmlError('severe phyloXML format error');\n }\n _phylogeny = phylogeny_data;\n _phylogeny.children = [newClade];\n }\n else {\n var currClade = getCurrentClade();\n if (currClade.children === undefined) {\n currClade.children = [newClade];\n }\n else {\n currClade.children.push(newClade);\n }\n }\n _cladeStack.push(newClade);\n _objectStack.push(newClade);\n }\n\n function newCladeRelation(tag) {\n var cr = {};\n cr.distance = getAttributeAsFloat(CLADE_RELATION_DISTANCE_ATTR, tag.attributes);\n cr.id_ref_0 = getAttribute(CLADE_RELATION_ID_REF_0_ATTR, tag.attributes);\n cr.id_ref_1 = getAttribute(CLADE_RELATION_ID_REF_1_ATTR, tag.attributes);\n cr.type = getAttribute(CLADE_RELATION_TYPE_ATTR, tag.attributes);\n addToArrayInCurrentObject('clade_relations', cr);\n _objectStack.push(cr);\n }\n\n function newSequenceRelation(tag) {\n var sr = {};\n sr.distance = getAttributeAsFloat(SEQUENCE_RELATION_DISTANCE_ATTR, tag.attributes);\n sr.id_ref_0 = getAttribute(SEQUENCE_RELATION_ID_REF_0_ATTR, tag.attributes);\n sr.id_ref_1 = getAttribute(SEQUENCE_RELATION_ID_REF_1_ATTR, tag.attributes);\n sr.type = getAttribute(SEQUENCE_RELATION_TYPE_ATTR, tag.attributes);\n addToArrayInCurrentObject('sequence_relations', sr);\n _objectStack.push(sr);\n }\n\n function newConfidence(tag) {\n var conf = {};\n conf.value = null;\n conf.type = getAttribute(CONFIDENCE_TYPE_ATTR, tag.attributes);\n conf.stddev = getAttributeAsFloat(CONFIDENCE_STDDEV_ATTR, tag.attributes);\n var parent = _tagStack.get(1);\n if (parent === CLADE || parent === PHYLOGENY) {\n addToArrayInCurrentObject(CONFIDENCES, conf);\n }\n else if (parent === ANNOTATION || parent === EVENTS || parent === CLADE_RELATION || parent === SEQUENCE_RELATION) {\n getCurrentObject().confidence = conf;\n }\n _objectStack.push(conf);\n }\n\n function newCrossReferences() {\n var parent = _tagStack.get(1);\n if (parent != SEQUENCE) {\n throw new PhyloXmlError(\"found cross-reference outside of sequence\");\n }\n var xrefs = [];\n getCurrentObject().cross_references = xrefs;\n _objectStack.push(xrefs);\n }\n\n function newDate(tag) {\n var date = {};\n date.unit = getAttribute(DATE_UNIT_ATTR, tag.attributes);\n getCurrentObject().date = date;\n _objectStack.push(date);\n }\n\n function newDistribution(tag) {\n var dist = {};\n dist.desc = null;\n dist.unit = getAttribute(DATE_UNIT_ATTR, tag.attributes);\n addToArrayInCurrentObject('distributions', dist);\n _objectStack.push(dist);\n }\n\n function newDomainArchitecture(tag) {\n var da = {};\n da.domains = null;\n da.length = getAttributeAsInt(DOMAIN_ARCHITECTURE_LENGTH_ATTR, tag.attributes);\n getCurrentObject().domain_architecture = da;\n _objectStack.push(da);\n }\n\n function newEvents() {\n var events = {};\n getCurrentObject().events = events;\n _objectStack.push(events);\n }\n\n function newId(tag) {\n var i = {};\n i.value = null;\n i.provider = getAttribute(ID_PROVIDER_ATTR, tag.attributes);\n getCurrentObject().id = i;\n _objectStack.push(i);\n }\n\n function newMolecularSequence(tag) {\n var mol_seq = {};\n mol_seq.is_aligned = getAttributeAsBoolean(MOLSEQ_IS_ALIGNED_ATTR, tag.attributes);\n getCurrentObject().mol_seq = mol_seq;\n _objectStack.push(mol_seq);\n }\n\n function newPoint(tag) {\n var p = {};\n p.alt_unit = getAttribute(POINT_ALT_UNIT_ATTR, tag.attributes);\n p.geodetic_datum = getAttribute(POINT_GEODETIC_DATUM_ATTR, tag.attributes);\n var parent = _tagStack.get(1);\n if (parent === DISTRIBUTION) {\n addToArrayInCurrentObject('points', p);\n }\n _objectStack.push(p);\n }\n\n function newProperty(tag) {\n var prop = {};\n prop.ref = getAttribute(PROPERTY_REF_ATTR, tag.attributes);\n prop.unit = getAttribute(PROPERTY_UNIT_ATTR, tag.attributes);\n prop.datatype = getAttribute(PROPERTY_DATATYPE_ATTR, tag.attributes);\n prop.applies_to = getAttribute(PROPERTY_APPLIES_TO_ATTR, tag.attributes);\n prop.id_ref = getAttribute(PROPERTY_ID_REF_ATTR, tag.attributes);\n\n if (!prop.ref) {\n throw new PhyloXmlError('property ref is missing');\n }\n if (!prop.datatype) {\n throw new PhyloXmlError('property data-type is missing');\n }\n if (!prop.applies_to) {\n throw new PhyloXmlError('property applies-to is missing');\n }\n if (!PROPERTY_REF_RE.test(prop.ref)) {\n throw new PhyloXmlError('property ref is ill-formatted: ' + prop.ref);\n }\n if (!PROPERTY_DATATYPE_RE.test(prop.datatype)) {\n throw new PhyloXmlError('property data-type is ill-formatted: ' + prop.datatype);\n }\n if (prop.unit && !PROPERTY_UNIT_RE.test(prop.unit)) {\n throw new PhyloXmlError('property unit is ill-formatted: ' + prop.unit);\n }\n\n addToArrayInCurrentObject(PROPERTIES, prop);\n _objectStack.push(prop);\n }\n\n function newProteinDomain(tag) {\n var pd = {};\n pd.name = null;\n pd.from = getAttributeAsInt(PROTEINDOMAIN_FROM_ATTR, tag.attributes);\n pd.to = getAttributeAsInt(PROTEINDOMAIN_TO_ATTR, tag.attributes);\n pd.confidence = getAttributeAsFloat(PROTEINDOMAIN_CONFIDENCE_ATTR, tag.attributes);\n pd.id = getAttribute(PROTEINDOMAIN_ID_ATTR, tag.attributes);\n addToArrayInCurrentObject('domains', pd);\n _objectStack.push(pd);\n }\n\n function newReference(tag) {\n var reference = {};\n reference.doi = getAttribute(REFERENCE_DOI_ATTR, tag.attributes);\n addToArrayInCurrentObject('references', reference);\n _objectStack.push(reference);\n }\n\n function newSequence(tag) {\n var seq = {};\n seq.type = getAttribute(SEQUENCE_TYPE_ATTR, tag.attributes);\n seq.id_source = getAttribute(SEQUENCE_ID_SOURCE_ATTR, tag.attributes);\n seq.id_ref = getAttribute(SEQUENCE_ID_REF_ATTR, tag.attributes);\n addToArrayInCurrentObject(SEQUENCES, seq);\n _objectStack.push(seq);\n }\n\n function newTaxonomy(tag) {\n var tax = {};\n tax.id_source = getAttribute(TAXONOMY_ID_SOURCE_ATTR, tag.attributes);\n addToArrayInCurrentObject(TAXONOMIES, tax);\n _objectStack.push(tax);\n }\n\n function newUri(tag) {\n var uri = {};\n uri.value = null;\n uri.desc = getAttribute(URI_DESC_ATTR, tag.attributes);\n uri.type = getAttribute(URI_TYPE_ATTR, tag.attributes);\n addToArrayInCurrentObject('uris', uri);\n _objectStack.push(uri);\n }\n\n function newPhylogeny(tag) {\n var phy = {};\n phy.rooted = getAttributeAsBoolean(PHYLOGENY_ROOTED_ATTR, tag.attributes);\n if (phy.rooted === undefined) {\n phy.rooted = true;\n }\n phy.rerootable = getAttributeAsBoolean(PHYLOGENY_REROOTABLE_ATTR, tag.attributes);\n if (phy.rerootable === undefined) {\n phy.rerootable = true;\n }\n phy.branch_length_unit = getAttribute(PHYLOGENY_BRANCH_LENGTH_UNIT_ATTR, tag.attributes);\n phy.type = getAttribute(PHYLOGENY_TYPE_ATTR, tag.attributes);\n _objectStack.push(phy);\n }\n\n function newSimpleCharacteristics() {\n //To be deprecated.\n var sc = {};\n getCurrentObject().simple_characteristics = sc;\n _objectStack.push(sc);\n }\n\n\n // --------------------------------------------------------------\n // Functions for processing text\n // --------------------------------------------------------------\n\n function inAccession(text) {\n getCurrentObject().value = text;\n }\n\n function inAnnotation(text) {\n if (getCurrentTag() === ANNOTATION_DESC) {\n getCurrentObject().desc = text;\n }\n }\n\n function inAppType(text) {\n if (getCurrentTag() === APPTYPE) {\n getCurrentObject().desc = text;\n }\n }\n\n function inBranchColor(text) {\n if (getCurrentTag() === COLOR_RED) {\n getCurrentObject().red = parseIntNumber(text);\n }\n else if (getCurrentTag() === COLOR_GREEN) {\n getCurrentObject().green = parseIntNumber(text);\n }\n else if (getCurrentTag() === COLOR_BLUE) {\n getCurrentObject().blue = parseIntNumber(text);\n }\n if (getCurrentTag() === COLOR_ALPHA) {\n getCurrentObject().alpha = parseIntNumber(text);\n }\n }\n\n function inClade(text) {\n if (getCurrentTag() === CLADE_NAME) {\n getCurrentClade().name = text;\n }\n else if (getCurrentTag() === CLADE_BRANCH_LENGTH) {\n getCurrentClade().branch_length = parseFloatNumber(text);\n }\n else if (getCurrentTag() === CLADE_WIDTH) {\n getCurrentClade().width = parseFloatNumber(text);\n }\n }\n\n function inConfidence(text) {\n getCurrentObject().value = parseFloatNumber(text);\n }\n\n function inDate(text) {\n if (getCurrentTag() === DATE_DESC) {\n getCurrentObject().desc = text;\n }\n else if (getCurrentTag() === DATE_VALUE) {\n getCurrentObject().value = parseFloatNumber(text);\n }\n else if (getCurrentTag() === DATE_MINIMUM) {\n getCurrentObject().minimum = parseFloatNumber(text);\n }\n else if (getCurrentTag() === DATE_MAXIMUM) {\n getCurrentObject().maximum = parseFloatNumber(text);\n }\n }\n\n function inDistribution(text) {\n if (getCurrentTag() === DISTRIBUTION_DESC) {\n getCurrentObject().desc = text;\n }\n }\n\n function inEvents(text) {\n if (getCurrentTag() === EVENTS_TYPE) {\n getCurrentObject().type = text;\n }\n else if (getCurrentTag() === EVENTS_DUPLICATIONS) {\n getCurrentObject().duplications = parseIntNumber(text);\n }\n else if (getCurrentTag() === EVENTS_SPECIATIONS) {\n getCurrentObject().speciations = parseIntNumber(text);\n }\n else if (getCurrentTag() === EVENTS_LOSSES) {\n getCurrentObject().losses = parseIntNumber(text);\n }\n }\n\n function inId(text) {\n getCurrentObject().value = text;\n }\n\n function inMolecularSequence(text) {\n getCurrentObject().value = text;\n }\n\n function inPoint(text) {\n if (getCurrentTag() === POINT_LAT) {\n getCurrentObject().lat = text;\n }\n else if (getCurrentTag() === POINT_LONG) {\n getCurrentObject().long = text;\n }\n else if (getCurrentTag() === POINT_ALT) {\n getCurrentObject().alt = text;\n }\n }\n\n function inProperty(text) {\n getCurrentObject().value = text;\n }\n\n function inProteinDomain(text) {\n getCurrentObject().name = text;\n }\n\n function inPhylogeny(text) {\n if (getCurrentTag() === PHYLOGENY_NAME) {\n getCurrentObject().name = text;\n }\n else if (getCurrentTag() === PHYLOGENY_DESCRIPTION) {\n getCurrentObject().description = text;\n }\n else if (getCurrentTag() === PHYLOGENY_DATE) {\n getCurrentObject().date = text;\n }\n }\n\n function inReference(text) {\n if (getCurrentTag() === REFERENCE_DESC) {\n getCurrentObject().desc = text;\n }\n }\n\n function inSequence(text) {\n if (getCurrentTag() === SEQUENCE_SYMBOL) {\n getCurrentObject().symbol = text;\n }\n else if (getCurrentTag() === SEQUENCE_NAME) {\n getCurrentObject().name = text;\n }\n else if (getCurrentTag() === SEQUENCE_GENE_NAME) {\n getCurrentObject().gene_name = text;\n }\n else if (getCurrentTag() === SEQUENCE_LOCATION) {\n getCurrentObject().location = text;\n }\n }\n\n function inTaxonomy(text) {\n if (getCurrentTag() === TAXONOMY_CODE) {\n getCurrentObject().code = text;\n }\n else if (getCurrentTag() === TAXONOMY_SCIENTIFIC_NAME) {\n getCurrentObject().scientific_name = text;\n }\n else if (getCurrentTag() === TAXONOMY_AUTHORITY) {\n getCurrentObject().authority = text;\n }\n else if (getCurrentTag() === TAXONOMY_COMMON_NAME) {\n getCurrentObject().common_name = text;\n }\n else if (getCurrentTag() === TAXONOMY_SYNONYM) {\n addToArrayInCurrentObject(TAXONOMY_SYNONYMS, text);\n }\n else if (getCurrentTag() === TAXONOMY_RANK) {\n getCurrentObject().rank = text;\n }\n }\n\n function inUri(text) {\n getCurrentObject().value = text;\n }\n\n function inSimpleCharacteristics(text) {\n //To be deprecated.\n if (getCurrentTag() === X_SIMPLE_CHARACTERISTIC_COUNTRY) {\n getCurrentObject().country = text;\n }\n else if (getCurrentTag() === X_SIMPLE_CHARACTERISTIC_HOST) {\n getCurrentObject().host = text;\n }\n else if (getCurrentTag() === X_SIMPLE_CHARACTERISTIC_YEAR) {\n getCurrentObject().year = text;\n }\n else if (getCurrentTag() === X_SIMPLE_CHARACTERISTIC_HA) {\n getCurrentObject().ha = text;\n }\n else if (getCurrentTag() === X_SIMPLE_CHARACTERISTIC_NA) {\n getCurrentObject().na = text;\n }\n }\n\n // --------------------------------------------------------------\n // Functions for SAX parser\n // --------------------------------------------------------------\n function phyloxmlOnopentag(tag) {\n _tagStack.push(tag.name);\n switch (tag.name) {\n case CLADE:\n newClade(tag);\n break;\n case ACCESSION:\n newAccession(tag);\n break;\n case ANNOTATION:\n newAnnotation(tag);\n break;\n case CLADE_RELATION:\n if (_tagStack.get(1) === PHYLOGENY) {\n newCladeRelation(tag);\n }\n break;\n case COLOR:\n newBranchColor();\n break;\n case CONFIDENCE:\n newConfidence(tag);\n break;\n case CROSS_REFERENCES:\n newCrossReferences();\n break;\n case DATE:\n if (_tagStack.get(1) === CLADE) {\n newDate(tag);\n }\n break;\n case DISTRIBUTION:\n newDistribution(tag);\n break;\n case DOMAIN_ARCHITECTURE:\n newDomainArchitecture(tag);\n break;\n case EVENTS:\n newEvents();\n break;\n case ID:\n newId(tag);\n break;\n case MOLSEQ:\n newMolecularSequence(tag);\n break;\n case POINT:\n newPoint(tag);\n break;\n case PROTEINDOMAIN:\n newProteinDomain(tag);\n break;\n case PHYLOGENY:\n newPhylogeny(tag);\n break;\n case PROPERTY:\n newProperty(tag);\n break;\n case REFERENCE:\n newReference(tag);\n break;\n case SEQUENCE:\n newSequence(tag);\n break;\n case SEQUENCE_RELATION:\n if (_tagStack.get(1) === PHYLOGENY) {\n newSequenceRelation(tag);\n }\n break;\n case TAXONOMY:\n newTaxonomy(tag);\n break;\n case URI:\n newUri(tag);\n break;\n case X_SIMPLE_CHARACTERISTICS:\n //To be deprecated.\n newSimpleCharacteristics();\n break;\n default:\n }\n }\n\n function phyloxmlOnclosetag(tag) {\n if (tag === CLADE) {\n _tagStack.pop();\n _objectStack.pop();\n _cladeStack.pop();\n }\n else if (\n tag === ACCESSION\n || tag === ANNOTATION\n || ( tag === CLADE_RELATION && (_tagStack.get(1) === PHYLOGENY) )\n || tag === COLOR\n || tag === CONFIDENCE\n || tag === CROSS_REFERENCES\n || ( tag === DATE && (_tagStack.get(1) === CLADE) )\n || tag === DISTRIBUTION\n || tag === TAXONOMY\n || tag === ID\n || tag === EVENTS\n || tag === MOLSEQ\n || tag === REFERENCE\n || tag === DOMAIN_ARCHITECTURE\n || tag === PROTEINDOMAIN\n || tag === SEQUENCE\n || ( tag === SEQUENCE_RELATION && (_tagStack.get(1) === PHYLOGENY) )\n || tag === PROPERTY\n || tag === POINT\n || tag === URI\n || tag === X_SIMPLE_CHARACTERISTICS) {\n _tagStack.pop();\n _objectStack.pop();\n }\n else if (!(tag === PHYLOGENY || tag === PHYLOXML)) {\n _tagStack.pop();\n }\n else if (tag === PHYLOGENY) {\n phyloxmlOnClosetagSanityCheck();\n _phylogenies.push(_phylogeny);\n startNewPhylogeny();\n }\n }\n\n function phyloxmlOntext(text) {\n var parentTag = _tagStack.get(1);\n var currentTag = _tagStack.peek();\n if (parentTag === CLADE) {\n inClade(text);\n }\n else if (parentTag === ANNOTATION) {\n inAnnotation(text);\n }\n else if (parentTag === COLOR) {\n inBranchColor(text);\n }\n else if (parentTag === DATE) {\n inDate(text);\n }\n else if (parentTag === DISTRIBUTION) {\n inDistribution(text);\n }\n else if (parentTag === EVENTS) {\n inEvents(text);\n }\n else if (parentTag === REFERENCE) {\n inReference(text);\n }\n else if (parentTag === PHYLOGENY) {\n inPhylogeny(text);\n }\n else if (parentTag === POINT) {\n inPoint(text);\n }\n else if (parentTag === SEQUENCE) {\n inSequence(text);\n }\n else if (parentTag === TAXONOMY) {\n inTaxonomy(text);\n }\n if (currentTag === ACCESSION) {\n inAccession(text);\n }\n else if (currentTag === APPTYPE) {\n inAppType(text);\n }\n else if (currentTag === CONFIDENCE) {\n inConfidence(text);\n }\n else if (currentTag === ID) {\n inId(text);\n }\n else if (currentTag === MOLSEQ) {\n inMolecularSequence(text);\n }\n else if (currentTag === PROTEINDOMAIN) {\n inProteinDomain(text);\n }\n else if (currentTag === PROPERTY) {\n inProperty(text);\n }\n else if (currentTag === URI) {\n inUri(text);\n }\n else if (parentTag === X_SIMPLE_CHARACTERISTICS) {\n inSimpleCharacteristics(text);\n }\n }\n\n function phyloxmlOnerror(error) {\n throw error;\n }\n\n function addPhyloxmlParserEvents(sax_parser) {\n sax_parser.onopentag = phyloxmlOnopentag;\n sax_parser.onclosetag = phyloxmlOnclosetag;\n sax_parser.ontext = phyloxmlOntext;\n sax_parser.onerror = phyloxmlOnerror;\n // Ignoring: oncdata, oncomment, ondoctype\n }\n\n // --------------------------------------------------------------\n // Helper functions\n // --------------------------------------------------------------\n function getCurrentClade() {\n return _cladeStack.peek();\n }\n\n function getCurrentTag() {\n return _tagStack.peek();\n }\n\n function getCurrentObject() {\n return _objectStack.peek();\n }\n\n function getAttribute(attribute_name, attributes) {\n if (attribute_name in attributes) {\n return attributes[attribute_name];\n }\n return undefined;\n }\n\n function getAttributeAsInt(attribute_name, attributes) {\n if (attribute_name in attributes) {\n return parseIntNumber(attributes[attribute_name]);\n }\n return undefined;\n }\n\n function getAttributeAsFloat(attribute_name, attributes) {\n if (attribute_name in attributes) {\n return parseFloatNumber(attributes[attribute_name]);\n }\n return undefined;\n }\n\n function getAttributeAsBoolean(attribute_name, attributes) {\n if (attribute_name in attributes) {\n return parseBoolean(attributes[attribute_name]);\n }\n return undefined;\n }\n\n function addToArrayInCurrentObject(name, value) {\n var parent = null;\n if (getCurrentObject()) {\n parent = getCurrentObject();\n }\n else {\n parent = _phylogeny;\n }\n var ary = parent[name];\n if (ary) {\n ary.push(value);\n }\n else {\n parent[name] = [value];\n }\n }\n\n function addToArrayInCurrentObjectUnnamed(value) {\n var obj = getCurrentObject();\n obj.push(value);\n }\n\n function parseFloatNumber(text) {\n var f = parseFloat(text);\n if (isNaN(f)) {\n throw new PhyloXmlError(\"could not parse floating point number from '\" + text + \"'\");\n }\n return f;\n }\n\n function parseIntNumber(text) {\n var i = parseInt(text);\n if (isNaN(i)) {\n throw new PhyloXmlError(\"could not parse integer number from '\" + text + \"'\");\n }\n return i;\n }\n\n function parseBoolean(text) {\n if (text === 'true') {\n return true;\n }\n else if (text === 'false') {\n return false;\n }\n else {\n throw new PhyloXmlError(\"could not parse boolean from '\" + text + \"'\");\n }\n }\n\n function startNewPhylogeny() {\n _phylogeny = null;\n _cladeStack = new Stack();\n _tagStack = new Stack();\n _objectStack = new Stack();\n }\n\n function phyloxmlOnClosetagSanityCheck() {\n if (!(_cladeStack.isEmpty() && _objectStack.isEmpty() )) {\n throw new PhyloXmlError('severe phyloXML format error')\n }\n }\n\n function finalSanityCheck() {\n if (!_tagStack.isEmpty()) {\n throw new PhyloXmlError('severe phyloXML format error');\n }\n }\n\n // --------------------------------------------------------------\n // Stack\n // --------------------------------------------------------------\n function Stack() {\n this._stack = [];\n this.pop = function () {\n var p = this._stack.pop();\n if (p === undefined) {\n throw new Error('severe phyloXML format error')\n }\n return p;\n };\n this.push = function (item) {\n this._stack.push(item);\n };\n this.peek = function () {\n return this._stack[this._stack.length - 1];\n };\n this.get = function (i) {\n return this._stack[this._stack.length - (1 + i)];\n };\n this.length = function () {\n return this._stack.length;\n };\n this.isEmpty = function () {\n return this._stack.length < 1;\n };\n }\n\n // --------------------------------------------------------------\n // phyloXML error\n // --------------------------------------------------------------\n function PhyloXmlError(message) {\n this.name = 'phyloXmlError';\n this.message = message || 'phyloXML format error';\n }\n\n PhyloXmlError.prototype = Object.create(Error.prototype);\n\n // --------------------------------------------------------------\n // To phyloXML\n // --------------------------------------------------------------\n phyloXml.toPhyloXML_ = function (phy, dec) {\n var x = '';\n var ind = '';\n openPhyloXml();\n openPhylogeny(phy, [PHYLOGENY_ROOTED_ATTR, PHYLOGENY_REROOTABLE_ATTR,\n PHYLOGENY_BRANCH_LENGTH_UNIT_ATTR, PHYLOGENY_TYPE_ATTR]);\n addSingleElement(PHYLOGENY_NAME, phy.name);\n addSingleElement(PHYLOGENY_DESCRIPTION, phy.description);\n addSingleElement(PHYLOGENY_DATE, phy.date);\n if (phy.children && phy.children.length === 1) {\n toPhyloXMLhelper(phy.children[0]);\n }\n closePhylogeny();\n closePhyloXml();\n return x;\n\n function toPhyloXMLhelper(node) {\n var l;\n var i;\n\n openClade(node, [CLADE_ID_SOURCE_ATTR, CLADE_COLLAPSE_ATTR]);\n\n addSingleElement(CLADE_NAME, node.name);\n\n if (node[CLADE_BRANCH_LENGTH]) {\n addSingleElement(CLADE_BRANCH_LENGTH, (dec && dec > 0) ? roundNumber(node[CLADE_BRANCH_LENGTH], dec) : node[CLADE_BRANCH_LENGTH]);\n }\n\n if (node[CONFIDENCES] && node[CONFIDENCES].length > 0) {\n l = node[CONFIDENCES].length;\n for (i = 0; i < l; ++i) {\n var conf = node[CONFIDENCES][i];\n if (!conf[CONFIDENCE_TYPE_ATTR]) {\n conf[CONFIDENCE_TYPE_ATTR] = UNKNOWN;\n }\n addSingleElement(CONFIDENCE, conf.value, conf,\n [CONFIDENCE_TYPE_ATTR, CONFIDENCE_STDDEV_ATTR]);\n }\n }\n\n addSingleElement(CLADE_WIDTH, node[CLADE_WIDTH]);\n\n if (node[COLOR]) {\n var col = node[COLOR];\n open(COLOR);\n addSingleElement(COLOR_RED, col[COLOR_RED]);\n addSingleElement(COLOR_GREEN, col[COLOR_GREEN]);\n addSingleElement(COLOR_BLUE, col[COLOR_BLUE]);\n addSingleElement(COLOR_ALPHA, col[COLOR_ALPHA]);\n close(COLOR);\n }\n\n if (node[TAXONOMIES] && node[TAXONOMIES].length > 0) {\n l = node[TAXONOMIES].length;\n for (i = 0; i < l; ++i) {\n var tax = node[TAXONOMIES][i];\n open(TAXONOMY, tax, [TAXONOMY_ID_SOURCE_ATTR]);\n if (tax[ID]) {\n if (!tax[ID][ID_PROVIDER_ATTR]) {\n tax[ID][ID_PROVIDER_ATTR] = UNKNOWN;\n }\n addSingleElement(ID, tax[ID].value, tax[ID],\n [ID_PROVIDER_ATTR]);\n }\n addSingleElement(TAXONOMY_CODE, tax[TAXONOMY_CODE]);\n addSingleElement(TAXONOMY_SCIENTIFIC_NAME, tax[TAXONOMY_SCIENTIFIC_NAME]);\n addSingleElement(TAXONOMY_AUTHORITY, tax[TAXONOMY_AUTHORITY]);\n addSingleElement(TAXONOMY_COMMON_NAME, tax[TAXONOMY_COMMON_NAME]);\n if (tax[TAXONOMY_SYNONYMS] && tax[TAXONOMY_SYNONYMS].length > 0) {\n var ll = tax[TAXONOMY_SYNONYMS].length;\n for (var ii = 0; ii < ll; ++ii) {\n addSingleElement(TAXONOMY_SYNONYM, tax[TAXONOMY_SYNONYMS][ii]);\n }\n }\n addSingleElement(TAXONOMY_RANK, tax[TAXONOMY_RANK]);\n close(TAXONOMY);\n }\n }\n\n if (node[SEQUENCES] && node[SEQUENCES].length > 0) {\n l = node[SEQUENCES].length;\n for (i = 0; i < l; ++i) {\n var seq = node[SEQUENCES][i];\n open(SEQUENCE, seq, [SEQUENCE_TYPE_ATTR, SEQUENCE_ID_SOURCE_ATTR, SEQUENCE_ID_REF_ATTR]);\n addSingleElement(SEQUENCE_SYMBOL, seq[SEQUENCE_SYMBOL]);\n if (seq[ACCESSION]) {\n if (!seq[ACCESSION][ACCESSION_SOURCE_ATTR]) {\n seq[ACCESSION][ACCESSION_SOURCE_ATTR] = UNKNOWN;\n }\n addSingleElement(ACCESSION, seq[ACCESSION].value, seq[ACCESSION],\n [ACCESSION_SOURCE_ATTR, ACCESSION_COMMENT_ATTR]);\n }\n addSingleElement(SEQUENCE_NAME, seq[SEQUENCE_NAME]);\n addSingleElement(SEQUENCE_GENE_NAME, seq[SEQUENCE_GENE_NAME]);\n addSingleElement(SEQUENCE_LOCATION, seq[SEQUENCE_LOCATION]);\n if (seq[MOLSEQ]) {\n addSingleElement(MOLSEQ, seq[MOLSEQ].value, seq[MOLSEQ],\n [MOLSEQ_IS_ALIGNED_ATTR]);\n }\n close(SEQUENCE);\n }\n }\n\n if (node[EVENTS]) {\n var ev = node[EVENTS];\n open(EVENTS);\n addSingleElement(EVENTS_TYPE, ev[EVENTS_TYPE]);\n addSingleElement(EVENTS_DUPLICATIONS, ev[EVENTS_DUPLICATIONS]);\n addSingleElement(EVENTS_SPECIATIONS, ev[EVENTS_SPECIATIONS]);\n addSingleElement(EVENTS_LOSSES, ev[EVENTS_LOSSES]);\n if (ev[CONFIDENCE]) {\n var evconf = ev[CONFIDENCE];\n addSingleElement(CONFIDENCE, evconf.value, evconf,\n [CONFIDENCE_TYPE_ATTR, CONFIDENCE_STDDEV_ATTR]);\n }\n close(EVENTS);\n }\n\n if (node[PROPERTIES] && node[PROPERTIES].length > 0) {\n l = node[PROPERTIES].length;\n for (i = 0; i < l; ++i) {\n var prop = node[PROPERTIES][i];\n if (!prop[PROPERTY_APPLIES_TO_ATTR]) {\n throw new PhyloXmlError(\"property applies-to is missing\");\n }\n if (!prop[PROPERTY_DATATYPE_ATTR]) {\n throw new PhyloXmlError(\"property data-type is missing\");\n }\n if (!prop[PROPERTY_REF_ATTR]) {\n throw new PhyloXmlError(\"property ref is missing\");\n }\n addSingleElement(PROPERTY, prop.value, prop, [PROPERTY_REF_ATTR,\n PROPERTY_UNIT_ATTR, PROPERTY_DATATYPE_ATTR, PROPERTY_APPLIES_TO_ATTR,\n PROPERTY_ID_REF_ATTR]);\n }\n }\n\n if (node.children) {\n l = node.children.length;\n for (i = 0; i < l; ++i) {\n toPhyloXMLhelper(node.children[i]);\n }\n }\n else if (node._children) {\n l = node._children.length;\n for (i = 0; i < l; ++i) {\n toPhyloXMLhelper(node._children[i]);\n }\n }\n\n closeClade();\n\n } // toPhyloXMLhelper\n\n function addSingleElement(elemName, elemValue, object, attributeNames) {\n if ((elemValue !== null) && (elemValue !== undefined)) {\n if (typeof elemValue === 'string' || elemValue instanceof String) {\n elemValue = elemValue.trim();\n if (elemValue.length > 0) {\n if ((elemValue.indexOf('&') > -1) || ( elemValue.indexOf('<') > -1) || ( elemValue.indexOf('>') > -1)\n || (elemValue.indexOf('\"') > -1) || ( elemValue.indexOf(\"'\") > -1)) {\n elemValue = replaceUnsafeChars(elemValue);\n }\n }\n else {\n return;\n }\n }\n x += ( ind + '<' + elemName);\n if (object && attributeNames && attributeNames.length > 0) {\n addAttributes(object, attributeNames);\n }\n x += ( '>' + elemValue + '</' + elemName + '>\\n');\n }\n }\n\n function open(elemName, object, attributeNames) {\n if (object && attributeNames && attributeNames.length > 0) {\n x += ( ind + '<' + elemName);\n addAttributes(object, attributeNames);\n x += '>\\n';\n }\n else {\n x += (ind + '<' + elemName + '>\\n' );\n }\n ind = ind + ' ';\n }\n\n function close(elemName) {\n reduceInd();\n x += ( ind + '</' + elemName + '>\\n' );\n }\n\n function openClade(object, attributeNames) {\n if (object && attributeNames && attributeNames.length > 0) {\n x += ind + '<clade';\n addAttributes(object, attributeNames);\n x += '>\\n';\n }\n else {\n x += ind + '<clade>\\n';\n }\n ind = ind + ' ';\n }\n\n function closeClade() {\n reduceInd();\n x += ind + '</clade>\\n';\n }\n\n function openPhylogeny(object, attributeNames) {\n if (object[PHYLOGENY_ROOTED_ATTR] === undefined ||\n object[PHYLOGENY_ROOTED_ATTR] === null) {\n object[PHYLOGENY_ROOTED_ATTR] = true;\n }\n if (object[PHYLOGENY_REROOTABLE_ATTR] === undefined ||\n object[PHYLOGENY_REROOTABLE_ATTR] === null) {\n object[PHYLOGENY_REROOTABLE_ATTR] = true;\n }\n if (object && attributeNames && attributeNames.length > 0) {\n x += ' <phylogeny';\n addAttributes(object, attributeNames);\n x += '>\\n';\n }\n else {\n x += ' <phylogeny>\\n';\n }\n ind = ' ';\n }\n\n function closePhylogeny() {\n ind = ' ';\n x += ' </phylogeny>\\n';\n }\n\n function openPhyloXml() {\n ind = '';\n x += '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n x += '<phyloxml xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.phyloxml.org http://www.phyloxml.org/1.20/phyloxml.xsd\" xmlns=\"http://www.phyloxml.org\">\\n';\n }\n\n function closePhyloXml() {\n x += '</phyloxml>\\n';\n }\n\n function addAttributes(object, attributeNames) {\n var l = attributeNames.length;\n for (var i = 0; i < l; ++i) {\n var attributeName = attributeNames[i];\n if (attributeName && ( object[attributeName] !== undefined && object[attributeName] !== null )) {\n x += (' ' + attributeName + '=\"' + object[attributeName] + '\"' );\n }\n }\n }\n\n function roundNumber(num, dec) {\n return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);\n }\n\n function replaceUnsafeChars(str) {\n return str\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n }\n\n function reduceInd() {\n var l = ind.length;\n ind = '';\n for (var i = 0; i <= l - 2; ++i) {\n ind += ' ';\n }\n }\n\n }; // toPhyloXML_\n\n\n // --------------------------------------------------------------\n // Main functions\n // --------------------------------------------------------------\n\n /**\n * To parse phyloXML formatted trees from a stream asynchronously.\n *\n * @param stream - The stream to be parsed.\n * @param parseOptions - Options dict for the SAX parser.\n * (example: {trim: true, normalize: true}).\n */\n phyloXml.parseAsync = function (stream, parseOptions) {\n _phylogenies = [];\n startNewPhylogeny();\n var sax_parser = sax.createStream(true, parseOptions);\n addPhyloxmlParserEvents(sax_parser);\n stream.pipe(sax_parser);\n\n sax_parser.on('end', function () {\n finalSanityCheck();\n var len = _phylogenies.length;\n console.log(\"parsed \" + len + \" trees\");\n // for (var i = 0; i < len; ++i) {\n // do something, for example:\n // var str = JSON.stringify(_phylogenies[i], null, 2);\n //}\n });\n\n process.stdout.on('drain', function () {\n stream.resume();\n });\n };\n\n /**\n * To parse a phyloXML formatted source.\n *\n * @param source - The source.\n * @param parseOptions - Options dict for the SAX parser\n * (example: {trim: true, normalize: true}).\n * @returns {*} - Array of phylogentic tree objects.\n */\n phyloXml.parse = function (source, parseOptions) {\n source && ( source = source.toString().trim());\n\n if (!source) {\n throw new Error('phyloXML source is empty');\n }\n\n _phylogenies = [];\n startNewPhylogeny();\n var sax_parser = sax.parser(true, parseOptions);\n addPhyloxmlParserEvents(sax_parser);\n\n sax_parser.onend = function () {\n finalSanityCheck();\n };\n\n sax_parser.write(source).close();\n return _phylogenies;\n };\n\n\n /**\n * To convert a phylogentic tree object to a phyloXML formatted string.\n *\n * @param phy - A phylogentic tree object.\n * @param decPointsMax - Maximal number of decimal points for branch lengths (optional).\n * @returns A phyloXML formatted string.\n */\n phyloXml.toPhyloXML = function (phy, decPointsMax) {\n return phyloXml.toPhyloXML_(phy, decPointsMax);\n };\n\n // --------------------------------------------------------------\n // For exporting\n // --------------------------------------------------------------\n if ( true && module.exports && !__webpack_require__.g.xmldocAssumeBrowser)\n module.exports.phyloXml = phyloXml;\n else if (typeof window !== \"undefined\")\n window.phyloXml = phyloXml;\n else\n this.phyloXml = phyloXml;\n})();\n\n\n//# sourceURL=webpack://PhyloIO/./src/phyloxml.js?");
|
|
8740
7815
|
|
|
8741
7816
|
/***/ }),
|
|
8742
7817
|
|
|
@@ -8750,14 +7825,14 @@ eval("const fs = __webpack_require__(/*! file-saver */ \"./node_modules/file-sav
|
|
|
8750
7825
|
|
|
8751
7826
|
/***/ }),
|
|
8752
7827
|
|
|
8753
|
-
/***/ "./src/
|
|
8754
|
-
|
|
8755
|
-
!*** ./src/
|
|
8756
|
-
|
|
7828
|
+
/***/ "./src/worker_bcn.js":
|
|
7829
|
+
/*!***************************!*\
|
|
7830
|
+
!*** ./src/worker_bcn.js ***!
|
|
7831
|
+
\***************************/
|
|
8757
7832
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8758
7833
|
|
|
8759
7834
|
"use strict";
|
|
8760
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Viewer)\n/* harmony export */ });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"./node_modules/d3/index.js\");\n/* harmony import */ var _interface_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./interface.js */ \"./src/interface.js\");\n/* harmony import */ var d3_v6_tip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3-v6-tip */ \"./node_modules/d3-v6-tip/build/d3-v6-tip.js\");\n/* harmony import */ var d3_v6_tip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(d3_v6_tip__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\nd3__WEBPACK_IMPORTED_MODULE_0__.selection.prototype.moveToFront = function() {\n return this.each(function() {\n this.parentNode.appendChild(this);\n });\n};\n\nvar uid_viewer = 0 // unique id generator is bound to a single Viewer()\nconst collapse_ratio_vertical = 0.2 // how much a triangle is vertically narrow\n\n// D3 viewer that render any model tree\nclass Viewer {\n\n constructor(container) {\n\n // General\n this.container_object = container // related Container()\n this.uid = uid_viewer ++; // unique viewer() id\n this.data; // current model.data used\n this.model = false; // current model\n\n // D3\n this.d3 = d3__WEBPACK_IMPORTED_MODULE_0__ // d3.js instance that contain information about zoom, etc..\n this.hierarchy; // converted model data into d3 comptabile data format\n this.d3_cluster; // d3 layout to compute 2D position for d3 hierarchy object\n this.d3_cluster_data; // d3 layout fed with d3 hierarchy data\n this.zoom;\n this.id_gen = 0; // unique id generator for d3 id\n this.max_length;\n this.scale_branch_length; // scale between branch length and x pos\n\n // DOM\n this.svg;\n this.svg_d3;\n this.G;\n this.G_d3;\n this.container = document.getElementById(this.container_object.div_id);\n this.container_d3 = d3__WEBPACK_IMPORTED_MODULE_0__.select(this.container);\n this.container_d3.style('font-family', 'monospace !important' )\n\n this.interface;\n\n // Settings\n this.settings = {\n 'duration' : 500,\n 'max_visible_leaves' : 30,\n 'style': {\n 'offset_top_fit': 140,\n 'translate_top_fit': 60,\n 'margin' : {top: 16, right: 16, bottom: 16, left: 96},\n\n },\n 'stack':{\n 'labels' : [\"Retained\", \"Duplicated\", \"Gained\", \"Lost\", \"Duplications\", \"Gains\", \"Losses\"],\n 'colors' : [\"#1f77b4\", \"#ff7f0e\", \"#2ca02c\", \"#d62728\", \"#ff7f0e\", \"#2ca02c\", \"#d62728\"],\n 'colorMap' : {},\n }\n\n }\n\n this.width = parseFloat(window.getComputedStyle(this.container).width) - this.settings.style.margin.left - 2*this.settings.style.margin.right;\n this.height = parseFloat(window.getComputedStyle(this.container).height) - 2*this.settings.style.margin.top - this.settings.style.margin.bottom;\n\n this.colorScale = {'leaf' : null, 'node':null}\n this.intercolor = {'leaf' : null, 'node': null}\n this.set_color_scale()\n\n // ZOOM\n this.force_zoom_rescaling = false\n this.zoom = d3__WEBPACK_IMPORTED_MODULE_0__.zoom().on(\"zoom\", (d, i) => { return this.zoomed(d,i)} )\n\n\n // SVG\n this.svg = this.container_d3.append(\"svg\")\n .attr(\"id\", \"svg\" + this.uid)\n .attr(\"width\", this.width + this.settings.style.margin.left + this.settings.style.margin.right )\n .attr(\"height\", this.height + this.settings.style.margin.top + this.settings.style.margin.bottom)\n .call(this.zoom)\n .on(\"dblclick.zoom\", null)\n .call(this.zoom.transform, d3__WEBPACK_IMPORTED_MODULE_0__.zoomIdentity.translate(this.settings.style.margin.left, (this.height/2 + this.settings.style.margin.top) ))\n\n\n this.svg_d3 = d3__WEBPACK_IMPORTED_MODULE_0__.select(this.svg)\n\n // G element for zoom/transform\n //this.G = this.svg.append(\"g\")\n // .attr(\"id\", \"master_g\" + this.uid)\n // .attr(\"transform\", \"translate(\"+ this.settings.style.margin.left + \",\" + (this.height/2 + this.settings.style.margin.top) + \")\")\n //this.G_d3 = d3.select(this.G);\n\n this.build_master_g()\n\n // D3 TREE LAYOUT\n this.d3_cluster = d3__WEBPACK_IMPORTED_MODULE_0__.cluster()\n .separation((a,b) => {return this.separate(a,b)})\n\n // MISC.\n this.settings.stack.colorMap = this.compute_color_map_stack()\n\n\n\n }\n\n // DATA\n set_data(model, refresh_interface = true){\n\n\n this.data = model.data;\n this.model = model;\n\n this.d3_cluster.nodeSize([this.model.settings.tree.node_vertical_size,this.model.settings.tree.node_horizontal_size])\n\n this.build_d3_data();\n\n this.set_color_scale()\n\n if (refresh_interface){\n this.interface = new _interface_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this, this.container_object)\n }\n\n\n }\n\n remove_data(){\n\n this.data = null;\n this.model = null;\n this.destroy_master_g()\n this.build_master_g()\n\n }\n\n destroy_master_g(){\n this.svg.select(\"#master_g\" + this.uid).remove()\n this.G = null\n this.G_d3 = null\n }\n\n build_master_g(){\n this.G = this.svg.append(\"g\")\n .attr(\"id\", \"master_g\" + this.uid)\n .attr(\"transform\", \"translate(\"+ this.settings.style.margin.left + \",\" + (this.height/2 + this.settings.style.margin.top) + \")\")\n this.G_d3 = d3__WEBPACK_IMPORTED_MODULE_0__.select(this.G);\n\n\n }\n\n build_d3_data(){\n\n // Build d3 hierarchy\n this.hierarchy = d3__WEBPACK_IMPORTED_MODULE_0__.hierarchy(this.data, d => d.children );\n this.hierarchy.x0 = this.height / 2;\n this.hierarchy.y0 = 0;\n\n // Transfer \"collapse\" information from model data to d3 data\n this.hierarchy.each(d => {\n\n d.ID = null;\n\n if (d.data.collapse) {\n d._children = d.children;\n d.children = null;\n }\n else {\n d._children = null;\n }\n })\n\n this.build_d3_cluster()\n\n\n\n }\n\n build_d3_cluster(){\n\n // Build d3 layout\n this.d3_cluster_data = this.d3_cluster(this.hierarchy);\n\n // compute the branch length from the root till each nodes (d.branch_size)\n this.max_length = 0\n this.max_depth = 0\n this.hierarchy.eachBefore(d => {\n if (d.parent) {\n d.branch_size = d.parent.branch_size + d.data.branch_length\n if (d.branch_size > this.max_length) {\n this.max_length = d.branch_size\n }\n if (d.depth > this.max_depth) {\n this.max_depth = d.depth\n }\n\n } else {\n d.branch_size = 0\n }\n })\n\n this.compute_stack_data()\n\n this.build_scale_branch_length() // todo dont build scale on collapse\n\n //this.interface = new Interface(this, this.container_object)\n\n\n\n }\n\n compute_stack_data(){\n // store required data for stack on node\n if (this.model.settings.has_histogram_data){\n this.hierarchy.eachBefore((d, i, node) => {\n\n if( d.data.evolutionaryEvents) {\n\n let stackData = []\n stackData['genes'] = this.barStack(d, 'genes');\n stackData['events'] = this.barStack(d, 'events');\n\n d.stackData = stackData\n }\n\n if( this.model.settings.stack.has_support &&d.data.evolutionaryEvents_support) {\n\n let stackData_support = []\n stackData_support['genes'] = this.barStack(d, 'genes', true);\n stackData_support['events'] = this.barStack(d, 'events', true);\n\n d.stackData_support = stackData_support\n }\n\n })\n }\n }\n\n build_scale_branch_length(){\n\n var max_y = 0;\n this.d3_cluster_data.descendants().forEach(d => {\n if (d.y > max_y) {\n max_y = d.y\n }\n })\n\n\n\n\n this.scale_branch_length = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear().domain([0, this.max_length]).range([this.d3_cluster_data.y, max_y])\n this.scale_branch_depth = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear().domain([0, this.max_depth]).range([this.d3_cluster_data.y, max_y])\n }\n\n // RENDERING\n render(source){\n\n d3__WEBPACK_IMPORTED_MODULE_0__.selectAll(\"#menu-node\").remove()\n\n\n this.render_tooltip()\n\n // Get the nodes and edges\n this.nodes = this.d3_cluster_data.descendants();\n this.nodes = this.nodes.sort((a,b) => {return a.x - b.x})\n\n this.links = this.d3_cluster_data.descendants().slice(1);\n\n\n // And render them\n this.render_nodes(source)\n this.render_edges(source)\n\n\n if (this.model.settings.first_time_render) {\n this.model.settings.first_time_render = false\n\n if (this.container_object.api.settings.phylostratigraphy){\n\n\n source.children.forEach(element =>\n this.container_object.trigger_(\"collapseAll\", element.data, element));\n\n this.maximise_zoom()\n this.svg.call(this.zoom.scaleBy, 0.5)\n this.container_object.history_actions = []\n\n }\n\n else{\n this.fit_to_viewer_height()\n\n }\n\n }\n\n\n }\n\n render_tooltip(){\n\n var idd = \"tooltip\" + this.uid\n\n d3__WEBPACK_IMPORTED_MODULE_0__.selectAll(\".tooltip\").remove()\n\n this.tooltip = this.d3.select('body').append(\"div\")\n .style(\"opacity\", 0)\n .style(\"position\", 'absolute')\n .attr(\"class\", \"tooltip\")\n .attr(\"id\", idd)\n .style(\"background-color\", \"white\")\n .style(\"border\", \"solid\")\n .style(\"border-width\", \"1px\")\n .style(\"border-radius\", \"5px\")\n .style(\"padding\", \"10px\")\n\n\n }\n\n set_tooltip_text(node){\n\n var html = \"\";\n\n if (this.container_object.api.settings.phylostratigraphy){\n\n if (this.model.settings.stack.has_support && this.model.settings.stack.only_support){\n var datum = node.data.evolutionaryEvents_support\n }\n else {\n var datum = node.data.evolutionaryEvents\n }\n\n\n\n html += `<b># Events</b> <br>`\n html += `Gains: ${datum.gained} <br>`\n html += `Duplications: ${datum.duplications} <br>`\n html += `Losses: ${datum.lost} <br> <br>`\n\n html += `<b># Genes</b> <br>`\n html += `Gained: ${datum.gained} <br>`\n html += `Duplicated: ${datum.duplicated} <br>`\n html += `Retained: ${datum.retained} <br>`\n html += `Lost: ${datum.lost} <br>`\n }\n\n else {\n for (var [key, value] of Object.entries(node.data.extended_informations)) {\n\n if ((/^-?[\\d]*(\\.[\\d]+)?$/g).test(value)) {\n\n if (value % 1 === 0) {\n html += `${key}: ${value} <br>`\n }\n\n else{\n //console.log(value)\n html += `${key}: ${parseFloat(value).toFixed(3)} <br>`\n }\n }\n else{\n html += `${key}: ${value} <br>`\n }\n\n\n }\n }\n\n if (this.container_object.api.settings.phylostratigraphy) {\n html += `<br> <b>Click to open detail page</b> <br>`\n }\n\n this.tooltip.html(html);\n }\n\n render_nodes(source){\n\n var self_render = this;\n var on_screen_text_size = this.compute_node_font_size()\n var subsampling_index = -1\n var subsampling_module = 1 + Math.floor((on_screen_text_size)/this.model.settings.tree.node_vertical_size)\n var real_node_radius = this.compute_node_radius()\n var show_duplications = this.model.settings.display_duplication\n var mirror_factor = this.model.settings.mirror ? -1 : 1\n var deepest_tip = 0;\n\n // update x pos with branch length\n this.nodes.forEach(d => {\n if (this.model.settings.has_branch_lenght && this.model.settings.use_branch_lenght) {\n d.y = this.scale_branch_length(d.branch_size)\n }\n else{\n d.y = this.scale_branch_depth(d.depth)\n }\n\n if (!this.model.settings.display_leaves){\n d.subsampled = false;\n return\n }\n\n\n if (!this.model.settings.subsample_label){\n d.subsampled = true;\n return\n }\n\n if (!d.children ) {\n\n if (d.data.collapse && d.data.triangle_height >= on_screen_text_size){\n d.subsampled = true\n return\n }\n\n subsampling_index += 1;\n d.subsampled = (subsampling_index % subsampling_module === 0) ;\n }\n\n })\n\n // Update the nodes...\n var node = this.G.selectAll('g.node')\n .data(this.nodes, d => { return d.ID || (d.ID = ++this.id_gen); })\n\n // Enter any new modes at the parent's previous position.\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr(\"id\", d => {return this.uid + \"_\" + d.ID})\n .attr(\"transform\", function(d) {\n return \"translate(\" + mirror_factor*source.y0 + \",\" + source.x0 + \")\";\n })\n .on(\"mousedown\", function(d,i) {\n d.stopPropagation();\n })\n .on('click', (d, i) => {\n if (i.children || i._children) {this.click_nodes(d,i)}\n })\n .on('mouseover', (d, i) => {\n if (this.model.settings.show_tooltips){\n\n var target = d.target || d.srcElement;\n\n if (this.container_object.api.settings.phylostratigraphy && target.nodeName != 'rect' ) {\n return\n }\n\n this.tooltip.transition().duration(50)\n .style('display', 'block')\n .style('opacity', 0.9)\n .style('left', (d.pageX + 12) + 'px')\n .style('top', d.pageY + 'px');\n\n this.set_tooltip_text(i);\n\n\n }\n\n })\n .on('mousemove', d => {\n if (this.model.settings.show_tooltips) {\n this.tooltip\n .style('left', (d.pageX + 12) + 'px')\n .style('top', d.pageY + 'px');\n }\n })\n .on('mouseout', () => {\n if (this.model.settings.show_tooltips) {\n this.tooltip\n .style('display', 'none');\n }\n });\n\n\n // Add Circle for the nodes\n nodeEnter.filter(function(d){\n return (d.children || d._children)\n })\n .append('circle')\n .attr('class', 'node')\n .attr('r', 1e-6)\n .style(\"stroke\", \"transparent\" )\n .style(\"stroke-width\", \"6px\" )\n .style(\"fill\", function(d) {\n return d.data.duplication && show_duplications ? 'red' : d._children ? \"lightsteelblue\" : \"#fff\";\n });\n\n\n this.node_face_enter(nodeEnter)\n\n // create null triangle\n nodeEnter.append(\"path\")\n .attr(\"class\", \"triangle\")\n .style(\"fill\", \"#666\")\n .attr(\"d\", function (d) {\n return \"M\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0;\n })\n\n if (this.model.settings.has_histogram_data && this.model.settings.show_histogram) {\n // create null stack\n nodeEnter.append(\"g\")\n .attr(\"class\", \"stackGroup\")\n }\n\n this.nodeUpdate = nodeEnter.merge(node);\n\n // Transition to the proper position for the node\n this.nodeUpdate.transition()\n .duration(this.settings.duration)\n .attr(\"transform\", (d) => {\n return \"translate(\" + mirror_factor*d.y + \",\" + d.x + \")\";\n });\n\n\n // Update the node attributes and style\n\n this.nodeUpdate.select('circle.node')\n .attr('r', d => d._children || (!this.model.rooted && d.data.root ) ? 1e-6 : real_node_radius )\n .style(\"fill\", function(d) {\n return d.data.duplication && show_duplications ? 'red' : d._children ? \"lightsteelblue\" : \"#666\";\n })\n .attr('cursor', 'pointer');\n\n this.node_face_update(this.nodeUpdate)\n\n // Remove any exiting nodes\n var nodeExit = node.exit().transition()\n .duration(this.settings.duration)\n .attr(\"transform\", function(d) {\n return \"translate(\" + source.y + \",\" + source.x + \")\";\n })\n .remove();\n\n\n // nullify the triangle\n nodeExit.select(\"path\")\n .attr(\"d\", function (d) {\n return \"M\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0;\n });\n\n if (this.model.settings.has_histogram_data && this.model.settings.show_histogram) {\n // create null stack\n nodeEnter.selectAll(\"g .stackGroup\").remove()\n }\n\n\n // On exit reduce the node circles size to 0\n nodeExit.select('circle')\n .attr('r', 1e-6);\n\n this.node_face_exit(nodeExit)\n\n // Add collapsed triangle\n this.nodeUpdate.each((d,i,nodes) => {\n\n if (d._children) {\n\n d3__WEBPACK_IMPORTED_MODULE_0__.select(nodes[i]).select(\"path\").transition().duration(self_render.settings.duration)\n .attr(\"d\", (d) => {\n\n const average = arr => arr.reduce( ( p, c ) => p + c.data.distance_to_root, 0 ) / arr.length;\n\n var y = average(self_render.getChildLeaves(d)) -d.data.distance_to_root\n\n var y_length = self_render.scale_branch_length(average(self_render.getChildLeaves(d))-d.data.distance_to_root)\n var x_length = self_render.model.settings.tree.node_vertical_size * Math.sqrt(self_render.getChildLeaves(d).length) * collapse_ratio_vertical\n\n\n d.data.triangle_height = 2*x_length\n d.data.triangle_width = y_length\n\n this.node_face_update(d3__WEBPACK_IMPORTED_MODULE_0__.select(nodes[i]) )\n\n\n\n\n return \"M\" + 0 + \",\" + 0 + \"L\" + mirror_factor*y_length + \",\" + (-x_length) + \"L\" + mirror_factor*y_length + \",\" + (x_length) + \"L\" + 0 + \",\" + 0;\n })\n\n }\n if (d.children) {\n d3__WEBPACK_IMPORTED_MODULE_0__.select(nodes[i]).select(\"path\").transition().duration(self_render.settings.duration)\n .attr(\"d\", function (d) {\n d.data.triangle_height = 0\n return \"M\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0 + \"L\" + 0 + \",\" + 0;\n });\n }\n })\n\n // align to tip\n\n if (this.model.settings.align_tip){\n\n if (this.model.settings.has_branch_lenght && this.model.settings.use_branch_lenght) {\n\n // update y pos with branch length\n this.nodes.forEach(d => {\n\n var distance_root_to_tip = this.scale_branch_length(d.data.distance_to_root) + (d.data.triangle_width ? d.data.triangle_width : 0)\n\n if (deepest_tip <distance_root_to_tip ){\n deepest_tip = distance_root_to_tip\n }\n })\n\n // Transition to the proper position for the node\n this.nodeUpdate.transition()\n .duration(this.settings.duration)\n .attr(\"transform\", (d) => {\n\n if (d.children ){\n return \"translate(\" + (mirror_factor*d.y) + \",\" + d.x + \")\";\n }\n\n else if (d._children) {\n d.off_set_to_tip = deepest_tip - this.scale_branch_length(d.data.distance_to_root) - d.data.triangle_width\n return \"translate(\" + (mirror_factor*(d.y + d.off_set_to_tip)) + \",\" + d.x + \")\";\n }\n\n else {\n d.off_set_to_tip = deepest_tip - this.scale_branch_length(d.data.distance_to_root)\n return \"translate(\" + (mirror_factor* (d.y + d.off_set_to_tip)) + \",\" + d.x + \")\";\n }\n\n\n\n\n });\n }\n else{\n\n // update y pos with branch length\n this.nodes.forEach(d => {\n\n var distance_root_to_tip = this.scale_branch_depth(d.data.depth) + (d.data.triangle_width ? d.data.triangle_width : 0)\n\n if (deepest_tip <distance_root_to_tip ){\n deepest_tip = distance_root_to_tip\n }\n })\n\n // Transition to the proper position for the node\n this.nodeUpdate.transition()\n .duration(this.settings.duration)\n .attr(\"transform\", (d) => {\n\n if (d.children ){\n return \"translate(\" + (mirror_factor*d.y) + \",\" + d.x + \")\";\n }\n\n else if (d._children) {\n d.off_set_to_tip = deepest_tip - this.scale_branch_depth(d.data.depth) - d.data.triangle_width\n return \"translate(\" + (mirror_factor*(d.y + d.off_set_to_tip)) + \",\" + d.x + \")\";\n }\n\n else {\n d.off_set_to_tip = deepest_tip - this.scale_branch_depth(d.data.depth)\n return \"translate(\" + (mirror_factor* (d.y + d.off_set_to_tip)) + \",\" + d.x + \")\";\n }\n\n\n\n\n });\n }\n\n\n\n\n }\n\n\n // Add Stack\n if (this.model.settings.has_histogram_data && this.model.settings.show_histogram){\n\n this.nodeUpdate.filter(function(d){\n return d.stackData && d.data.depth > 0\n }).each((d, i, nodes) => {this.render_stack(nodes[i],d)});\n\n }\n\n\n // Store the old positions for transition.\n this.nodes.forEach(function(d){\n d.x0 = d.x;\n d.y0 = mirror_factor * d.y;\n });\n\n\n\n\n\n\n }\n\n render_edges(source){\n\n var self_render = this;\n var mirror_factor = this.model.settings.mirror ? -1 : 1\n var real_edges_width = this.compute_edge_width()\n\n // Update the links...\n var link = this.G.selectAll('path.link')\n .data(this.links, d => { return d.ID || (d.ID = ++this.id_gen); });\n\n // Enter any new links at the parent's previous position.\n var linkEnter = link.enter().insert('path', \"g\")\n .attr(\"class\", \"link\")\n .style(\"cursor\",\"pointer\")\n .style(\"fill\",\"none\")\n .style('stroke-width', real_edges_width + 'px' )\n .attr('d', d => this.square_edges(\n {x: source.x0, y: source.y0},{x: source.x0, y: source.y0}))\n\n var linkUpdate = linkEnter.merge(link);\n\n\n var compared_model = false\n if (this.container_object.api.settings.compareMode && this.container_object.api.bound_container.includes(this.container_object)){\n\n var con1 = this.container_object.api.bound_container[0]\n var con2 = this.container_object.api.bound_container[1]\n\n var other_container = con1 == this.container_object ? con2 : con1\n\n if (other_container.models.length > 0 && other_container.viewer.model && this.model.settings.similarity.includes(other_container.viewer.model.uid) ){\n\n compared_model = other_container.viewer.model.uid\n }\n\n }\n\n // Transition back to the parent element position\n linkUpdate.transition()\n .duration(this.settings.duration)\n .style('stroke', (d) => {return this.color_edge(d, compared_model);})\n .style('stroke-width', real_edges_width + 'px' )\n .attr('d', d => this.square_edges(d, d.parent))\n\n linkUpdate.on('click', (d,i) => {\n if (this.container_object.api.settings.phylostratigraphy){return}\n this.click_edges(d,i)})\n\n // Remove any exiting links\n var linkExit = link.exit().transition()\n .duration(this.settings.duration)\n .attr('d', d => this.square_edges({x: source.x, y: source.y}, {x: source.x, y: source.y}))\n .remove();\n\n }\n\n color_edge(edge, compared_model){\n\n if (edge.data.search_path){ return '#FF0000'}\n\n else if (this.model.settings.style.color_accessor['node'] === \"Topology\" && compared_model !== false && edge.data.elementS[compared_model] ) {\n\n return this.colorScale['node'](edge.data.elementS[compared_model])\n }\n\n else if (this.model.settings.style.color_accessor['node'] === 'color'){\n\n var h = edge.data.extended_informations[this.model.settings.style.color_accessor['node']];\n if (typeof h == \"undefined\" ) {return \"#555\"}\n else {return h}\n\n }\n\n else if (this.model.settings.style.color_accessor['node'] !== null){\n\n var v = edge.data.extended_informations[this.model.settings.style.color_accessor['node']];\n if (typeof v == \"undefined\" ) {return \"#555\"}\n else {return this.colorScale['node'](v)}\n\n }\n\n else {\n return \"#555\"\n }\n\n }\n\n set_color_scale(type){\n\n var type = (typeof type !== 'undefined') ? type : 'node';\n\n var colorScaleDomain = false;\n var colorScaleRange;\n var number;\n\n\n if (typeof this.model != \"undefined\" && this.model) {\n\n\n // If categorical do special\n var acc = this.model.settings.style.color_accessor[type]\n var type_acc = this.model.settings.extended_data_type[acc]\n\n\n if (type_acc == 'cat'){\n\n this.colorScale[type] = this.container_object.api.get_color_scale(acc)\n\n\n\n //var dom = this.model.settings.domain_extended_data[acc]\n //this.colorScale[type] = d3.scaleOrdinal().domain(dom).range(d3.schemePaired);\n return\n }\n\n else if (type_acc == 'color'){\n\n this.colorScale[type] = null\n return\n }\n\n\n\n number = this.model.settings.style.number_domain[type]\n\n\n\n if (this.model.settings.style.color_accessor[type] != null && this.model.settings.style.color_accessor[type] != 'Topology' ) {\n\n var ms = this.model.settings.style;\n\n var ca = ms.color_accessor[type];\n\n if (ms.color_extent_max[type][ca] == ms.color_extent_min[type][ca]){\n this.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate( ms.color_extent_max[type][ca], ms.color_extent_max[type][ca]-1)\n }else{\n this.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate( ms.color_extent_max[type][ca], ms.color_extent_min[type][ca])\n }\n\n\n colorScaleRange = this.model.settings.style.color_domain[type];\n\n }\n\n else {\n this.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate(1,0)\n colorScaleRange = this.model.settings.style.color_domain[type];\n }\n\n\n\n }\n else {\n\n number = '5';\n colorScaleRange = ['#253494', '#2C7FB8', '#41B6C4', '#C7E9B4', '#FFFFCC']\n this.intercolor[type] = d3__WEBPACK_IMPORTED_MODULE_0__.interpolate(1, 0);\n }\n\n\n switch (number) {\n case '2':\n colorScaleDomain = [this.intercolor[type](0), this.intercolor[type](1)]\n break;\n case '3':\n colorScaleDomain = [this.intercolor[type](0), this.intercolor[type](0.5) , this.intercolor[type](1)]\n break;\n case '4':\n colorScaleDomain = [this.intercolor[type](0), this.intercolor[type](0.33), this.intercolor[type](0.66) , this.intercolor[type](1)]\n break;\n case '5':\n colorScaleDomain = [this.intercolor[type](0), this.intercolor[type](0.25) ,this.intercolor[type](0.5) ,this.intercolor[type](0.75) , this.intercolor[type](1)]\n\n }\n\n\n this.colorScale[type] = d3__WEBPACK_IMPORTED_MODULE_0__.scaleLinear()\n .domain(colorScaleDomain)\n .range(colorScaleRange);\n\n\n\n }\n\n separate(a, b) {\n\n var spacer = 1;\n\n spacer += a._children ? Math.sqrt(this.getChildLeaves(a).length) * collapse_ratio_vertical : 0\n spacer += b._children ? Math.sqrt(this.getChildLeaves(b).length) * collapse_ratio_vertical : 0\n\n return spacer;\n }\n\n zoomed({transform}) {\n\n var zooming = this.model.zoom ? transform.k != this.model.zoom.k : false;\n\n\n d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).attr(\"transform\", transform);\n\n if (this.interface && this.model.settings.use_branch_lenght) {\n this.interface.update_scale_value(transform.k);\n }\n\n if (typeof this.G != \"undefined\" && this.model != false ){\n\n if ((zooming && !this.model.big_tree) || this.force_zoom_rescaling) {\n\n var on_screen_text_size = this.compute_node_font_size()\n var subsampling_index = -1\n var subsampling_module = 1 + Math.floor((on_screen_text_size)/this.model.settings.tree.node_vertical_size)\n\n // update x pos with branch length\n this.nodes.forEach(d => {\n\n\n if (!this.model.settings.display_leaves ){\n d.subsampled = false;\n return\n }\n\n if (!this.model.settings.subsample_label){\n d.subsampled = true;\n return\n }\n\n\n\n if (!d.children ) {\n\n if (d.data.collapse && d.data.triangle_height >= on_screen_text_size){\n d.subsampled = true\n return\n }\n\n subsampling_index += 1;\n d.subsampled = (subsampling_index % subsampling_module === 0) ;\n }\n\n\n })\n\n\n var real_node_radius = this.compute_node_radius()\n this.G.selectAll('g.node').selectAll('circle').attr('r', (d) => {\n\n return d.data.collapse || (!this.model.rooted && d.data.root) ? 1e-6 : real_node_radius }\n )\n\n this.node_face_update(this.G.selectAll('g.node'))\n\n var real_edges_width = this.compute_edge_width()\n this.G.selectAll('path.link').style('stroke-width', real_edges_width + 'px')\n\n }\n\n\n\n this.model.store_zoomTransform(transform)\n\n\n\n\n // if lock zoom activate\n if (this.container_object.api.settings.compareMode && this.container_object.api.settings.sync_zoom && !this.container_object.api.settings.syncing_zoom){\n\n this.container_object.api.settings.syncing_zoom = true\n\n var other_container = this.container_object.api.bound_container[0] === this.container_object ? this.container_object.api.bound_container[1] : this.container_object.api.bound_container[0]\n\n if (other_container.models.length > 0 && other_container.viewer.model != false){\n\n var m1 = this.get_height_hierarchy().middle*transform.k\n var m2 = other_container.viewer.get_height_hierarchy().middle*transform.k\n\n other_container.viewer.set_zoom(transform.k,transform.x,transform.y -m2 + m1 )\n\n }\n this.container_object.api.settings.syncing_zoom = false\n\n\n\n }\n\n\n\n\n }\n\n\n }\n\n square_edges(s, d) {\n\n var mirror_factor = this.model.settings.mirror ? -1 : 1\n\n\n if (!this.model.settings.align_tip || isNaN(s.off_set_to_tip) ){\n return \"M\" + mirror_factor*s.y + \",\" + s.x + \"L\" + mirror_factor*d.y + \",\" + s.x + \"L\" + mirror_factor*d.y + \",\" + d.x;\n\n }\n else {\n return \"M\" + (mirror_factor * (s.y + s.off_set_to_tip)) + \",\" + s.x + \"L\" + mirror_factor * d.y + \",\" + s.x + \"L\" + mirror_factor * d.y + \",\" + d.x;\n }\n }\n\n click_nodes(event, node) {\n\n var menu = []\n\n // phylostratigraphy mode\n if (this.container_object.api.settings.phylostratigraphy && event.target.tagName === 'rect'){\n\n this.container_object.api.settings.callback_stack_redirection(node.data.taxid,node.parent.data.taxid);\n return\n\n }\n\n // Default mode\n else {\n if (node.parent != null){\n\n var menu = [\n {\n title: node.data.collapse ? 'Expand' : 'Collapse' ,\n action: () => {this.container_object.trigger_(\"collapse\", node.data, node)}\n },\n {\n title: 'Collapse All' ,\n action: () => {this.container_object.trigger_(\"collapseAll\", node.data, node)}\n },\n {\n title: 'Expand All' ,\n action: () => {this.container_object.trigger_(\"expandAll\", node.data, node)}\n },\n {\n title: 'Swap subtrees' ,\n action: () => {this.container_object.trigger_(\"swap\", node.data, node)}\n }\n ]\n }\n else { // root\n var menu = [\n {\n title: 'Expand All' ,\n action: () => {this.container_object.trigger_(\"expandAll\", node.data, node)}\n },\n {\n title: 'Swap subtrees' ,\n action: () => {this.container_object.trigger_(\"swap\", node.data, node)}\n },\n\n ]\n }\n\n if (this.container_object.api.settings.phylostratigraphy){\n\n menu.push({\n title: 'Open genome page' ,\n action: () => {this.container_object.api.settings.callback_ancestral_genome_redirection(node.data.taxid)}\n })\n\n }\n\n\n }\n\n\n menu.push({\n title: 'Close' ,\n action: () => {\n d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#menu-node\").remove()\n }\n })\n\n var t = this.d3.zoomTransform(this.svg.node())\n\n let div_i = this.container_object.div_id;\n\n let py = document.getElementById(div_i).offsetTop\n let px = document.getElementById(div_i).offsetLeft\n\n var xy = t.invert([event.pageX-px,event.pageY-py]);\n\n if(this.model.settings.mirror){\n var x= -xy[0]\n var y = xy[1]\n }\n else{\n var x= xy[0]\n var y = xy[1]\n }\n\n this.create_menu_click(menu, x,y,event,node)\n\n }\n\n click_edges(event,edge) {\n\n var t = this.d3.zoomTransform(this.svg.node())\n\n let div_i = this.container_object.div_id;\n\n let py = document.getElementById(div_i).offsetTop\n let px = document.getElementById(div_i).offsetLeft\n\n var xy = t.invert([event.pageX-px,event.pageY-py]);\n\n // because Chrome returns a MouseEvent for d3.event while Firefox returns a click. \\o/\n var node_from_event = event.path ? event.path[0].__data__ : event.target.__data__\n\n\n\n var menu = [{\n title: 'Reroot' ,\n action: () => {\n this.container_object.trigger_(\"reroot\", node_from_event.data)\n }\n }, {\n title: 'Trim subtree' ,\n action: () => {\n this.container_object.trigger_(\"trim\", node_from_event)\n }\n },{\n title: 'Open as new tree' ,\n action: () => {\n this.container_object.create_model_from_hierarchy_node(node_from_event)\n\n }\n },\n {\n title: 'Close' ,\n action: () => {\n d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#menu-node\").remove()\n }\n }]\n\n if(this.model.settings.mirror){\n var x= -xy[0]\n var y = xy[1]\n }\n else{\n var x= xy[0]\n var y = xy[1]\n }\n\n this.create_menu_click(menu,x,y, event, edge)\n }\n\n create_menu_click(menu, x ,y, event, e){\n\n if (this.model.settings.mirror){\n x=-x;\n }\n\n d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#menu-node\").remove()\n\n /* build context menu */\n var m = this.G.append(\"g\")\n m.style('display', 'none');\n m.attr('id', 'menu-node');\n\n\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n\n var fs = 20/k // scaled font size\n var vps = 12/k // scaled vertical margin\n var hps = 10/k // scaled horizontal margin\n var rs = 8/k // scaled radius size\n\n var r = m.append('rect')\n .attr('height', menu.length * (fs+vps) + vps + 'px')\n .style('fill', \"#eee\")\n .attr('rx', rs)\n .attr('ry', rs)\n\n var gg = m.selectAll('menu_item')\n .data(menu)\n .enter()\n .append('g')\n gg.attr('cursor', 'pointer')\n .attr('transform', function(d, i) {\n return 'translate(' + hps + ',' + ((i + 1) * (fs+vps)) + ')';\n })\n .on('mouseover', function(d){\n d3__WEBPACK_IMPORTED_MODULE_0__.select(this).style('fill', 'steelblue');\n })\n .on('mouseout', function(d){\n d3__WEBPACK_IMPORTED_MODULE_0__.select(this).style('fill', 'black');\n })\n .on('click', function(d,i){\n i.action(d);\n })\n\n var close = null\n\n var t = gg.append('text')\n .attr('cursor', 'pointer')\n .attr(\"font-weight\", (d) => {\n return d.title === \"Close\" ? 900 : 400\n })\n .style('font-size', d => {\n return fs + 'px';\n })\n .text(function(d) {\n return d.title;\n })\n\n\n r.attr('width', 20 );\n m.attr('transform', 'translate(' + x + ',' + y + ')');\n m.style('display', 'block');\n m.datum(event);\n\n\n\n setTimeout(function(){\n\n var w = 0;\n var w_close = 0\n\n t.each(function(d){\n\n var l = d3__WEBPACK_IMPORTED_MODULE_0__.select(this).node().getComputedTextLength();\n if (l > w) w = l;\n\n if (d.title == \"Close\"){\n w_close = l;\n }\n\n })\n\n var w_menu = w + 2*hps\n r.attr('width', w_menu );\n\n t.each(function(d){\n if (d.title == \"Close\"){\n d3__WEBPACK_IMPORTED_MODULE_0__.select(this).attr('transform', 'translate(' + (w - w_close)/2 + ',' + 0 + ')');\n }\n })\n\n\n }, 50)\n\n\n\n\n\n }\n\n apply_collapse_from_data_to_d3(data, d){\n if (data.collapse && d.children != null ) {\n d._children = d.children;\n d.children = null;\n }\n else if (data.collapse == false && d._children != null) {\n d.children = d._children;\n d._children = null;\n\n }\n\n }\n\n apply_collapseAll_from_data_to_d3(data, root_node){\n\n var node = root_node , nodes = [node], children, i, index = -1;\n\n while (node = nodes.pop()) {\n\n\n this.apply_collapse_from_data_to_d3(node.data, node)\n\n\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n\n if (children = node._children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n\n }\n\n }\n\n apply_expandAll_from_data_to_d3(data, root_node){\n\n var node = root_node , nodes = [node], children, i, index = -1;\n\n while (node = nodes.pop()) {\n\n this.apply_collapse_from_data_to_d3(node.data, node)\n\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n\n if (children = node._children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n\n }\n\n }\n\n apply_swap_from_data_to_d3(data, d){\n\n var e = d.children.pop()\n d.children.unshift(e)\n\n }\n\n apply_unswap_from_data_to_d3(data, d){\n\n var e = d.children.shift()\n d.children.push(e)\n\n }\n\n set_zoom(k,x,y) {\n\n d3__WEBPACK_IMPORTED_MODULE_0__.select('#svg' + this.uid )\n .call(this.zoom.transform, d3__WEBPACK_IMPORTED_MODULE_0__.zoomIdentity.translate(x,y).scale(k) );\n }\n\n get_height_hierarchy(){\n\n\n var max_x = 0;\n var min_x = 9999999999;\n\n this.hierarchy.each(d => {\n\n if(d.x > max_x){max_x= d.x}\n if(d.x < min_x){min_x= d.x}\n }\n );\n\n\n return {\n 'h':max_x - min_x,\n 'max_x':max_x ,\n 'min_x': min_x,\n 'middle': max_x -(max_x - min_x)/2\n }\n\n }\n\n get_number_visible_tree_tips_at_depth(depth){\n\n var tips = 0;\n\n this.model.traverse(this.model.data, function(node,children){\n\n if (node.depth > depth) {return}\n\n if (children == null || node.collapse == true) {\n tips+=1\n }\n } )\n\n return tips\n\n }\n\n maximise_zoom(){\n\n var old_zoom = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node())\n this.container_object.add_action('Stretch tree', this, this.render_with_settings, [old_zoom.k, old_zoom.x,old_zoom.y,this.model.settings.tree.node_horizontal_size, []] )\n // Adjust Zoom-y to fit height\n var r = this.get_height_hierarchy()\n var vh = this.height - this.settings.style.offset_top_fit\n var th = (Math.abs(r.min_x)+Math.abs(r.max_x))\n var h_scale = vh/th // ratio\n\n\n\n if (this.model.settings.mirror){\n var x_tr = this.width - this.hierarchy.x + this.settings.style.translate_top_fit\n }\n else{\n var x_tr = - this.hierarchy.x + this.settings.style.translate_top_fit\n }\n\n var off_rooting = (Math.abs(r.min_x)-Math.abs(r.max_x))/2\n var y_tr = -this.hierarchy.y + this.height/2 + off_rooting*h_scale\n this.set_zoom(h_scale, x_tr, y_tr)\n\n\n var w = 0\n\n this.hierarchy.leaves().forEach((e) => {\n let posy = e.y\n if (e.data.collapse){\n posy += e.data.triangle_width\n }\n w = posy > w ? posy : w\n })\n\n var ns = this.model.settings.tree.node_horizontal_size\n var w_scale = (this.width - 80)/(w*h_scale)\n\n this.container_object.modify_node_size('horizontal', (ns * w_scale) - ns )\n\n var real_edges_width = this.compute_edge_width()\n this.G.selectAll('path.link').style('stroke-width', real_edges_width + 'px')\n\n }\n\n fit_to_viewer_height(){\n\n var collapsed = this.model.get_all_collapse(this.model.data)\n var old_zoom = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node())\n this.container_object.add_action('Compact tree', this, this.render_with_settings, [old_zoom.k, old_zoom.x,old_zoom.y,this.model.settings.tree.node_horizontal_size, collapsed] )\n\n // Increment Collapsed Depth until \"Visible leaf\" > \"Max visible leaves\"\n var depth;\n for (depth = 1; depth < this.model.settings.tree.max_depth; depth++) {\n\n var X = this.get_number_visible_tree_tips_at_depth(depth)\n if (X > this.settings.max_visible_leaves) {\n break\n }\n }\n\n this.update_collapse_level(depth, true)\n\n\n var r = this.get_height_hierarchy()\n var estimated_height = r.h\n\n // Adjust Zoom-y to fit height\n var vh = this.height - this.settings.style.offset_top_fit // MARGIN\n var th = (Math.abs(r.min_x)+Math.abs(r.max_x))\n //var th = estimated_height // this.G.node().getBBox().height\n var h_scale = vh/th\n\n\n if (this.model.settings.mirror){\n var x_tr = this.width - this.hierarchy.x + this.settings.style.translate_top_fit\n }\n else{\n var x_tr = - this.hierarchy.x + this.settings.style.translate_top_fit\n }\n\n var off_rooting = (Math.abs(r.min_x)-Math.abs(r.max_x))/2\n var y_tr = -this.hierarchy.y + this.height/2 + off_rooting*h_scale\n //var y_tr = (this.height/2) - this.hierarchy.y - (r.min_x + (r.max_x - r.min_x)/2)/2\n\n this.set_zoom(h_scale, x_tr, y_tr)\n\n\n var w = 0\n\n\n this.hierarchy.leaves().forEach((e) => {\n\n let posy = e.y\n\n if (e.data.collapse){\n posy += e.data.triangle_width\n }\n\n w = posy > w ? posy : w\n })\n\n\n var ns = this.model.settings.tree.node_horizontal_size\n var w_scale = (this.width - 80)/(w*h_scale)\n\n this.container_object.modify_node_size('horizontal', (ns * w_scale) - ns )\n\n var real_edges_width = this.compute_edge_width()\n this.G.selectAll('path.link').style('stroke-width', real_edges_width + 'px')\n\n\n\n\n\n }\n\n render_with_settings(scale, x,y,node_size, collapsed){\n\n if (collapsed.length > 0){\n this.model.apply_collapse_to_list(collapsed)\n this.set_data(this.model)\n this.render(this.hierarchy)\n }\n\n this.set_zoom(scale, x, y)\n\n var delta_node_size = -(this.model.settings.tree.node_horizontal_size - node_size)\n\n if (delta_node_size!=0){\n this.container.modify_node_size('horizontal', -(this.model.settings.tree.node_horizontal_size - node_size) )\n }\n\n var real_edges_width = this.compute_edge_width()\n this.G.selectAll('path.link').style('stroke-width', real_edges_width + 'px')\n\n }\n\n // TUNNING todo should be in Controller\n /*\n modify_node_size(axis, variation){\n\n if (axis === 'vertical') {\n if ((this.model.settings.tree.node_vertical_size + variation) <= 0){return}\n this.model.settings.tree.node_vertical_size += variation\n //this.interface.update_slider(this.interface.slider_v, this.model.settings.tree.node_vertical_size)\n }\n else if (axis === 'horizontal') {\n if ((this.model.settings.tree.node_horizontal_size + variation) <= 0){return}\n this.model.settings.tree.node_horizontal_size += variation\n //this.interface.update_slider(this.interface.slider_h, this.model.settings.tree.node_horizontal_size)\n }\n\n this.d3_cluster.nodeSize([ this.model.settings.tree.node_vertical_size,this.model.settings.tree.node_horizontal_size])\n this.build_d3_cluster()\n this.render(this.hierarchy)\n\n\n if (this.interface && this.model.settings.use_branch_lenght) {\n var k = this.d3.zoomTransform(d3.select(\"#master_g\" + this.uid).node()).k\n this.interface.update_scale_value(k);\n }\n\n }\n\n */\n\n toggle_use_length(){\n this.model.settings.use_branch_lenght = !this.model.settings.use_branch_lenght\n\n if (!this.model.settings.use_branch_lenght){this.interface.remove_scale()}\n else{this.interface.add_scale()}\n\n this.build_d3_data()\n this.render(this.hierarchy)\n\n this.maximise_zoom()\n }\n\n toggle_align_tip(){\n this.model.settings.align_tip = !this.model.settings.align_tip\n\n this.render(this.hierarchy)\n }\n\n toggle_mirror(){\n this.model.settings.mirror = !this.model.settings.mirror\n\n this.build_d3_data()\n this.render(this.hierarchy)\n\n var zoom = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node())\n this.set_zoom(zoom.k,this.width-zoom.x,zoom.y)\n\n\n }\n\n toggle_internal_label(){\n\n this.model.settings.display_internal_label = !this.model.settings.display_internal_label\n this.render(this.hierarchy)\n }\n\n toggle_duplication(){\n this.model.settings.display_duplication = !this.model.settings.display_duplication\n this.render(this.hierarchy)\n\n }\n\n toggle_leaves(){\n this.model.settings.display_leaves = !this.model.settings.display_leaves\n this.render(this.hierarchy)\n\n }\n\n toggle_tooltips(){\n this.model.settings.show_tooltips = !this.model.settings.show_tooltips\n this.render(this.hierarchy)\n\n }\n\n toggle_subsample(){\n this.model.settings.subsample_label = !this.model.settings.subsample_label\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n\n if(this.model.settings.subsample_label){\n this.model.settings.tree.font_size = this.model.settings.tree.font_size*k\n }\n else{\n this.model.settings.tree.font_size = this.model.settings.tree.font_size/k\n }\n\n this.render(this.hierarchy)\n\n //this.interface.update_slider(this.interface.slider_t, this.model.settings.tree.font_size)\n\n }\n\n toggle_multiple_search(){\n this.model.settings.multiple_search = !this.model.settings.multiple_search\n }\n\n toggle_use_meta_for_leaf(){\n this.model.settings.use_meta_for_leaf = !this.model.settings.use_meta_for_leaf\n }\n\n toggle_use_meta_for_node(){\n this.model.settings.use_meta_for_node = !this.model.settings.use_meta_for_node\n }\n\n\n // stack\n\n toggle_only_support(){\n\n this.model.settings.stack.only_support = !this.model.settings.stack.only_support\n\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n toggle_show_stack_number(){\n if (this.model.settings.stack.showHistogramValues){\n this.model.settings.stack.showHistogramValues = false\n }\n else{\n this.model.settings.stack.showHistogramValues = true\n }\n\n\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n toggle_height_max_ratio(){\n if (this.model.settings.stack.maxStackHeight === 'max'){\n this.model.settings.stack.maxStackHeight = 'ratio'\n }\n else{\n this.model.settings.stack.maxStackHeight = 'max'\n }\n\n\n this.build_d3_data()\n this.render(this.hierarchy)\n\n }\n\n update_stack_height(val){\n this.model.settings.stack.stackHeight = val\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n update_stack_width(val){\n this.model.settings.stack.stackWidth = val\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n update_stack_font(val){\n this.model.settings.stack.legendTxtSize = val\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n update_stack_type(val){\n this.model.settings.stack.type = val\n this.build_d3_data()\n this.render(this.hierarchy)\n }\n\n\n update_collapse_level(val, refresh_interface){\n\n var refresh_interface = (typeof refresh_interface !== 'undefined') ? refresh_interface : true;\n\n\n this.model.settings.collapse_level = val\n this.container_object.collapse_depth(this.model.settings.collapse_level, this.model.data)\n //this.set_data(this.model, refresh_interface)\n this.build_d3_cluster()\n this.render(this.hierarchy)\n\n if (refresh_interface){\n this.interface = new _interface_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this, this.container_object)\n }\n else{\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n if (this.interface && this.model.settings.use_branch_lenght){\n this.interface.update_scale_value(k);\n }\n\n }\n\n\n\n }\n\n\n\n toggle_dessimode(){\n this.model.settings.dessimode = !this.model.settings.dessimode\n\n if (this.model.settings.dessimode) {\n\n var r= Math.floor(Math.random() * 101);\n\n if (r > 50) {alert(\"[Common] If I may just give a little feedback... [ following 1200 lines truncated]\")}\n else if (r > 10) {alert(\"[Rare] If I may just give a little feedback... [ following 1200 lines truncated]\")}\n else{alert(\"[Lengendary] Have you heard about banana ?\")}\n\n\n }\n }\n\n // HELPER\n getChildren(d) {\n return d._children ? d._children : (d.children ? d.children : []);\n }\n\n getChildLeaves(d) {\n\n if (d.children || d._children) {\n var leaves = [];\n var children = this.getChildren(d);\n for (var i = 0; i < children.length; i++) {\n leaves = leaves.concat(this.getChildLeaves(children[i]));\n }\n return leaves;\n } else {\n return [d];\n }\n }\n\n get_random_node(){\n var ns = []\n this.hierarchy.each(d => ns.push(d));\n return ns[Math.floor(Math.random() * ns.length)];\n }\n\n // UTILS\n centerNode(source) {\n\n //this.svg.transition().call(this.zoom.translateTo, source.y0,source.x0)\n this.svg.transition().call(this.zoom.transform, d3__WEBPACK_IMPORTED_MODULE_0__.zoomIdentity.translate(this.width/2-source.y0,this.height/2-source.x0).scale(1) )\n\n }\n\n zoom_in(){\n this.svg.transition().call(this.zoom.scaleBy, 2)\n }\n\n zoom_out(){\n this.svg.transition().call(this.zoom.scaleBy, 0.5)\n }\n\n zoom_by(val){\n this.svg.transition().call(this.zoom.scaleBy, val)\n }\n\n // STACK\n render_stack(d,e){\n\n var ms = this.model.settings.stack\n\n var data = (ms.has_support && ms.only_support ) ? e.stackData_support[ms.type] : e.stackData[ms.type];\n\n\n var stackGroup = this.d3.select(d);\n\n\n\n var xDistanceFromNode = parseInt(ms.xInitialRightMargin) + parseInt(ms.stackWidth)\n var txtDistanceFromBar = parseInt(ms.stackWidth) + parseInt(ms.margin)\n\n if (ms.showHistogramValues) {\n\n var legends = stackGroup.selectAll(\".legendtxt\")\n .data(data)\n .enter()\n .append(\"text\")\n .classed(\"legendtxt\", true)\n .text(function (d) {\n return d[0].realsize !== 0 ? d[0].realsize : \"\";\n }).attr(\"x\", function () {\n return (0 - xDistanceFromNode) + txtDistanceFromBar;\n }).attr(\"y\", function (d) {\n // TODO adjust based on feedback\n if(d[0].y0 < 0){\n // legend below zero line\n return parseInt(ms.legendTxtSize)+2;\n }\n\n // if bar height smaller than text size, put text on bottom\n if(d[0].y < parseInt(ms.legendTxtSize) && d[0].y0 > 0) {\n return -(d[0].y0 - d[0].y);\n }\n\n // center legend text vertically with some extra padding\n return -(d[0].y0 - ((d[0].y + parseInt(ms.legendTxtSize))/2));\n }).attr(\"font-size\", parseInt(ms.legendTxtSize)).attr(\"stroke\", \"black\")\n\n }\n if (ms.showHistogramValues) { // todo shulld be showHistogramSummaryValue\n\n var summaryLegend = stackGroup.selectAll(\".stackGroup\")\n .data(function (d) {\n return [d];\n })\n .enter()\n .append(\"text\")\n .classed(\"legendsummarytxt\", true)\n .text(function (d) {\n if (ms.has_support && ms.only_support){\n var summary_number = ms.type === \"genes\" ? d.data.nr_hogs_support : d.numberEvents_; // todo add nr_proteins and numberEvents\n }\n else{\n var summary_number = ms.type === \"genes\" ? d.data.nr_hogs : d.numberEvents; // todo add nr_proteins and numberEvents\n }\n\n return summary_number > 0 && typeof summary_number == 'number' ? summary_number : \"\";\n }).attr(\"x\", function () {\n return 0 - (xDistanceFromNode + 30)\n }).attr(\"y\", function (d) {\n return 0 - ms.margin;\n }).attr(\"font-size\", parseInt(ms.legendTxtSize)).attr(\"stroke\", \"black\")\n\n }\n\n var stackSlices = stackGroup.selectAll(\"rect\")\n .data(data)\n .enter()\n .append(\"rect\");\n\n var slices = stackSlices\n .style(\"fill\", (d,i,node) => { return this.settings.stack.colorMap[d[0].sizelbl]\n })\n .style(\"opacity\", 0.8)\n .attr(\"y\", function (d) {\n return 0 - d[0].y0 - 0.5;\n })\n .attr(\"x\", function (d) {\n return 0 - xDistanceFromNode;\n })\n .attr(\"height\", function (d) {\n return d[0].size\n })\n .attr(\"width\", ms.stackWidth)\n\n d3__WEBPACK_IMPORTED_MODULE_0__.selectAll(\".stackGroup\").moveToFront();\n\n\n\n }\n\n compute_color_map_stack(){\n\n var l = this.settings.stack.labels\n var c = this.settings.stack.colors\n\n var colMap = c.reduce(function(colMap, col, index) {\n\n colMap[l[index]] = col;\n return colMap;\n }, {})\n\n return colMap\n\n }\n\n getStackNormalizer(d, type){\n\n var ms = this.model.settings.stack\n\n var max_genome = (ms.has_support && ms.only_support) ? this.model.largestGenome_support : this.model.largestGenome\n var max_event = (ms.has_support && ms.only_support) ? this.model.largestGenome_support : this.model.largestGenome\n\n\n if(type === 'genes' || !type){\n\n if(ms.maxStackHeight === \"max\" && max_genome > 0){\n var normalizer = ms.stackHeight / max_genome;\n } else if(Number.isInteger(ms.maxStackHeight)){\n var normalizer = ms.maxStackHeight / (d.retained + d.duplicated + d.gained + Math.abs(d.lost));\n } else {\n var normalizer = ms.stackHeight / (d.retained + d.duplicated + d.gained + Math.abs(d.lost));\n }\n\n } else {\n\n if(ms.maxStackHeight === \"max\" && max_event > 0){\n var normalizer = ms.stackHeight / max_event;\n } else if(Number.isInteger(ms.maxStackHeight)){\n var normalizer = m.maxStackHeight / (d.duplications + d.gained + Math.abs(d.lost));\n } else {\n var normalizer = ms.stackHeight / (d.duplications + d.gained + Math.abs(d.lost));\n }\n\n }\n\n return normalizer;\n\n }\n\n barStack(seriesDataAll, type, only_support = false) {\n\n var data;\n\n if(type === 'genes' || !type) {\n data = [[{}], [{}], [{}], [{}]];\n } else {\n data = [[{}], [{}], [{}]];\n }\n\n var size = 0;\n if (only_support){\n var d = seriesDataAll.data.evolutionaryEvents_support;\n }\n else{\n var d = seriesDataAll.data.evolutionaryEvents;\n }\n\n var posBase = 0; // positive base\n var stackIndex = 0;\n var seriesIndex = 0;\n\n var normalizer = this.getStackNormalizer(d, type);\n\n /* in case there's no eveolutionary events */\n normalizer = !isFinite(normalizer) ? 1 : normalizer;\n\n if (typeof d.gained == 'undefined'){\n d.gained = 0\n }\n\n if (typeof d.gained == 'undefined'){\n d.gained = 0\n }\n\n if (typeof d.retained == 'undefined'){\n d.retained = 0\n }\n\n if (typeof d.duplicated == 'undefined'){\n d.duplicated = 0\n }\n\n if (typeof d.duplications == 'undefined'){\n d.duplications = 0\n }\n\n if (typeof d.lost == 'undefined'){\n d.lost = 0\n }\n\n\n\n\n\n\n var realSize;\n var StackSizeretained = (d.retained) ? stackScale(d.retained, normalizer) : 0;\n var StackSizeDuplicated = (d.duplicated) ? stackScale(d.duplicated, normalizer) : 0;\n var StackSizeDuplication = (d.duplications) ? stackScale(d.duplications, normalizer) : 0;\n var StackSizeGained = (d.gained) ? stackScale(d.gained, normalizer) : 0;\n var StackSizeLost = (d.lost) ? stackScale(d.lost, normalizer) : 0;\n var posStackSize = StackSizeGained + StackSizeDuplicated + StackSizeretained;\n\n if(type === 'genes' || !type){\n\n realSize = Math.abs(d.retained) > 0 ? Math.abs(d.retained) : 0;\n var posBase = posBase + StackSizeretained;\n data[stackIndex][seriesIndex] = new seriesElement('Retained', realSize, StackSizeretained, posBase, posStackSize)\n stackIndex++;\n\n realSize = Math.abs(d.duplicated);\n var posBase = posBase + StackSizeDuplicated\n data[stackIndex][seriesIndex] = new seriesElement('Duplicated', realSize, StackSizeDuplicated, posBase, posStackSize)\n stackIndex++;\n } else {\n\n realSize = Math.abs(d.duplications);\n var posBase = posBase + StackSizeDuplication\n data[stackIndex][seriesIndex] = new seriesElement('Duplications', realSize, StackSizeDuplication, posBase, posStackSize)\n stackIndex++;\n }\n\n realSize = Math.abs(d.gained);\n var posBase = posBase + StackSizeGained\n data[stackIndex][seriesIndex] = new seriesElement('Gained', realSize, StackSizeGained, posBase, posStackSize)\n stackIndex++;\n realSize = Math.abs(d.lost);\n /* move lost down a little to make it easier to hover it and not the node line */\n data[stackIndex][seriesIndex] = new seriesElement('Lost', realSize, StackSizeLost, -1, posStackSize)\n\n function seriesElement(sizeLbl, realSize, size, y0, posStackSize){\n this.sizelbl = sizeLbl\n this.realsize = realSize\n this.size = Math.abs(size)\n this.y = size\n this.y0 = y0\n this.posStackSize = posStackSize;\n }\n\n function stackScale(val, normalizer){\n return val * normalizer;\n }\n\n data.extent = d3__WEBPACK_IMPORTED_MODULE_0__.extent(\n d3__WEBPACK_IMPORTED_MODULE_0__.merge(\n d3__WEBPACK_IMPORTED_MODULE_0__.merge(\n data.map(function(e) {\n return e.map(function(f) {\n return [f.y0, f.y0 - f.size]\n })\n })\n )\n )\n )\n\n return data;\n }\n\n isOdd(num) { return num % 2;}\n\n compute_node_font_size(){\n\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n\n if (!this.model.settings.subsample_label){\n k=1\n }\n\n var fs = this.model.settings.tree.font_size/k ;\n\n return fs\n\n /*\n if (d._children && fs > d.data.triangle_height){\n fs = d.data.triangle_height\n }\n\n var max_leave = this.model.settings.tree.node_vertical_size*k\n\n if (!d.children && !d._children && fs > max_leave){\n fs = max_leave\n }\n\n return fs+ \"px\"\n\n\n */\n }\n\n compute_node_radius(){\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n var nr = this.model.settings.tree.node_radius/k ;\n return (nr > this.model.settings.tree.node_vertical_size/2) ? this.model.settings.tree.node_vertical_size/2 : nr\n }\n\n compute_edge_width(){\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n var ew = this.model.settings.tree.line_width/k;\n return (ew > this.model.settings.tree.node_vertical_size/2) ? this.model.settings.tree.node_vertical_size/2 : ew\n }\n\n get_label_extended_information(node, type){\n return (type == 'Name') ? node.data.name : node.data.extended_informations[type]\n }\n\n node_face_enter(nodeEnter){\n\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n\n var on_screen_text_size = this.compute_node_font_size()\n var show_lt = this.model.settings.display_internal_label_left_top !== false\n var show_lb = this.model.settings.display_internal_label_left_bottom !== false\n var mirror_factor = this.model.settings.mirror ? true : false;\n\n // Add labels for the nodes\n nodeEnter.append('text')\n .attr(\"class\", \"right\")\n .attr(\"dy\", \".35em\")\n .style('font-size', d => {\n\n var collapse_text = false\n if (d.data.collapse){\n collapse_text = d.data.triangle_height >= on_screen_text_size + 'px' ? true : false\n }\n\n return d.subsampled || collapse_text ? on_screen_text_size : '0px' ;\n })\n .attr(\"font-weight\", (d) => {\n return 400\n //return d.children || d._children ? 900 : 400\n })\n .attr('fill', (d) => {\n return \"#212529\";\n })\n .attr(\"y\", (d) => {\n if (d.parent == null){return 0}\n else if (d.children || d._children){\n if (d.children && this.isOdd(d.children.length)){\n return 13\n }\n if (d._children && this.isOdd(d._children.length)){\n return 13 // todo internal name offsetted if collapse\n }\n return 0\n }\n return 0\n })\n .attr(\"x\", function(d) {\n var scale = (d.children || d._children) ? 1 : k\n return d.parent == null || mirror_factor ? -13/scale : 13/scale;\n })\n .attr(\"text-anchor\", function(d) {\n return d.parent == null || mirror_factor ? \"end\" : \"start\"; // todo better deal with internal name\n })\n .text(function(d) { return d.data.name; });\n\n\n nodeEnter.filter(function(d) { return (d.children || d._children); })\n .append('text')\n .attr(\"class\", \"left_top\")\n .attr(\"dy\", \".35em\")\n //.attr(\"alignment-baseline\", \"ideographic\" )\n .style('font-size', d => {\n return show_lt ? this.model.settings.style.font_size_internal + 'px' : '0px' ;\n })\n .attr(\"font-weight\", (d) => {\n return 400\n })\n .attr(\"y\", (d) => {\n return -13\n })\n .attr(\"x\", function(d) {\n return mirror_factor ? 8 : -8;\n })\n .attr(\"text-anchor\", function(d) {\n\n return mirror_factor ? \"start\" : \"end\"\n })\n .text( (d) => {\n return \"\";\n })\n\n nodeEnter.filter(function(d) { return (d.children || d._children); })\n .append('text')\n .attr(\"class\", \"left_bottom\")\n .attr(\"dy\", \".35em\")\n //.attr(\"alignment-baseline\", \"hanging\" )\n .style('font-size', d => {\n return show_lb ? this.model.settings.style.font_size_internal + 'px': '0px' ;\n })\n .attr(\"font-weight\", (d) => {\n return 400\n })\n .attr(\"y\", (d) => {\n return 13\n })\n .attr(\"x\", function (d) {\n return mirror_factor ? 8 : -8;\n })\n .attr(\"text-anchor\", function (d) {\n\n return mirror_factor ? \"start\" : \"end\"\n })\n .text( (d) => {\n return \"\";\n })\n }\n\n node_face_update(nodes){\n\n var on_screen_text_size = this.compute_node_font_size()\n var k = this.d3.zoomTransform(d3__WEBPACK_IMPORTED_MODULE_0__.select(\"#master_g\" + this.uid).node()).k\n var show_r = this.model.settings.display_internal_label !== false\n var show_lt = this.model.settings.display_internal_label_left_top !== false\n var show_lb = this.model.settings.display_internal_label_left_bottom !== false\n var mirror_factor = this.model.settings.mirror;\n\n nodes.select('text.right')\n .text((d) => {\n if (d.children || d._children){\n\n if (d.data.collapse){\n\n if (this.container_object.api.settings.phylostratigraphy){\n return d.data.name\n }\n\n let l = d.data.leaves\n\n if (l.length <= 0){\n d.data.leaves = this.model.get_leaves(d.data)\n }\n\n return '[' + l[0].name + ' ... ' + l[l.length-1].name + ']'\n }\n \n return show_r ? this.get_label_extended_information(d, this.model.settings.display_internal_label) : '';\n }\n return d.data.name;\n })\n .attr(\"x\", function(d) {\n let y_offset = (typeof d.data.triangle_width !== 'undefined') ? d.data.triangle_width : 0;\n\n var scale = (d.children || d._children) ? 1 : k\n\n if (mirror_factor){\n return -(y_offset + 13/scale);\n }\n\n return d.parent == null ? -13/scale : y_offset + 13/scale;\n })\n .attr(\"y\", 0)\n .attr('fill', (d) => {\n\n if (!(d.children || d._children)){\n\n\n var acc = this.model.settings.style.color_accessor['leaf']\n var type_acc = this.model.settings.extended_data_type[acc]\n\n\n\n if (type_acc === 'color'){\n\n var g = d.data.extended_informations[acc];\n\n if (typeof g !== \"undefined\" ) {\n return g\n }\n\n\n }\n\n else if (acc !== null){\n\n var v = d.data.extended_informations[acc];\n\n if (typeof v !== \"undefined\" ) {\n\n if (type_acc == 'cat'){\n\n var cs = this.container_object.api.get_color_scale(acc)\n return cs.get_color(v)\n\n }\n\n else{\n return this.colorScale['leaf'](v)\n }\n\n\n }\n\n\n }\n\n }\n\n let c = d.data.search_node ? \"#FF0000\" : \"#212529\";\n return c\n })\n .style('font-size', d => {\n\n if (d.children){\n return show_r ? this.model.settings.style.font_size_internal + 'px' : '0px';\n }\n\n return d.subsampled ? on_screen_text_size + 'px' : '0px' ;\n\n\n })\n\n nodes.select('text.left_top')\n .style('font-size', d => {\n return show_lt ? this.model.settings.style.font_size_internal+ 'px' : '0px';\n })\n .text( (d) => {\n return show_lt ? this.get_label_extended_information(d, this.model.settings.display_internal_label_left_top) : '';\n })\n\n nodes.select('text.left_bottom')\n .style('font-size', d => {\n return show_lb ? this.model.settings.style.font_size_internal + 'px' : '0px';\n })\n .text( (d) => {\n return show_lb ? this.get_label_extended_information(d, this.model.settings.display_internal_label_left_bottom): '';\n })\n }\n\n node_face_exit(nodeExit){\n\n // On exit reduce the opacity of text labels\n nodeExit.select('text')\n .style('fill-opacity', 1e-6);\n }\n\n};\n\n\n\n\n//# sourceURL=webpack://PhyloIO/./src/viewer.js?");
|
|
7835
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var minhashjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! minhashjs */ \"./node_modules/minhashjs/index.js\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./model */ \"./src/model.js\");\n\n\n\n\nself.onmessage = (event) => {\n\n var containers = event.data;\n\n var processed_tree = compute_similarity_container_pair(containers.tree1,containers.tree2)\n\n postMessage(processed_tree);\n\n self.close();\n};\n\n\n\nfunction compute_similarity_container_pair(t1,t2){\n\n var t1 = new _model__WEBPACK_IMPORTED_MODULE_1__[\"default\"](t1.data, t1.settings, false)\n var t2 = new _model__WEBPACK_IMPORTED_MODULE_1__[\"default\"](t2.data, t2.settings, false)\n\n\n console.time(\"similarity\");\n\n // X = Intersection of T1 & T2 leaves.\n if (t1.leaves.length <= 0){\n t1.leaves = t1.get_leaves(t1.data)\n }\n if (t2.leaves.length <= 0){\n t2.leaves = t2.get_leaves(t2.data)\n }\n var common_leaves = t1.leaves.map(leaf => leaf.name).filter(value => t2.leaves.map(leaf => leaf.name).includes(value));\n console.log(\"Intersection\");\n console.timeLog(\"similarity\");\n\n // DeepLeaf with filter(X = True)\n t1.createDeepLeafList(common_leaves)\n t2.createDeepLeafList(common_leaves)\n console.log(\"DeepLeaf\");\n console.timeLog(\"similarity\");\n\n // MinHash\n t1.createMinHash()\n t2.createMinHash()\n console.log(\"MinHash\");\n console.timeLog(\"similarity\");\n\n // For all T1 & T2 Nodes compute the BCN with MinHash\n var nodes_t1 = []\n var nodes_t2 = []\n\n var forest1 = new minhashjs__WEBPACK_IMPORTED_MODULE_0__.MinHashLSHForest.MinHashLSHForest()\n var forest2 = new minhashjs__WEBPACK_IMPORTED_MODULE_0__.MinHashLSHForest.MinHashLSHForest()\n\n var cpt =0\n t1.traverse(t1.data, function(h,children){nodes_t1.push(h);forest1.add(h, h.min_hash);cpt++}, null)\n t2.traverse(t2.data, function(z,children){nodes_t2.push(z);forest2.add(z, z.min_hash);cpt++}, null)\n\n forest1.index()\n forest2.index()\n\n find_BCN(nodes_t1, forest2, t2.uid)\n find_BCN(nodes_t2, forest1, t1.uid)\n\n console.log(\"BCN done\");\n\n console.timeLog(\"similarity\");\n\n // Clean non essential datume\n t1.removeMinHash()\n t2.removeMinHash()\n\n console.timeEnd(\"similarity\");\n\n t1.settings.similarity.push(t2.uid)\n t2.settings.similarity.push(t1.uid)\n\n t1.data = t1.remove_circularity_only_parent_and_leaves()\n t2.data = t2.remove_circularity_only_parent_and_leaves()\n\n t1.remove_all_color_scale()\n t2.remove_all_color_scale()\n\n return [t1,t2]\n\n}\n\nfunction find_BCN(nodes_list, target_forest, target_uid){\n nodes_list.forEach((node) => {\n\n function is_leaf(str) {\n return !str.includes(\"|__|\");\n }\n\n var matches = target_forest.query(node.min_hash,10)\n\n var l = new Set(node.deepLeafList.filter(is_leaf))\n if (l.size > 0){\n\n var max_jacc = 0\n var BCN = null\n\n matches.forEach(e => {\n var r = new Set(e.deepLeafList.filter(is_leaf))\n\n if (r.size > 0){\n\n\n var inter = Array.from(r).filter(x => l.has(x)).length\n var union = [...new Set([...l, ...r])].length;\n\n var jj = inter/union\n\n\n\n if (jj > max_jacc){\n max_jacc = jj\n BCN = e\n }\n\n }\n\n\n\n\n\n })\n\n if (max_jacc > 0) {\n node.elementS[target_uid] = max_jacc\n if (!node.elementBCN){\n node.elementBCN = {}\n }\n node.elementBCN[target_uid] = BCN\n }\n\n\n }\n\n\n\n\n })\n}\n\n//# sourceURL=webpack://PhyloIO/./src/worker_bcn.js?");
|
|
8761
7836
|
|
|
8762
7837
|
/***/ }),
|
|
8763
7838
|
|
|
@@ -8957,18 +8032,6 @@ eval("module.exports = JSON.parse('{\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\
|
|
|
8957
8032
|
/******/ }
|
|
8958
8033
|
/******/
|
|
8959
8034
|
/************************************************************************/
|
|
8960
|
-
/******/ /* webpack/runtime/compat get default export */
|
|
8961
|
-
/******/ (() => {
|
|
8962
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
8963
|
-
/******/ __webpack_require__.n = (module) => {
|
|
8964
|
-
/******/ var getter = module && module.__esModule ?
|
|
8965
|
-
/******/ () => (module['default']) :
|
|
8966
|
-
/******/ () => (module);
|
|
8967
|
-
/******/ __webpack_require__.d(getter, { a: getter });
|
|
8968
|
-
/******/ return getter;
|
|
8969
|
-
/******/ };
|
|
8970
|
-
/******/ })();
|
|
8971
|
-
/******/
|
|
8972
8035
|
/******/ /* webpack/runtime/define property getters */
|
|
8973
8036
|
/******/ (() => {
|
|
8974
8037
|
/******/ // define getter functions for harmony exports
|
|
@@ -9018,22 +8081,12 @@ eval("module.exports = JSON.parse('{\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\
|
|
|
9018
8081
|
/******/ };
|
|
9019
8082
|
/******/ })();
|
|
9020
8083
|
/******/
|
|
9021
|
-
/******/ /* webpack/runtime/publicPath */
|
|
9022
|
-
/******/ (() => {
|
|
9023
|
-
/******/ __webpack_require__.p = "";
|
|
9024
|
-
/******/ })();
|
|
9025
|
-
/******/
|
|
9026
|
-
/******/ /* webpack/runtime/nonce */
|
|
9027
|
-
/******/ (() => {
|
|
9028
|
-
/******/ __webpack_require__.nc = undefined;
|
|
9029
|
-
/******/ })();
|
|
9030
|
-
/******/
|
|
9031
8084
|
/************************************************************************/
|
|
9032
8085
|
/******/
|
|
9033
8086
|
/******/ // startup
|
|
9034
8087
|
/******/ // Load entry module and return exports
|
|
9035
8088
|
/******/ // This entry module can't be inlined because the eval devtool is used.
|
|
9036
|
-
/******/ var __webpack_exports__ = __webpack_require__("./src/
|
|
8089
|
+
/******/ var __webpack_exports__ = __webpack_require__("./src/worker_bcn.js");
|
|
9037
8090
|
/******/ PhyloIO = __webpack_exports__;
|
|
9038
8091
|
/******/
|
|
9039
8092
|
/******/ })()
|