UNPKG

@gravityforms/components

Version:

UI components for use in Gravity Forms development. Both React and vanilla js flavors.

32 lines 114 kB
"use strict";
/*
 * ATTENTION: An "eval-source-map" devtool has been used.
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunkgravityforms"] = self["webpackChunkgravityforms"] || []).push([["components_react_admin_modules_Chart_BarChart_index_js"],{

/***/ "../components/react/admin/modules/Chart/BarChart/index.js":
/*!*****************************************************************************!*\
  !*** ../components/react/admin/modules/Chart/BarChart/index.js + 1 modules ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

eval("{// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ Chart_BarChart; }\n});\n\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/extends.js\nvar esm_extends = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/extends.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\nvar objectWithoutProperties = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\nvar defineProperty = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/typeof.js\nvar esm_typeof = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/typeof.js\");\n// EXTERNAL MODULE: external [\"gform\",\"libraries\"]\nvar external_gform_libraries_ = __webpack_require__(\"@gravityforms/libraries\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/shape/Rectangle.js\nvar Rectangle = __webpack_require__(\"../../../node_modules/recharts/es6/shape/Rectangle.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/component/ResponsiveContainer.js\nvar ResponsiveContainer = __webpack_require__(\"../../../node_modules/recharts/es6/component/ResponsiveContainer.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/chart/generateCategoricalChart.js + 15 modules\nvar generateCategoricalChart = __webpack_require__(\"../../../node_modules/recharts/es6/chart/generateCategoricalChart.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/cartesian/Bar.js + 2 modules\nvar Bar = __webpack_require__(\"../../../node_modules/recharts/es6/cartesian/Bar.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/cartesian/XAxis.js\nvar XAxis = __webpack_require__(\"../../../node_modules/recharts/es6/cartesian/XAxis.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/cartesian/YAxis.js\nvar YAxis = __webpack_require__(\"../../../node_modules/recharts/es6/cartesian/YAxis.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/util/CartesianUtils.js\nvar CartesianUtils = __webpack_require__(\"../../../node_modules/recharts/es6/util/CartesianUtils.js\");\n;// ../../../node_modules/recharts/es6/chart/BarChart.js\n/**\n * @fileOverview Bar Chart\n */\n\n\n\n\n\nvar BarChart = (0,generateCategoricalChart.generateCategoricalChart)({\n  chartName: 'BarChart',\n  GraphicalChild: Bar.Bar,\n  defaultTooltipEventType: 'axis',\n  validateTooltipEventTypes: ['axis', 'item'],\n  axisComponents: [{\n    axisType: 'xAxis',\n    AxisComp: XAxis.XAxis\n  }, {\n    axisType: 'yAxis',\n    AxisComp: YAxis.YAxis\n  }],\n  formatAxisMap: CartesianUtils.formatAxisMap\n});\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/cartesian/CartesianGrid.js\nvar CartesianGrid = __webpack_require__(\"../../../node_modules/recharts/es6/cartesian/CartesianGrid.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/component/Tooltip.js + 3 modules\nvar Tooltip = __webpack_require__(\"../../../node_modules/recharts/es6/component/Tooltip.js\");\n// EXTERNAL MODULE: ../../../node_modules/recharts/es6/component/Legend.js + 1 modules\nvar Legend = __webpack_require__(\"../../../node_modules/recharts/es6/component/Legend.js\");\n// EXTERNAL MODULE: ../components/react/admin/elements/Box/index.js\nvar Box = __webpack_require__(\"../components/react/admin/elements/Box/index.js\");\n// EXTERNAL MODULE: ../components/react/admin/elements/Checkbox/index.js\nvar Checkbox = __webpack_require__(\"../components/react/admin/elements/Checkbox/index.js\");\n// EXTERNAL MODULE: ../components/react/admin/modules/Chart/common/Tooltip.js\nvar common_Tooltip = __webpack_require__(\"../components/react/admin/modules/Chart/common/Tooltip.js\");\n;// ../components/react/admin/modules/Chart/BarChart/index.js\n\n\n\n\n\nvar _excluded = [\"activeBar\", \"onClick\", \"onMouseEnter\", \"onMouseLeave\", \"onMouseDown\", \"onMouseUp\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0,defineProperty[\"default\"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\n\n\n\n\nvar forwardRef = external_gform_libraries_.React.forwardRef,\n  useState = external_gform_libraries_.React.useState,\n  useEffect = external_gform_libraries_.React.useEffect;\n\n/**\n * @function formatPercentageTick\n * @description Formats a normalized axis value as a percentage.\n *\n * @since 6.6.3\n *\n * @param {number} value The axis tick value.\n *\n * @return {string} The formatted percentage label.\n */\nvar formatPercentageTick = function formatPercentageTick(value) {\n  return \"\".concat((value * 100).toFixed(0), \"%\");\n};\n\n/**\n * @function formatPercentageValue\n * @description Formats a normalized tooltip value as a percentage.\n *\n * @since 6.6.3\n *\n * @param {number} value The tooltip value.\n *\n * @return {string} The formatted percentage label.\n */\nvar formatPercentageValue = function formatPercentageValue(value) {\n  return \"\".concat((value * 100).toFixed(1), \"%\");\n};\n\n/**\n * @function resolveStackId\n * @description Resolves the stack ID for a series based on option and chart settings.\n *\n * @since 6.6.3\n *\n * @param {Object}  option     The series option.\n * @param {boolean} stacked    Whether the chart is in stacked mode.\n * @param {boolean} normalized Whether the chart is in normalized mode.\n *\n * @return {string|undefined} The stack ID, if any.\n */\nvar resolveStackId = function resolveStackId(option, stacked, normalized) {\n  if (Object.prototype.hasOwnProperty.call(option, 'stackId')) {\n    return option.stackId || undefined;\n  }\n  if (stacked || normalized) {\n    return 'stack';\n  }\n  return undefined;\n};\n\n/**\n * @function resolveSeriesActiveBar\n * @description Resolves per-series activeBar behavior for Recharts and custom hover shaping.\n *\n * @since 6.6.3\n *\n * @param {Object} option The series option.\n *\n * @return {Object} The resolved activeBar configuration.\n */\nvar resolveSeriesActiveBar = function resolveSeriesActiveBar(option) {\n  if (option.activeBar === false) {\n    return {\n      activeBar: false,\n      useCustomShapeHover: false\n    };\n  }\n  if (option.activeBar && (0,esm_typeof[\"default\"])(option.activeBar) === 'object') {\n    return {\n      activeBar: option.activeBar,\n      useCustomShapeHover: false\n    };\n  }\n  return {\n    activeBar: false,\n    useCustomShapeHover: true\n  };\n};\n\n/**\n * @function extractBarPassThroughProps\n * @description Separates chart-managed and event-handler props from other Bar pass-through props.\n *\n * @since 6.6.3\n *\n * @param {Object} globalBarProps Bar props applied to every series.\n * @param {Object} seriesBarProps Per-series Bar props.\n *\n * @return {Object} Pass-through props and event handlers.\n */\nvar extractBarPassThroughProps = function extractBarPassThroughProps() {\n  var globalBarProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var seriesBarProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var mergedBarProps = _objectSpread(_objectSpread({}, globalBarProps), seriesBarProps);\n  var activeBar = mergedBarProps.activeBar,\n    onClick = mergedBarProps.onClick,\n    onMouseEnter = mergedBarProps.onMouseEnter,\n    onMouseLeave = mergedBarProps.onMouseLeave,\n    onMouseDown = mergedBarProps.onMouseDown,\n    onMouseUp = mergedBarProps.onMouseUp,\n    passThroughProps = (0,objectWithoutProperties[\"default\"])(mergedBarProps, _excluded);\n  return {\n    passThroughHandlers: {\n      onClick: onClick,\n      onMouseEnter: onMouseEnter,\n      onMouseLeave: onMouseLeave,\n      onMouseDown: onMouseDown,\n      onMouseUp: onMouseUp\n    },\n    passThroughProps: passThroughProps\n  };\n};\n\n/**\n * @function composeBarEventHandler\n * @description Composes Recharts pass-through handlers with chart-level callbacks.\n *\n * @since 6.6.3\n *\n * @param {string}        dataKey            The data key of the bar series.\n * @param {Function|null} passThroughHandler Recharts handler from barProps/option.barProps.\n * @param {Function|null} chartCallback      Chart-level callback prop.\n * @param {Function|null} sideEffect         Optional internal side effect.\n *\n * @return {Function} The composed event handler for a Bar series.\n */\nvar composeBarEventHandler = function composeBarEventHandler(dataKey, passThroughHandler, chartCallback) {\n  var sideEffect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n  return function (barData, index, event) {\n    if (sideEffect) {\n      sideEffect(barData, index, event);\n    }\n    if (passThroughHandler) {\n      passThroughHandler(barData, index, event);\n    }\n    if (!chartCallback) {\n      return;\n    }\n    chartCallback({\n      data: barData,\n      index: index,\n      dataKey: dataKey,\n      event: event\n    });\n  };\n};\n\n/**\n * @function createHoveredBarShape\n * @description Creates a bar shape renderer that highlights only the hovered bar segment.\n *\n * @since 6.6.3\n *\n * @param {Object}      option     The series option.\n * @param {Object|null} hoveredBar The currently hovered bar state.\n *\n * @return {Function} Recharts bar shape renderer.\n */\nvar createHoveredBarShape = function createHoveredBarShape(option, hoveredBar) {\n  return function (props) {\n    var index = props.index;\n    var isHovered = (hoveredBar === null || hoveredBar === void 0 ? void 0 : hoveredBar.dataKey) === option.dataKey && (hoveredBar === null || hoveredBar === void 0 ? void 0 : hoveredBar.index) === index;\n    var fill = isHovered ? option.hoverColor || option.color : option.color;\n    return /*#__PURE__*/external_gform_libraries_.React.createElement(Rectangle.Rectangle, (0,esm_extends[\"default\"])({}, props, {\n      fill: fill\n    }, option.radius ? {\n      radius: option.radius\n    } : {}));\n  };\n};\n\n/**\n * @function applySeriesBarLabel\n * @description Applies a per-series barLabel override, including explicit false values.\n *\n * @since 6.6.3\n *\n * @param {Object} barAttributes The Recharts Bar props being assembled.\n * @param {Object} option        The series option.\n *\n * @return {void}\n */\nvar applySeriesBarLabel = function applySeriesBarLabel(barAttributes, option) {\n  if (Object.prototype.hasOwnProperty.call(option, 'barLabel')) {\n    barAttributes.label = option.barLabel;\n  }\n};\n\n/**\n * @function resolveBarShape\n * @description Resolves the Bar shape renderer with explicit precedence.\n *\n * @since 6.6.3\n *\n * @param {Object}      option              The series option.\n * @param {boolean}     useCustomShapeHover Whether custom hover shaping is enabled.\n * @param {Function}    passThroughShape    Shape from barProps/option.barProps, if any.\n * @param {Object|null} hoveredBar          The currently hovered bar state.\n *\n * @return {Function|null} The resolved shape renderer, if one should be applied.\n */\nvar resolveBarShape = function resolveBarShape(option, useCustomShapeHover, passThroughShape, hoveredBar) {\n  if (option.shape) {\n    return option.shape;\n  }\n  if (useCustomShapeHover && !passThroughShape) {\n    return createHoveredBarShape(option, hoveredBar);\n  }\n  return null;\n};\n\n/**\n * @function buildBarSeriesAttributes\n * @description Builds Recharts Bar props for a series with documented merge precedence.\n *\n * Precedence (lowest to highest):\n * 1. Component defaults (animation, dataKey, fill, name)\n * 2. Per-series option fields (stackId, radius, legendType)\n * 3. barProps / option.barProps pass-through (excluding activeBar and event handlers)\n * 4. Chart-managed props (activeBar, composed event handlers)\n * 5. option.barLabel (when defined, including false)\n * 6. option.shape, then custom hover shape when enabled\n *\n * @since 6.6.3\n *\n * @param {Object}      config                 Bar build configuration.\n * @param {Object}      config.option          The series option.\n * @param {boolean}     config.stacked         Whether the chart is stacked.\n * @param {boolean}     config.normalized      Whether the chart is normalized.\n * @param {number}      config.animationDuration Animation duration in milliseconds.\n * @param {boolean}     config.animationActive Whether animation is active.\n * @param {Object}      config.barProps        Global Bar pass-through props.\n * @param {Object|null} config.hoveredBar      The currently hovered bar state.\n * @param {Function}    config.setHoveredBar   Setter for hovered bar state.\n * @param {Function|null} config.onBarClick    Chart-level bar click callback.\n * @param {Function|null} config.onMouseEnter  Chart-level mouse enter callback.\n * @param {Function|null} config.onMouseLeave  Chart-level mouse leave callback.\n * @param {Function|null} config.onMouseDown   Chart-level mouse down callback.\n * @param {Function|null} config.onMouseUp     Chart-level mouse up callback.\n *\n * @return {Object} Recharts Bar props for the series.\n */\nvar buildBarSeriesAttributes = function buildBarSeriesAttributes(_ref) {\n  var option = _ref.option,\n    stacked = _ref.stacked,\n    normalized = _ref.normalized,\n    animationDuration = _ref.animationDuration,\n    animationActive = _ref.animationActive,\n    barProps = _ref.barProps,\n    hoveredBar = _ref.hoveredBar,\n    setHoveredBar = _ref.setHoveredBar,\n    onBarClick = _ref.onBarClick,\n    onMouseEnter = _ref.onMouseEnter,\n    onMouseLeave = _ref.onMouseLeave,\n    onMouseDown = _ref.onMouseDown,\n    onMouseUp = _ref.onMouseUp;\n  var stackId = resolveStackId(option, stacked, normalized);\n  var _resolveSeriesActiveB = resolveSeriesActiveBar(option),\n    activeBar = _resolveSeriesActiveB.activeBar,\n    useCustomShapeHover = _resolveSeriesActiveB.useCustomShapeHover;\n  var _extractBarPassThroug = extractBarPassThroughProps(barProps, option.barProps || {}),\n    passThroughHandlers = _extractBarPassThroug.passThroughHandlers,\n    passThroughProps = _extractBarPassThroug.passThroughProps;\n  var barAttributes = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({\n    animationBegin: 0,\n    animationDuration: animationDuration,\n    dataKey: option.dataKey,\n    fill: option.color,\n    isAnimationActive: animationActive,\n    name: option.name || option.label\n  }, stackId ? {\n    stackId: stackId\n  } : {}), option.radius ? {\n    radius: option.radius\n  } : {}), option.legendType ? {\n    legendType: option.legendType\n  } : {}), passThroughProps), {}, {\n    activeBar: activeBar,\n    onClick: composeBarEventHandler(option.dataKey, passThroughHandlers.onClick, onBarClick),\n    onMouseDown: composeBarEventHandler(option.dataKey, passThroughHandlers.onMouseDown, onMouseDown),\n    onMouseEnter: composeBarEventHandler(option.dataKey, passThroughHandlers.onMouseEnter, onMouseEnter, function (barData, index) {\n      return setHoveredBar({\n        dataKey: option.dataKey,\n        index: index\n      });\n    }),\n    onMouseLeave: composeBarEventHandler(option.dataKey, passThroughHandlers.onMouseLeave, onMouseLeave, function () {\n      return setHoveredBar(null);\n    }),\n    onMouseUp: composeBarEventHandler(option.dataKey, passThroughHandlers.onMouseUp, onMouseUp)\n  });\n  applySeriesBarLabel(barAttributes, option);\n  var resolvedShape = resolveBarShape(option, useCustomShapeHover, barAttributes.shape, hoveredBar);\n  if (resolvedShape) {\n    barAttributes.shape = resolvedShape;\n  }\n  return barAttributes;\n};\n\n/**\n * @module GravityBarChart\n * @description The BarChart component. Loaded by the Chart renderer and displayed by passing type \"bar\".\n *\n * @since 6.6.3\n *\n * @param {number}              animationDuration  The duration of the reveal animation in milliseconds.\n * @param {object}              barChartProps      The props to pass to the BarChart container (can also override the presets we use). Check Recharts docs for all available.\n * @param {object}              barProps           The props to pass to each Bar (can also override the presets we use). Recharts event handlers are composed with the chart-level callback props rather than replaced. Check Recharts docs for all available.\n * @param {object}              cartesianGridProps The props to pass to the CartesianGrid (can also override the presets we use). Check Recharts docs for all available.\n * @param {object}              checkboxProps      The props to pass to each Checkbox. Check our docs for all available.\n * @param {node}                children           Any additional content to display below the chart.\n * @param {object}              customAttributes   Custom attributes to apply to the chart wrapper.\n * @param {string|array|object} customClasses      Custom classes to apply to the chart wrapper.\n * @param {Function}            customInterval     Custom function to calculate the x-axis tick interval.\n * @param {array}               data               The data to display in the chart. Check Recharts docs for formats.\n * @param {string}              gridColor          The color of the grid lines and the x and y axis.\n * @param {number|string}       height             The height of the chart.\n * @param {object}              legendProps        The props to pass to the Legend (can also override the presets we use). Check Recharts docs for all available.\n * @param {boolean}             normalized         Whether to render a normalized (100%) stacked chart.\n * @param {Function}            onBarClick         Callback fired when a bar is clicked. Receives { data, index, dataKey, event }.\n * @param {Function}            onMouseEnter       Callback fired when a bar is hovered. Receives { data, index, dataKey, event }.\n * @param {Function}            onMouseLeave       Callback fired when the mouse leaves a bar. Receives { data, index, dataKey, event }.\n * @param {Function}            onMouseDown        Callback fired when a bar is pressed. Receives { data, index, dataKey, event }.\n * @param {Function}            onMouseUp          Callback fired when a bar press ends. Receives { data, index, dataKey, event }.\n * @param {array}               options            The options to display as checkboxes to toggle the visibility of each data set. Supports per-series color, hoverColor, stackId, name, legendType, hide, radius, activeBar (object or false), barLabel, and barProps (Recharts event handlers are composed with chart-level callbacks).\n * @param {boolean}             showCheckboxes     Whether to show the checkboxes to toggle the visibility of each data set.\n * @param {boolean}             showLegend         Whether to show the legend.\n * @param {boolean}             stacked            Whether to stack bars or display them side by side.\n * @param {object}              tooltipProps       The props to pass to the Tooltip (can also override the presets we use). Check Recharts docs for all available.\n * @param {boolean}             tooltipShared      Whether the tooltip is shared across series at the same category.\n * @param {number|string}       width              The width of the chart.\n * @param {object}              xAxisProps         The props to pass to the XAxis (can also override the presets we use). Check Recharts docs for all available.\n * @param {object}              yAxisProps         The props to pass to the YAxis (can also override the presets we use). Check Recharts docs for all available.\n * @param {object}              ref                The reference to the chart component.\n *\n * @return {JSX.Element|null} The BarChart component.\n */\nvar GravityBarChart = forwardRef(function (_ref2, ref) {\n  var _ref2$animationDurati = _ref2.animationDuration,\n    animationDuration = _ref2$animationDurati === void 0 ? 1000 : _ref2$animationDurati,\n    _ref2$barChartProps = _ref2.barChartProps,\n    barChartProps = _ref2$barChartProps === void 0 ? {} : _ref2$barChartProps,\n    _ref2$barProps = _ref2.barProps,\n    barProps = _ref2$barProps === void 0 ? {} : _ref2$barProps,\n    _ref2$cartesianGridPr = _ref2.cartesianGridProps,\n    cartesianGridProps = _ref2$cartesianGridPr === void 0 ? {} : _ref2$cartesianGridPr,\n    _ref2$checkboxProps = _ref2.checkboxProps,\n    checkboxProps = _ref2$checkboxProps === void 0 ? {} : _ref2$checkboxProps,\n    _ref2$children = _ref2.children,\n    children = _ref2$children === void 0 ? null : _ref2$children,\n    _ref2$customAttribute = _ref2.customAttributes,\n    customAttributes = _ref2$customAttribute === void 0 ? {} : _ref2$customAttribute,\n    _ref2$customClasses = _ref2.customClasses,\n    customClasses = _ref2$customClasses === void 0 ? {} : _ref2$customClasses,\n    _ref2$customInterval = _ref2.customInterval,\n    customInterval = _ref2$customInterval === void 0 ? null : _ref2$customInterval,\n    _ref2$data = _ref2.data,\n    data = _ref2$data === void 0 ? [] : _ref2$data,\n    _ref2$gridColor = _ref2.gridColor,\n    gridColor = _ref2$gridColor === void 0 ? '#ecedf8' : _ref2$gridColor,\n    _ref2$height = _ref2.height,\n    height = _ref2$height === void 0 ? 400 : _ref2$height,\n    _ref2$legendProps = _ref2.legendProps,\n    legendProps = _ref2$legendProps === void 0 ? {} : _ref2$legendProps,\n    _ref2$normalized = _ref2.normalized,\n    normalized = _ref2$normalized === void 0 ? false : _ref2$normalized,\n    _ref2$onBarClick = _ref2.onBarClick,\n    onBarClick = _ref2$onBarClick === void 0 ? null : _ref2$onBarClick,\n    _ref2$onMouseEnter = _ref2.onMouseEnter,\n    onMouseEnter = _ref2$onMouseEnter === void 0 ? null : _ref2$onMouseEnter,\n    _ref2$onMouseLeave = _ref2.onMouseLeave,\n    onMouseLeave = _ref2$onMouseLeave === void 0 ? null : _ref2$onMouseLeave,\n    _ref2$onMouseDown = _ref2.onMouseDown,\n    onMouseDown = _ref2$onMouseDown === void 0 ? null : _ref2$onMouseDown,\n    _ref2$onMouseUp = _ref2.onMouseUp,\n    onMouseUp = _ref2$onMouseUp === void 0 ? null : _ref2$onMouseUp,\n    _ref2$options = _ref2.options,\n    options = _ref2$options === void 0 ? [] : _ref2$options,\n    _ref2$showCheckboxes = _ref2.showCheckboxes,\n    showCheckboxes = _ref2$showCheckboxes === void 0 ? true : _ref2$showCheckboxes,\n    _ref2$showLegend = _ref2.showLegend,\n    showLegend = _ref2$showLegend === void 0 ? false : _ref2$showLegend,\n    _ref2$stacked = _ref2.stacked,\n    stacked = _ref2$stacked === void 0 ? false : _ref2$stacked,\n    _ref2$tooltipProps = _ref2.tooltipProps,\n    tooltipProps = _ref2$tooltipProps === void 0 ? {} : _ref2$tooltipProps,\n    _ref2$tooltipShared = _ref2.tooltipShared,\n    tooltipShared = _ref2$tooltipShared === void 0 ? false : _ref2$tooltipShared,\n    _ref2$width = _ref2.width,\n    width = _ref2$width === void 0 ? '100%' : _ref2$width,\n    _ref2$xAxisProps = _ref2.xAxisProps,\n    xAxisProps = _ref2$xAxisProps === void 0 ? {} : _ref2$xAxisProps,\n    _ref2$yAxisProps = _ref2.yAxisProps,\n    yAxisProps = _ref2$yAxisProps === void 0 ? {} : _ref2$yAxisProps;\n  var componentProps = _objectSpread(_objectSpread({\n    className: (0,external_gform_libraries_.classnames)({\n      'gform-chart--bar': true,\n      'gform-chart__wrapper': true\n    }, customClasses)\n  }, customAttributes), {}, {\n    ref: ref\n  });\n  var visibleOptions = options.filter(function (option) {\n    return !option.hide;\n  });\n  var initialCheckboxState = visibleOptions.reduce(function (acc, option) {\n    var _option$defaultChecke;\n    acc[option.dataKey] = (_option$defaultChecke = option.defaultChecked) !== null && _option$defaultChecke !== void 0 ? _option$defaultChecke : true;\n    return acc;\n  }, {});\n  var _useState = useState(initialCheckboxState),\n    _useState2 = (0,slicedToArray[\"default\"])(_useState, 2),\n    checkboxState = _useState2[0],\n    setCheckboxState = _useState2[1];\n  var _useState3 = useState(true),\n    _useState4 = (0,slicedToArray[\"default\"])(_useState3, 2),\n    animationActive = _useState4[0],\n    setAnimationActive = _useState4[1];\n  var _useState5 = useState(null),\n    _useState6 = (0,slicedToArray[\"default\"])(_useState5, 2),\n    hoveredBar = _useState6[0],\n    setHoveredBar = _useState6[1];\n  var _useState7 = useState(Math.floor(data.length / 10)),\n    _useState8 = (0,slicedToArray[\"default\"])(_useState7, 2),\n    interval = _useState8[0],\n    setInterval = _useState8[1];\n\n  /**\n   * @function updateInterval\n   * @description Updates the x-axis tick interval based on viewport width.\n   *\n   * @since 6.6.3\n   *\n   * @return {void}\n   */\n  var updateInterval = function updateInterval() {\n    var screenWidth = window.innerWidth;\n    setInterval(Math.floor(data.length / (screenWidth / 180)));\n  };\n  useEffect(function () {\n    var timer = setTimeout(function () {\n      setAnimationActive(false);\n    }, animationDuration);\n    return function () {\n      return clearTimeout(timer);\n    };\n  }, []);\n  useEffect(function () {\n    if (customInterval) {\n      customInterval(setInterval, data.length);\n    } else {\n      updateInterval();\n      window.addEventListener('resize', updateInterval);\n      return function () {\n        window.removeEventListener('resize', updateInterval);\n      };\n    }\n  }, [data.length, customInterval]);\n\n  /**\n   * @function handleCheckboxChange\n   * @description Toggles visibility of a data series via checkbox.\n   *\n   * @since 6.6.3\n   *\n   * @param {string} dataKey The data key to toggle.\n   *\n   * @return {void}\n   */\n  var handleCheckboxChange = function handleCheckboxChange(dataKey) {\n    setCheckboxState(function (prevState) {\n      return _objectSpread(_objectSpread({}, prevState), {}, (0,defineProperty[\"default\"])({}, dataKey, !prevState[dataKey]));\n    });\n  };\n  var cartesianGridAttributes = _objectSpread({\n    stroke: gridColor,\n    strokeDasharray: '0',\n    vertical: false\n  }, cartesianGridProps);\n  var yAxisAttributes = _objectSpread(_objectSpread({\n    axisLine: {\n      stroke: gridColor\n    },\n    padding: {\n      top: 10\n    },\n    tickLine: {\n      stroke: gridColor\n    }\n  }, normalized && !yAxisProps.tickFormatter ? {\n    tickFormatter: formatPercentageTick\n  } : {}), yAxisProps);\n  var xAxisAttributes = _objectSpread({\n    axisLine: {\n      stroke: gridColor\n    },\n    tickLine: {\n      stroke: gridColor\n    },\n    interval: interval\n  }, xAxisProps);\n  var tooltipAttributes = (0,common_Tooltip.buildTooltipAttributes)({\n    cursor: false,\n    defaultValueFormatter: normalized && !tooltipProps.formatter ? formatPercentageValue : null,\n    tooltipProps: tooltipProps,\n    tooltipShared: tooltipShared\n  });\n  var legendAttributes = _objectSpread({}, legendProps);\n  var barChartAttributes = _objectSpread(_objectSpread({\n    accessibilityLayer: true,\n    data: data,\n    margin: {\n      top: 0,\n      right: 20,\n      left: 0,\n      bottom: 0\n    }\n  }, normalized && !barChartProps.stackOffset ? {\n    stackOffset: 'expand'\n  } : {}), barChartProps);\n  return /*#__PURE__*/external_gform_libraries_.React.createElement(\"div\", componentProps, showCheckboxes && /*#__PURE__*/external_gform_libraries_.React.createElement(\"div\", {\n    className: \"gform-chart__checkboxes\"\n  }, /*#__PURE__*/external_gform_libraries_.React.createElement(Box[\"default\"], {\n    display: \"flex\",\n    spacing: [0, 5, 0, 0]\n  }, visibleOptions.map(function (option) {\n    var checkboxAttributes = _objectSpread({\n      externalChecked: checkboxState[option.dataKey],\n      externalControl: true,\n      labelAttributes: {\n        label: option.label,\n        weight: 'normal'\n      },\n      onChange: function onChange() {\n        return handleCheckboxChange(option.dataKey);\n      },\n      spacing: [0, 0, 4, 3]\n    }, checkboxProps);\n    return /*#__PURE__*/external_gform_libraries_.React.createElement(Checkbox[\"default\"], (0,esm_extends[\"default\"])({\n      key: option.dataKey\n    }, checkboxAttributes));\n  }))), /*#__PURE__*/external_gform_libraries_.React.createElement(ResponsiveContainer.ResponsiveContainer, {\n    width: width,\n    height: height\n  }, /*#__PURE__*/external_gform_libraries_.React.createElement(BarChart, barChartAttributes, /*#__PURE__*/external_gform_libraries_.React.createElement(CartesianGrid.CartesianGrid, cartesianGridAttributes), /*#__PURE__*/external_gform_libraries_.React.createElement(XAxis.XAxis, xAxisAttributes), /*#__PURE__*/external_gform_libraries_.React.createElement(YAxis.YAxis, yAxisAttributes), /*#__PURE__*/external_gform_libraries_.React.createElement(Tooltip.Tooltip, tooltipAttributes), showLegend && /*#__PURE__*/external_gform_libraries_.React.createElement(Legend.Legend, legendAttributes), options.map(function (option) {\n    if (option.hide || !checkboxState[option.dataKey]) {\n      return null;\n    }\n    var barAttributes = buildBarSeriesAttributes({\n      option: option,\n      stacked: stacked,\n      normalized: normalized,\n      animationDuration: animationDuration,\n      animationActive: animationActive,\n      barProps: barProps,\n      hoveredBar: hoveredBar,\n      setHoveredBar: setHoveredBar,\n      onBarClick: onBarClick,\n      onMouseEnter: onMouseEnter,\n      onMouseLeave: onMouseLeave,\n      onMouseDown: onMouseDown,\n      onMouseUp: onMouseUp\n    });\n    return /*#__PURE__*/external_gform_libraries_.React.createElement(Bar.Bar, (0,esm_extends[\"default\"])({\n      key: option.dataKey\n    }, barAttributes));\n  }))), children);\n});\nGravityBarChart.propTypes = {\n  animationDuration: external_gform_libraries_.PropTypes.number,\n  barChartProps: external_gform_libraries_.PropTypes.object,\n  barProps: external_gform_libraries_.PropTypes.object,\n  cartesianGridProps: external_gform_libraries_.PropTypes.object,\n  checkboxProps: external_gform_libraries_.PropTypes.object,\n  children: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.arrayOf(external_gform_libraries_.PropTypes.node), external_gform_libraries_.PropTypes.node]),\n  customAttributes: external_gform_libraries_.PropTypes.object,\n  customClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n  customInterval: external_gform_libraries_.PropTypes.func,\n  data: external_gform_libraries_.PropTypes.array,\n  gridColor: external_gform_libraries_.PropTypes.string,\n  height: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.number]),\n  legendProps: external_gform_libraries_.PropTypes.object,\n  normalized: external_gform_libraries_.PropTypes.bool,\n  onBarClick: external_gform_libraries_.PropTypes.func,\n  onMouseEnter: external_gform_libraries_.PropTypes.func,\n  onMouseLeave: external_gform_libraries_.PropTypes.func,\n  onMouseDown: external_gform_libraries_.PropTypes.func,\n  onMouseUp: external_gform_libraries_.PropTypes.func,\n  options: external_gform_libraries_.PropTypes.array,\n  showCheckboxes: external_gform_libraries_.PropTypes.bool,\n  showLegend: external_gform_libraries_.PropTypes.bool,\n  stacked: external_gform_libraries_.PropTypes.bool,\n  tooltipProps: external_gform_libraries_.PropTypes.object,\n  tooltipShared: external_gform_libraries_.PropTypes.bool,\n  width: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.number]),\n  xAxisProps: external_gform_libraries_.PropTypes.object,\n  yAxisProps: external_gform_libraries_.PropTypes.object\n};\nGravityBarChart.displayName = 'BarChart';\n/* harmony default export */ var Chart_BarChart = (GravityBarChart);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vY29tcG9uZW50cy9yZWFjdC9hZG1pbi9tb2R1bGVzL0NoYXJ0L0JhckNoYXJ0L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ3NFO0FBQy9CO0FBQ0k7QUFDQTtBQUNZO0FBQ2hELGVBQWUscURBQXdCO0FBQzlDO0FBQ0Esa0JBQWtCLE9BQUc7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFdBQUs7QUFDbkIsR0FBRztBQUNIO0FBQ0EsY0FBYyxXQUFLO0FBQ25CLEdBQUc7QUFDSCxpQkFBaUIsNEJBQWE7QUFDOUIsQ0FBQyxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDckJzRTtBQUNnRDtBQUM3RztBQUNLO0FBQ2dCO0FBRS9CLElBQVFlLFVBQVUsR0FBMEJiLCtCQUFLLENBQXpDYSxVQUFVO0VBQUVDLFFBQVEsR0FBZ0JkLCtCQUFLLENBQTdCYyxRQUFRO0VBQUVDLFNBQVMsR0FBS2YsK0JBQUssQ0FBbkJlLFNBQVM7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBS0MsS0FBSztFQUFBLFVBQUFDLE1BQUEsQ0FBVSxDQUFFRCxLQUFLLEdBQUcsR0FBRyxFQUFHRSxPQUFPLENBQUUsQ0FBRSxDQUFDO0FBQUEsQ0FBSTs7QUFFOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFLSCxLQUFLO0VBQUEsVUFBQUMsTUFBQSxDQUFVLENBQUVELEtBQUssR0FBRyxHQUFHLEVBQUdFLE9BQU8sQ0FBRSxDQUFFLENBQUM7QUFBQSxDQUFJOztBQUUvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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LFlBQVksRUFBRTdDLG1DQUFTLENBQUM0TixJQUFJO0VBQzVCOUssV0FBVyxFQUFFOUMsbUNBQVMsQ0FBQzROLElBQUk7RUFDM0I3SyxTQUFTLEVBQUUvQyxtQ0FBUyxDQUFDNE4sSUFBSTtFQUN6Qi9GLE9BQU8sRUFBRTdILG1DQUFTLENBQUMyTixLQUFLO0VBQ3hCNUYsY0FBYyxFQUFFL0gsbUNBQVMsQ0FBQzZOLElBQUk7RUFDOUI1RixVQUFVLEVBQUVqSSxtQ0FBUyxDQUFDNk4sSUFBSTtFQUMxQnJNLE9BQU8sRUFBRXhCLG1DQUFTLENBQUM2TixJQUFJO0VBQ3ZCekYsWUFBWSxFQUFFcEksbUNBQVMsQ0FBQ3NOLE1BQU07RUFDOUJoRixhQUFhLEVBQUV0SSxtQ0FBUyxDQUFDNk4sSUFBSTtFQUM3QnJGLEtBQUssRUFBRXhJLG1DQUFTLENBQUN1TixTQUFTLENBQUUsQ0FBRXZOLG1DQUFTLENBQUMwTixNQUFNLEVBQUUxTixtQ0FBUyxDQUFDcU4sTUFBTSxDQUFHLENBQUM7RUFDcEUzRSxVQUFVLEVBQUUxSSxtQ0FBUyxDQUFDc04sTUFBTTtFQUM1QjFFLFVBQVUsRUFBRTVJLG1DQUFTLENBQUNzTjtBQUN2QixDQUFDO0FBRUQxSCxlQUFlLENBQUNrSSxXQUFXLEdBQUcsVUFBVTtBQUV4QyxtREFBZWxJLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ncmF2aXR5Zm9ybXMvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jaGFydC9CYXJDaGFydC5qcz85OTc5Iiwid2VicGFjazovL2dyYXZpdHlmb3Jtcy8uLi9jb21wb25lbnRzL3JlYWN0L2FkbWluL21vZHVsZXMvQ2hhcnQvQmFyQ2hhcnQvaW5kZXguanM/NzUwNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgQmFyIENoYXJ0XG4gKi9cbmltcG9ydCB7IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB9IGZyb20gJy4vZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0JztcbmltcG9ydCB7IEJhciB9IGZyb20gJy4uL2NhcnRlc2lhbi9CYXInO1xuaW1wb3J0IHsgWEF4aXMgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vWEF4aXMnO1xuaW1wb3J0IHsgWUF4aXMgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vWUF4aXMnO1xuaW1wb3J0IHsgZm9ybWF0QXhpc01hcCB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuZXhwb3J0IHZhciBCYXJDaGFydCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCh7XG4gIGNoYXJ0TmFtZTogJ0JhckNoYXJ0JyxcbiAgR3JhcGhpY2FsQ2hpbGQ6IEJhcixcbiAgZGVmYXVsdFRvb2x0aXBFdmVudFR5cGU6ICdheGlzJyxcbiAgdmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlczogWydheGlzJywgJ2l0ZW0nXSxcbiAgYXhpc0NvbXBvbmVudHM6IFt7XG4gICAgYXhpc1R5cGU6ICd4QXhpcycsXG4gICAgQXhpc0NvbXA6IFhBeGlzXG4gIH0sIHtcbiAgICBheGlzVHlwZTogJ3lBeGlzJyxcbiAgICBBeGlzQ29tcDogWUF4aXNcbiAgfV0sXG4gIGZvcm1hdEF4aXNNYXA6IGZvcm1hdEF4aXNNYXBcbn0pOyIsImltcG9ydCB7IGNsYXNzbmFtZXMsIFByb3BUeXBlcywgUmVhY3QgfSBmcm9tICdAZ3Jhdml0eWZvcm1zL2xpYnJhcmllcyc7XG5pbXBvcnQgeyBCYXJDaGFydCwgQmFyLCBYQXhpcywgWUF4aXMsIENhcnRlc2lhbkdyaWQsIFRvb2x0aXAsIExlZ2VuZCwgUmVzcG9uc2l2ZUNvbnRhaW5lciwgUmVjdGFuZ2xlIH0gZnJvbSAncmVjaGFydHMnO1xuaW1wb3J0IEJveCBmcm9tICcuLi8uLi8uLi9lbGVtZW50cy9Cb3gnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJy4uLy4uLy4uL2VsZW1lbnRzL0NoZWNrYm94JztcbmltcG9ydCB7IGJ1aWxkVG9vbHRpcEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb21tb24vVG9vbHRpcCc7XG5cbmNvbnN0IHsgZm9yd2FyZFJlZiwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9ID0gUmVhY3Q7XG5cbi8qKlxuICogQGZ1bmN0aW9uIGZvcm1hdFBlcmNlbnRhZ2VUaWNrXG4gKiBAZGVzY3JpcHRpb24gRm9ybWF0cyBhIG5vcm1hbGl6ZWQgYXhpcyB2YWx1ZSBhcyBhIHBlcmNlbnRhZ2UuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSBheGlzIHRpY2sgdmFsdWUuXG4gKlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIHBlcmNlbnRhZ2UgbGFiZWwuXG4gKi9cbmNvbnN0IGZvcm1hdFBlcmNlbnRhZ2VUaWNrID0gKCB2YWx1ZSApID0+IGAkeyAoIHZhbHVlICogMTAwICkudG9GaXhlZCggMCApIH0lYDtcblxuLyoqXG4gKiBAZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZVZhbHVlXG4gKiBAZGVzY3JpcHRpb24gRm9ybWF0cyBhIG5vcm1hbGl6ZWQgdG9vbHRpcCB2YWx1ZSBhcyBhIHBlcmNlbnRhZ2UuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSB0b29sdGlwIHZhbHVlLlxuICpcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBwZXJjZW50YWdlIGxhYmVsLlxuICovXG5jb25zdCBmb3JtYXRQZXJjZW50YWdlVmFsdWUgPSAoIHZhbHVlICkgPT4gYCR7ICggdmFsdWUgKiAxMDAgKS50b0ZpeGVkKCAxICkgfSVgO1xuXG4vKipcbiAqIEBmdW5jdGlvbiByZXNvbHZlU3RhY2tJZFxuICogQGRlc2NyaXB0aW9uIFJlc29sdmVzIHRoZSBzdGFjayBJRCBmb3IgYSBzZXJpZXMgYmFzZWQgb24gb3B0aW9uIGFuZCBjaGFydCBzZXR0aW5ncy5cbiAqXG4gKiBAc2luY2UgNi42LjNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gIG9wdGlvbiAgICAgVGhlIHNlcmllcyBvcHRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHN0YWNrZWQgICAgV2hldGhlciB0aGUgY2hhcnQgaXMgaW4gc3RhY2tlZCBtb2RlLlxuICogQHBhcmFtIHtib29sZWFufSBub3JtYWxpemVkIFdoZXRoZXIgdGhlIGNoYXJ0IGlzIGluIG5vcm1hbGl6ZWQgbW9kZS5cbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZpbmVkfSBUaGUgc3RhY2sgSUQsIGlmIGFueS5cbiAqL1xuY29uc3QgcmVzb2x2ZVN0YWNrSWQgPSAoIG9wdGlvbiwgc3RhY2tlZCwgbm9ybWFsaXplZCApID0+IHtcblx0aWYgKCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoIG9wdGlvbiwgJ3N0YWNrSWQnICkgKSB7XG5cdFx0cmV0dXJuIG9wdGlvbi5zdGFja0lkIHx8IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggc3RhY2tlZCB8fCBub3JtYWxpemVkICkge1xuXHRcdHJldHVybiAnc3RhY2snO1xuXHR9XG5cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQGZ1bmN0aW9uIHJlc29sdmVTZXJpZXNBY3RpdmVCYXJcbiAqIEBkZXNjcmlwdGlvbiBSZXNvbHZlcyBwZXItc2VyaWVzIGFjdGl2ZUJhciBiZWhhdmlvciBmb3IgUmVjaGFydHMgYW5kIGN1c3RvbSBob3ZlciBzaGFwaW5nLlxuICpcbiAqIEBzaW5jZSA2LjYuM1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb24gVGhlIHNlcmllcyBvcHRpb24uXG4gKlxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzb2x2ZWQgYWN0aXZlQmFyIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmNvbnN0IHJlc29sdmVTZXJpZXNBY3RpdmVCYXIgPSAoIG9wdGlvbiApID0+IHtcblx0aWYgKCBvcHRpb24uYWN0aXZlQmFyID09PSBmYWxzZSApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0YWN0aXZlQmFyOiBmYWxzZSxcblx0XHRcdHVzZUN1c3RvbVNoYXBlSG92ZXI6IGZhbHNlLFxuXHRcdH07XG5cdH1cblxuXHRpZiAoIG9wdGlvbi5hY3RpdmVCYXIgJiYgdHlwZW9mIG9wdGlvbi5hY3RpdmVCYXIgPT09ICdvYmplY3QnICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRhY3RpdmVCYXI6IG9wdGlvbi5hY3RpdmVCYXIsXG5cdFx0XHR1c2VDdXN0b21TaGFwZUhvdmVyOiBmYWxzZSxcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRhY3RpdmVCYXI6IGZhbHNlLFxuXHRcdHVzZUN1c3RvbVNoYXBlSG92ZXI6IHRydWUsXG5cdH07XG59O1xuXG4vKipcbiAqIEBmdW5jdGlvbiBleHRyYWN0QmFyUGFzc1Rocm91Z2hQcm9wc1xuICogQGRlc2NyaXB0aW9uIFNlcGFyYXRlcyBjaGFydC1tYW5hZ2VkIGFuZCBldmVudC1oYW5kbGVyIHByb3BzIGZyb20gb3RoZXIgQmFyIHBhc3MtdGhyb3VnaCBwcm9wcy5cbiAqXG4gKiBAc2luY2UgNi42LjNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gZ2xvYmFsQmFyUHJvcHMgQmFyIHByb3BzIGFwcGxpZWQgdG8gZXZlcnkgc2VyaWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHNlcmllc0JhclByb3BzIFBlci1zZXJpZXMgQmFyIHByb3BzLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH0gUGFzcy10aHJvdWdoIHByb3BzIGFuZCBldmVudCBoYW5kbGVycy5cbiAqL1xuY29uc3QgZXh0cmFjdEJhclBhc3NUaHJvdWdoUHJvcHMgPSAoIGdsb2JhbEJhclByb3BzID0ge30sIHNlcmllc0JhclByb3BzID0ge30gKSA9PiB7XG5cdGNvbnN0IG1lcmdlZEJhclByb3BzID0ge1xuXHRcdC4uLmdsb2JhbEJhclByb3BzLFxuXHRcdC4uLnNlcmllc0JhclByb3BzLFxuXHR9O1xuXG5cdGNvbnN0IHtcblx0XHQvLyByZW1vdmUgYWN0aXZlQmFyIGZyb20gdGhlIHBhc3MtdGhyb3VnaCBwcm9wcy5cblx0XHRhY3RpdmVCYXIsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcblx0XHRvbkNsaWNrLFxuXHRcdG9uTW91c2VFbnRlcixcblx0XHRvbk1vdXNlTGVhdmUsXG5cdFx0b25Nb3VzZURvd24sXG5cdFx0b25Nb3VzZVVwLFxuXHRcdC4uLnBhc3NUaHJvdWdoUHJvcHNcblx0fSA9IG1lcmdlZEJhclByb3BzO1xuXG5cdHJldHVybiB7XG5cdFx0cGFzc1Rocm91Z2hIYW5kbGVyczoge1xuXHRcdFx0b25DbGljayxcblx0XHRcdG9uTW91c2VFbnRlcixcblx0XHRcdG9uTW91c2VMZWF2ZSxcblx0XHRcdG9uTW91c2VEb3duLFxuXHRcdFx0b25Nb3VzZVVwLFxuXHRcdH0sXG5cdFx0cGFzc1Rocm91Z2hQcm9wcyxcblx0fTtcbn07XG5cbi8qKlxuICogQGZ1bmN0aW9uIGNvbXBvc2VCYXJFdmVudEhhbmRsZXJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb3NlcyBSZWNoYXJ0cyBwYXNzLXRocm91Z2ggaGFuZGxlcnMgd2l0aCBjaGFydC1sZXZlbCBjYWxsYmFja3MuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICBkYXRhS2V5ICAgICAgICAgICAgVGhlIGRhdGEga2V5IG9mIHRoZSBiYXIgc2VyaWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbnxudWxsfSBwYXNzVGhyb3VnaEhhbmRsZXIgUmVjaGFydHMgaGFuZGxlciBmcm9tIGJhclByb3BzL29wdGlvbi5iYXJQcm9wcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb258bnVsbH0gY2hhcnRDYWxsYmFjayAgICAgIENoYXJ0LWxldmVsIGNhbGxiYWNrIHByb3AuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufG51bGx9IHNpZGVFZmZlY3QgICAgICAgICBPcHRpb25hbCBpbnRlcm5hbCBzaWRlIGVmZmVjdC5cbiAqXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIGNvbXBvc2VkIGV2ZW50IGhhbmRsZXIgZm9yIGEgQmFyIHNlcmllcy5cbiAqL1xuY29uc3QgY29tcG9zZUJhckV2ZW50SGFuZGxlciA9ICggZGF0YUtleSwgcGFzc1Rocm91Z2hIYW5kbGVyLCBjaGFydENhbGxiYWNrLCBzaWRlRWZmZWN0ID0gbnVsbCApID0+ICggYmFyRGF0YSwgaW5kZXgsIGV2ZW50ICkgPT4ge1xuXHRpZiAoIHNpZGVFZmZlY3QgKSB7XG5cdFx0c2lkZUVmZmVjdCggYmFyRGF0YSwgaW5kZXgsIGV2ZW50ICk7XG5cdH1cblxuXHRpZiAoIHBhc3NUaHJvdWdoSGFuZGxlciApIHtcblx0XHRwYXNzVGhyb3VnaEhhbmRsZXIoIGJhckRhdGEsIGluZGV4LCBldmVudCApO1xuXHR9XG5cblx0aWYgKCAhIGNoYXJ0Q2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y2hhcnRDYWxsYmFjaygge1xuXHRcdGRhdGE6IGJhckRhdGEsXG5cdFx0aW5kZXgsXG5cdFx0ZGF0YUtleSxcblx0XHRldmVudCxcblx0fSApO1xufTtcblxuLyoqXG4gKiBAZnVuY3Rpb24gY3JlYXRlSG92ZXJlZEJhclNoYXBlXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIGJhciBzaGFwZSByZW5kZXJlciB0aGF0IGhpZ2hsaWdodHMgb25seSB0aGUgaG92ZXJlZCBiYXIgc2VnbWVudC5cbiAqXG4gKiBAc2luY2UgNi42LjNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gICAgICBvcHRpb24gICAgIFRoZSBzZXJpZXMgb3B0aW9uLlxuICogQHBhcmFtIHtPYmplY3R8bnVsbH0gaG92ZXJlZEJhciBUaGUgY3VycmVudGx5IGhvdmVyZWQgYmFyIHN0YXRlLlxuICpcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBSZWNoYXJ0cyBiYXIgc2hhcGUgcmVuZGVyZXIuXG4gKi9cbmNvbnN0IGNyZWF0ZUhvdmVyZWRCYXJTaGFwZSA9ICggb3B0aW9uLCBob3ZlcmVkQmFyICkgPT4gKCBwcm9wcyApID0+IHtcblx0Y29uc3QgeyBpbmRleCB9ID0gcHJvcHM7XG5cdGNvbnN0IGlzSG92ZXJlZCA9IGhvdmVyZWRCYXI/LmRhdGFLZXkgPT09IG9wdGlvbi5kYXRhS2V5ICYmIGhvdmVyZWRCYXI/LmluZGV4ID09PSBpbmRleDtcblx0Y29uc3QgZmlsbCA9IGlzSG92ZXJlZCA/ICggb3B0aW9uLmhvdmVyQ29sb3IgfHwgb3B0aW9uLmNvbG9yICkgOiBvcHRpb24uY29sb3I7XG5cblx0cmV0dXJuIChcblx0XHQ8UmVjdGFuZ2xlXG5cdFx0XHR7IC4uLnByb3BzIH1cblx0XHRcdGZpbGw9eyBmaWxsIH1cblx0XHRcdHsgLi4uKCBvcHRpb24ucmFkaXVzID8geyByYWRpdXM6IG9wdGlvbi5yYWRpdXMgfSA6IHt9ICkgfVxuXHRcdC8+XG5cdCk7XG59O1xuXG4vKipcbiAqIEBmdW5jdGlvbiBhcHBseVNlcmllc0JhckxhYmVsXG4gKiBAZGVzY3JpcHRpb24gQXBwbGllcyBhIHBlci1zZXJpZXMgYmFyTGFiZWwgb3ZlcnJpZGUsIGluY2x1ZGluZyBleHBsaWNpdCBmYWxzZSB2YWx1ZXMuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGJhckF0dHJpYnV0ZXMgVGhlIFJlY2hhcnRzIEJhciBwcm9wcyBiZWluZyBhc3NlbWJsZWQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uICAgICAgICBUaGUgc2VyaWVzIG9wdGlvbi5cbiAqXG4gKiBAcmV0dXJuIHt2b2lkfVxuICovXG5jb25zdCBhcHBseVNlcmllc0JhckxhYmVsID0gKCBiYXJBdHRyaWJ1dGVzLCBvcHRpb24gKSA9PiB7XG5cdGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCBvcHRpb24sICdiYXJMYWJlbCcgKSApIHtcblx0XHRiYXJBdHRyaWJ1dGVzLmxhYmVsID0gb3B0aW9uLmJhckxhYmVsO1xuXHR9XG59O1xuXG4vKipcbiAqIEBmdW5jdGlvbiByZXNvbHZlQmFyU2hhcGVcbiAqIEBkZXNjcmlwdGlvbiBSZXNvbHZlcyB0aGUgQmFyIHNoYXBlIHJlbmRlcmVyIHdpdGggZXhwbGljaXQgcHJlY2VkZW5jZS5cbiAqXG4gKiBAc2luY2UgNi42LjNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gICAgICBvcHRpb24gICAgICAgICAgICAgIFRoZSBzZXJpZXMgb3B0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSAgICAgdXNlQ3VzdG9tU2hhcGVIb3ZlciBXaGV0aGVyIGN1c3RvbSBob3ZlciBzaGFwaW5nIGlzIGVuYWJsZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSAgICBwYXNzVGhyb3VnaFNoYXBlICAgIFNoYXBlIGZyb20gYmFyUHJvcHMvb3B0aW9uLmJhclByb3BzLCBpZiBhbnkuXG4gKiBAcGFyYW0ge09iamVjdHxudWxsfSBob3ZlcmVkQmFyICAgICAgICAgIFRoZSBjdXJyZW50bHkgaG92ZXJlZCBiYXIgc3RhdGUuXG4gKlxuICogQHJldHVybiB7RnVuY3Rpb258bnVsbH0gVGhlIHJlc29sdmVkIHNoYXBlIHJlbmRlcmVyLCBpZiBvbmUgc2hvdWxkIGJlIGFwcGxpZWQuXG4gKi9cbmNvbnN0IHJlc29sdmVCYXJTaGFwZSA9ICggb3B0aW9uLCB1c2VDdXN0b21TaGFwZUhvdmVyLCBwYXNzVGhyb3VnaFNoYXBlLCBob3ZlcmVkQmFyICkgPT4ge1xuXHRpZiAoIG9wdGlvbi5zaGFwZSApIHtcblx0XHRyZXR1cm4gb3B0aW9uLnNoYXBlO1xuXHR9XG5cblx0aWYgKCB1c2VDdXN0b21TaGFwZUhvdmVyICYmICEgcGFzc1Rocm91Z2hTaGFwZSApIHtcblx0XHRyZXR1cm4gY3JlYXRlSG92ZXJlZEJhclNoYXBlKCBvcHRpb24sIGhvdmVyZWRCYXIgKTtcblx0fVxuXG5cdHJldHVybiBudWxsO1xufTtcblxuLyoqXG4gKiBAZnVuY3Rpb24gYnVpbGRCYXJTZXJpZXNBdHRyaWJ1dGVzXG4gKiBAZGVzY3JpcHRpb24gQnVpbGRzIFJlY2hhcnRzIEJhciBwcm9wcyBmb3IgYSBzZXJpZXMgd2l0aCBkb2N1bWVudGVkIG1lcmdlIHByZWNlZGVuY2UuXG4gKlxuICogUHJlY2VkZW5jZSAobG93ZXN0IHRvIGhpZ2hlc3QpOlxuICogMS4gQ29tcG9uZW50IGRlZmF1bHRzIChhbmltYXRpb24sIGRhdGFLZXksIGZpbGwsIG5hbWUpXG4gKiAyLiBQZXItc2VyaWVzIG9wdGlvbiBmaWVsZHMgKHN0YWNrSWQsIHJhZGl1cywgbGVnZW5kVHlwZSlcbiAqIDMuIGJhclByb3BzIC8gb3B0aW9uLmJhclByb3BzIHBhc3MtdGhyb3VnaCAoZXhjbHVkaW5nIGFjdGl2ZUJhciBhbmQgZXZlbnQgaGFuZGxlcnMpXG4gKiA0LiBDaGFydC1tYW5hZ2VkIHByb3BzIChhY3RpdmVCYXIsIGNvbXBvc2VkIGV2ZW50IGhhbmRsZXJzKVxuICogNS4gb3B0aW9uLmJhckxhYmVsICh3aGVuIGRlZmluZWQsIGluY2x1ZGluZyBmYWxzZSlcbiAqIDYuIG9wdGlvbi5zaGFwZSwgdGhlbiBjdXN0b20gaG92ZXIgc2hhcGUgd2hlbiBlbmFibGVkXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9ICAgICAgY29uZmlnICAgICAgICAgICAgICAgICBCYXIgYnVpbGQgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSAgICAgIGNvbmZpZy5vcHRpb24gICAgICAgICAgVGhlIHNlcmllcyBvcHRpb24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICAgICBjb25maWcuc3RhY2tlZCAgICAgICAgIFdoZXRoZXIgdGhlIGNoYXJ0IGlzIHN0YWNrZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICAgICBjb25maWcubm9ybWFsaXplZCAgICAgIFdoZXRoZXIgdGhlIGNoYXJ0IGlzIG5vcm1hbGl6ZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICBjb25maWcuYW5pbWF0aW9uRHVyYXRpb24gQW5pbWF0aW9uIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gICAgIGNvbmZpZy5hbmltYXRpb25BY3RpdmUgV2hldGhlciBhbmltYXRpb24gaXMgYWN0aXZlLlxuICogQHBhcmFtIHtPYmplY3R9ICAgICAgY29uZmlnLmJhclByb3BzICAgICAgICBHbG9iYWwgQmFyIHBhc3MtdGhyb3VnaCBwcm9wcy5cbiAqIEBwYXJhbSB7T2JqZWN0fG51bGx9IGNvbmZpZy5ob3ZlcmVkQmFyICAgICAgVGhlIGN1cnJlbnRseSBob3ZlcmVkIGJhciBzdGF0ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259ICAgIGNvbmZpZy5zZXRIb3ZlcmVkQmFyICAgU2V0dGVyIGZvciBob3ZlcmVkIGJhciBzdGF0ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb258bnVsbH0gY29uZmlnLm9uQmFyQ2xpY2sgICAgQ2hhcnQtbGV2ZWwgYmFyIGNsaWNrIGNhbGxiYWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbnxudWxsfSBjb25maWcub25Nb3VzZUVudGVyICBDaGFydC1sZXZlbCBtb3VzZSBlbnRlciBjYWxsYmFjay5cbiAqIEBwYXJhbSB7RnVuY3Rpb258bnVsbH0gY29uZmlnLm9uTW91c2VMZWF2ZSAgQ2hhcnQtbGV2ZWwgbW91c2UgbGVhdmUgY2FsbGJhY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufG51bGx9IGNvbmZpZy5vbk1vdXNlRG93biAgIENoYXJ0LWxldmVsIG1vdXNlIGRvd24gY2FsbGJhY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufG51bGx9IGNvbmZpZy5vbk1vdXNlVXAgICAgIENoYXJ0LWxldmVsIG1vdXNlIHVwIGNhbGxiYWNrLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH0gUmVjaGFydHMgQmFyIHByb3BzIGZvciB0aGUgc2VyaWVzLlxuICovXG5jb25zdCBidWlsZEJhclNlcmllc0F0dHJpYnV0ZXMgPSAoIHtcblx0b3B0aW9uLFxuXHRzdGFja2VkLFxuXHRub3JtYWxpemVkLFxuXHRhbmltYXRpb25EdXJhdGlvbixcblx0YW5pbWF0aW9uQWN0aXZlLFxuXHRiYXJQcm9wcyxcblx0aG92ZXJlZEJhcixcblx0c2V0SG92ZXJlZEJhcixcblx0b25CYXJDbGljayxcblx0b25Nb3VzZUVudGVyLFxuXHRvbk1vdXNlTGVhdmUsXG5cdG9uTW91c2VEb3duLFxuXHRvbk1vdXNlVXAsXG59ICkgPT4ge1xuXHRjb25zdCBzdGFja0lkID0gcmVzb2x2ZVN0YWNrSWQoIG9wdGlvbiwgc3RhY2tlZCwgbm9ybWFsaXplZCApO1xuXHRjb25zdCB7IGFjdGl2ZUJhciwgdXNlQ3VzdG9tU2hhcGVIb3ZlciB9ID0gcmVzb2x2ZVNlcmllc0FjdGl2ZUJhciggb3B0aW9uICk7XG5cdGNvbnN0IHsgcGFzc1Rocm91Z2hIYW5kbGVycywgcGFzc1Rocm91Z2hQcm9wcyB9ID0gZXh0cmFjdEJhclBhc3NUaHJvdWdoUHJvcHMoXG5cdFx0YmFyUHJvcHMsXG5cdFx0b3B0aW9uLmJhclByb3BzIHx8IHt9XG5cdCk7XG5cblx0Y29uc3QgYmFyQXR0cmlidXRlcyA9IHtcblx0XHRhbmltYXRpb25CZWdpbjogMCxcblx0XHRhbmltYXRpb25EdXJhdGlvbixcblx0XHRkYXRhS2V5OiBvcHRpb24uZGF0YUtleSxcblx0XHRmaWxsOiBvcHRpb24uY29sb3IsXG5cdFx0aXNBbmltYXRpb25BY3RpdmU6IGFuaW1hdGlvbkFjdGl2ZSxcblx0XHRuYW1lOiBvcHRpb24ubmFtZSB8fCBvcHRpb24ubGFiZWwsXG5cdFx0Li4uKCBzdGFja0lkID8geyBzdGFja0lkIH0gOiB7fSApLFxuXHRcdC4uLiggb3B0aW9uLnJhZGl1cyA/IHsgcmFkaXVzOiBvcHRpb24ucmFkaXVzIH0gOiB7fSApLFxuXHRcdC4uLiggb3B0aW9uLmxlZ2VuZFR5cGUgPyB7IGxlZ2VuZFR5cGU6IG9wdGlvbi5sZWdlbmRUeXBlIH0gOiB7fSApLFxuXHRcdC4uLnBhc3NUaHJvdWdoUHJvcHMsXG5cdFx0YWN0aXZlQmFyLFxuXHRcdG9uQ2xpY2s6IGNvbXBvc2VCYXJFdmVudEhhbmRsZXIoXG5cdFx0XHRvcHRpb24uZGF0YUtleSxcblx0XHRcdHBhc3NUaHJvdWdoSGFuZGxlcnMub25DbGljayxcblx0XHRcdG9uQmFyQ2xpY2tcblx0XHQpLFxuXHRcdG9uTW91c2VEb3duOiBjb21wb3NlQmFyRXZlbnRIYW5kbGVyKFxuXHRcdFx0b3B0aW9uLmRhdGFLZXksXG5cdFx0XHRwYXNzVGhyb3VnaEhhbmRsZXJzLm9uTW91c2VEb3duLFxuXHRcdFx0b25Nb3VzZURvd25cblx0XHQpLFxuXHRcdG9uTW91c2VFbnRlcjogY29tcG9zZUJhckV2ZW50SGFuZGxlcihcblx0XHRcdG9wdGlvbi5kYXRhS2V5LFxuXHRcdFx0cGFzc1Rocm91Z2hIYW5kbGVycy5vbk1vdXNlRW50ZXIsXG5cdFx0XHRvbk1vdXNlRW50ZXIsXG5cdFx0XHQoIGJhckRhdGEsIGluZGV4ICkgPT4gc2V0SG92ZXJlZEJhciggeyBkYXRhS2V5OiBvcHRpb24uZGF0YUtleSwgaW5kZXggfSApXG5cdFx0KSxcblx0XHRvbk1vdXNlTGVhdmU6IGNvbXBvc2VCYXJFdmVudEhhbmRsZXIoXG5cdFx0XHRvcHRpb24uZGF0YUtleSxcblx0XHRcdHBhc3NUaHJvdWdoSGFuZGxlcnMub25Nb3VzZUxlYXZlLFxuXHRcdFx0b25Nb3VzZUxlYXZlLFxuXHRcdFx0KCkgPT4gc2V0SG92ZXJlZEJhciggbnVsbCApXG5cdFx0KSxcblx0XHRvbk1vdXNlVXA6IGNvbXBvc2VCYXJFdmVudEhhbmRsZXIoXG5cdFx0XHRvcHRpb24uZGF0YUtleSxcblx0XHRcdHBhc3NUaHJvdWdoSGFuZGxlcnMub25Nb3VzZVVwLFxuXHRcdFx0b25Nb3VzZVVwXG5cdFx0KSxcblx0fTtcblxuXHRhcHBseVNlcmllc0JhckxhYmVsKCBiYXJBdHRyaWJ1dGVzLCBvcHRpb24gKTtcblxuXHRjb25zdCByZXNvbHZlZFNoYXBlID0gcmVzb2x2ZUJhclNoYXBlKFxuXHRcdG9wdGlvbixcblx0XHR1c2VDdXN0b21TaGFwZUhvdmVyLFxuXHRcdGJhckF0dHJpYnV0ZXMuc2hhcGUsXG5cdFx0aG92ZXJlZEJhclxuXHQpO1xuXG5cdGlmICggcmVzb2x2ZWRTaGFwZSApIHtcblx0XHRiYXJBdHRyaWJ1dGVzLnNoYXBlID0gcmVzb2x2ZWRTaGFwZTtcblx0fVxuXG5cdHJldHVybiBiYXJBdHRyaWJ1dGVzO1xufTtcblxuLyoqXG4gKiBAbW9kdWxlIEdyYXZpdHlCYXJDaGFydFxuICogQGRlc2NyaXB0aW9uIFRoZSBCYXJDaGFydCBjb21wb25lbnQuIExvYWRlZCBieSB0aGUgQ2hhcnQgcmVuZGVyZXIgYW5kIGRpc3BsYXllZCBieSBwYXNzaW5nIHR5cGUgXCJiYXJcIi5cbiAqXG4gKiBAc2luY2UgNi42LjNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uICBUaGUgZHVyYXRpb24gb2YgdGhlIHJldmVhbCBhbmltYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICBiYXJDaGFydFByb3BzICAgICAgVGhlIHByb3BzIHRvIHBhc3MgdG8gdGhlIEJhckNoYXJ0IGNvbnRhaW5lciAoY2FuIGFsc28gb3ZlcnJpZGUgdGhlIHByZXNldHMgd2UgdXNlKS4gQ2hlY2sgUmVjaGFydHMgZG9jcyBmb3IgYWxsIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgICAgICAgICAgYmFyUHJvcHMgICAgICAgICAgIFRoZSBwcm9wcyB0byBwYXNzIHRvIGVhY2ggQmFyIChjYW4gYWxzbyBvdmVycmlkZSB0aGUgcHJlc2V0cyB3ZSB1c2UpLiBSZWNoYXJ0cyBldmVudCBoYW5kbGVycyBhcmUgY29tcG9zZWQgd2l0aCB0aGUgY2hhcnQtbGV2ZWwgY2FsbGJhY2sgcHJvcHMgcmF0aGVyIHRoYW4gcmVwbGFjZWQuIENoZWNrIFJlY2hhcnRzIGRvY3MgZm9yIGFsbCBhdmFpbGFibGUuXG4gKiBAcGFyYW0ge29iamVjdH0gICAgICAgICAgICAgIGNhcnRlc2lhbkdyaWRQcm9wcyBUaGUgcHJvcHMgdG8gcGFzcyB0byB0aGUgQ2FydGVzaWFuR3JpZCAoY2FuIGFsc28gb3ZlcnJpZGUgdGhlIHByZXNldHMgd2UgdXNlKS4gQ2hlY2sgUmVjaGFydHMgZG9jcyBmb3IgYWxsIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgICAgICAgICAgY2hlY2tib3hQcm9wcyAgICAgIFRoZSBwcm9wcyB0byBwYXNzIHRvIGVhY2ggQ2hlY2tib3guIENoZWNrIG91ciBkb2NzIGZvciBhbGwgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtub2RlfSAgICAgICAgICAgICAgICBjaGlsZHJlbiAgICAgICAgICAgQW55IGFkZGl0aW9uYWwgY29udGVudCB0byBkaXNwbGF5IGJlbG93IHRoZSBjaGFydC5cbiAqIEBwYXJhbSB7b2JqZWN0fSAgICAgICAgICAgICAgY3VzdG9tQXR0cmlidXRlcyAgIEN1c3RvbSBhdHRyaWJ1dGVzIHRvIGFwcGx5IHRvIHRoZSBjaGFydCB3cmFwcGVyLlxuICogQHBhcmFtIHtzdHJpbmd8YXJyYXl8b2JqZWN0fSBjdXN0b21DbGFzc2VzICAgICAgQ3VzdG9tIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIGNoYXJ0IHdyYXBwZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSAgICAgICAgICAgIGN1c3RvbUludGVydmFsICAgICBDdXN0b20gZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSB4LWF4aXMgdGljayBpbnRlcnZhbC5cbiAqIEBwYXJhbSB7YXJyYXl9ICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgIFRoZSBkYXRhIHRvIGRpc3BsYXkgaW4gdGhlIGNoYXJ0LiBDaGVjayBSZWNoYXJ0cyBkb2NzIGZvciBmb3JtYXRzLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgICAgICAgICAgICBncmlkQ29sb3IgICAgICAgICAgVGhlIGNvbG9yIG9mIHRoZSBncmlkIGxpbmVzIGFuZCB0aGUgeCBhbmQgeSBheGlzLlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSAgICAgICBoZWlnaHQgICAgICAgICAgICAgVGhlIGhlaWdodCBvZiB0aGUgY2hhcnQuXG4gKiBAcGFyYW0ge29iamVjdH0gICAgICAgICAgICAgIGxlZ2VuZFByb3BzICAgICAgICBUaGUgcHJvcHMgdG8gcGFzcyB0byB0aGUgTGVnZW5kIChjYW4gYWxzbyBvdmVycmlkZSB0aGUgcHJlc2V0cyB3ZSB1c2UpLiBDaGVjayBSZWNoYXJ0cyBkb2NzIGZvciBhbGwgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtib29sZWFufSAgICAgICAgICAgICBub3JtYWxpemVkICAgICAgICAgV2hldGhlciB0byByZW5kZXIgYSBub3JtYWxpemVkICgxMDAlKSBzdGFja2VkIGNoYXJ0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgICBvbkJhckNsaWNrICAgICAgICAgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGJhciBpcyBjbGlja2VkLiBSZWNlaXZlcyB7IGRhdGEsIGluZGV4LCBkYXRhS2V5LCBldmVudCB9LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgICBvbk1vdXNlRW50ZXIgICAgICAgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGJhciBpcyBob3ZlcmVkLiBSZWNlaXZlcyB7IGRhdGEsIGluZGV4LCBkYXRhS2V5LCBldmVudCB9LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgICBvbk1vdXNlTGVhdmUgICAgICAgQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgbW91c2UgbGVhdmVzIGEgYmFyLiBSZWNlaXZlcyB7IGRhdGEsIGluZGV4LCBkYXRhS2V5LCBldmVudCB9LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgICBvbk1vdXNlRG93biAgICAgICAgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGJhciBpcyBwcmVzc2VkLiBSZWNlaXZlcyB7IGRhdGEsIGluZGV4LCBkYXRhS2V5LCBldmVudCB9LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgICBvbk1vdXNlVXAgICAgICAgICAgQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIGJhciBwcmVzcyBlbmRzLiBSZWNlaXZlcyB7IGRhdGEsIGluZGV4LCBkYXRhS2V5LCBldmVudCB9LlxuICogQHBhcmFtIHthcnJheX0gICAgICAgICAgICAgICBvcHRpb25zICAgICAgICAgICAgVGhlIG9wdGlvbnMgdG8gZGlzcGxheSBhcyBjaGVja2JveGVzIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiBlYWNoIGRhdGEgc2V0LiBTdXBwb3J0cyBwZXItc2VyaWVzIGNvbG9yLCBob3ZlckNvbG9yLCBzdGFja0lkLCBuYW1lLCBsZWdlbmRUeXBlLCBoaWRlLCByYWRpdXMsIGFjdGl2ZUJhciAob2JqZWN0IG9yIGZhbHNlKSwgYmFyTGFiZWwsIGFuZCBiYXJQcm9wcyAoUmVjaGFydHMgZXZlbnQgaGFuZGxlcnMgYXJlIGNvbXBvc2VkIHdpdGggY2hhcnQtbGV2ZWwgY2FsbGJhY2tzKS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gICAgICAgICAgICAgc2hvd0NoZWNrYm94ZXMgICAgIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2hlY2tib3hlcyB0byB0b2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgZWFjaCBkYXRhIHNldC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gICAgICAgICAgICAgc2hvd0xlZ2VuZCAgICAgICAgIFdoZXRoZXIgdG8gc2hvdyB0aGUgbGVnZW5kLlxuICogQHBhcmFtIHtib29sZWFufSAgICAgICAgICAgICBzdGFja2VkICAgICAgICAgICAgV2hldGhlciB0byBzdGFjayBiYXJzIG9yIGRpc3BsYXkgdGhlbSBzaWRlIGJ5IHNpZGUuXG4gKiBAcGFyYW0ge29iamVjdH0gICAgICAgICAgICAgIHRvb2x0aXBQcm9wcyAgICAgICBUaGUgcHJvcHMgdG8gcGFzcyB0byB0aGUgVG9vbHRpcCAoY2FuIGFsc28gb3ZlcnJpZGUgdGhlIHByZXNldHMgd2UgdXNlKS4gQ2hlY2sgUmVjaGFydHMgZG9jcyBmb3IgYWxsIGF2YWlsYWJsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gICAgICAgICAgICAgdG9vbHRpcFNoYXJlZCAgICAgIFdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgc2hhcmVkIGFjcm9zcyBzZXJpZXMgYXQgdGhlIHNhbWUgY2F0ZWdvcnkuXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9ICAgICAgIHdpZHRoICAgICAgICAgICAgICBUaGUgd2lkdGggb2YgdGhlIGNoYXJ0LlxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICB4QXhpc1Byb3BzICAgICAgICAgVGhlIHByb3BzIHRvIHBhc3MgdG8gdGhlIFhBeGlzIChjYW4gYWxzbyBvdmVycmlkZSB0aGUgcHJlc2V0cyB3ZSB1c2UpLiBDaGVjayBSZWNoYXJ0cyBkb2NzIGZvciBhbGwgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICB5QXhpc1Byb3BzICAgICAgICAgVGhlIHByb3BzIHRvIHBhc3MgdG8gdGhlIFlBeGlzIChjYW4gYWxzbyBvdmVycmlkZSB0aGUgcHJlc2V0cyB3ZSB1c2UpLiBDaGVjayBSZWNoYXJ0cyBkb2NzIGZvciBhbGwgYXZhaWxhYmxlLlxuICogQHBhcmFtIHtvYmplY3R9ICAgICAgICAgICAgICByZWYgICAgICAgICAgICAgICAgVGhlIHJlZmVyZW5jZSB0byB0aGUgY2hhcnQgY29tcG9uZW50LlxuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fG51bGx9IFRoZSBCYXJDaGFydCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEdyYXZpdHlCYXJDaGFydCA9IGZvcndhcmRSZWYoICgge1xuXHRhbmltYXRpb25EdXJhdGlvbiA9IDEwMDAsXG5cdGJhckNoYXJ0UHJvcHMgPSB7fSxcblx0YmFyUHJvcHMgPSB7fSxcblx0Y2FydGVzaWFuR3JpZFByb3BzID0ge30sXG5cdGNoZWNrYm94UHJvcHMgPSB7fSxcblx0Y2hpbGRyZW4gPSBudWxsLFxuXHRjdXN0b21BdHRyaWJ1dGVzID0ge30sXG5cdGN1c3RvbUNsYXNzZXMgPSB7fSxcblx0Y3VzdG9tSW50ZXJ2YWwgPSBudWxsLFxuXHRkYXRhID0gW10sXG5cdGdyaWRDb2xvciA9ICcjZWNlZGY4Jyxcblx0aGVpZ2h0ID0gNDAwLFxuXHRsZWdlbmRQcm9wcyA9IHt9LFxuXHRub3JtYWxpemVkID0gZmFsc2UsXG5cdG9uQmFyQ2xpY2sgPSBudWxsLFxuXHRvbk1vdXNlRW50ZXIgPSBudWxsLFxuXHRvbk1vdXNlTGVhdmUgPSBudWxsLFxuXHRvbk1vdXNlRG93biA9IG51bGwsXG5cdG9uTW91c2VVcCA9IG51bGwsXG5cdG9wdGlvbnMgPSBbXSxcblx0c2hvd0NoZWNrYm94ZXMgPSB0cnVlLFxuXHRzaG93TGVnZW5kID0gZmFsc2UsXG5cdHN0YWNrZWQgPSBmYWxzZSxcblx0dG9vbHRpcFByb3BzID0ge30sXG5cdHRvb2x0aXBTaGFyZWQgPSBmYWxzZSxcblx0d2lkdGggPSAnMTAwJScsXG5cdHhBeGlzUHJvcHMgPSB7fSxcblx0eUF4aXNQcm9wcyA9IHt9LFxufSwgcmVmICkgPT4ge1xuXHRjb25zdCBjb21wb25lbnRQcm9wcyA9IHtcblx0XHRjbGFzc05hbWU6IGNsYXNzbmFtZXMoIHtcblx0XHRcdCdnZm9ybS1jaGFydC0tYmFyJzogdHJ1ZSxcblx0XHRcdCdnZm9ybS1jaGFydF9fd3JhcHBlcic6IHRydWUsXG5cdFx0fSwgY3VzdG9tQ2xhc3NlcyApLFxuXHRcdC4uLmN1c3RvbUF0dHJpYnV0ZXMsXG5cdFx0cmVmLFxuXHR9O1xuXHRjb25zdCB2aXNpYmxlT3B0aW9ucyA9IG9wdGlvbnMuZmlsdGVyKCAoIG9wdGlvbiApID0+ICEgb3B0aW9uLmhpZGUgKTtcblx0Y29uc3QgaW5pdGlhbENoZWNrYm94U3RhdGUgPSB2aXNpYmxlT3B0aW9ucy5yZWR1Y2UoICggYWNjLCBvcHRpb24gKSA9PiB7XG5cdFx0YWNjWyBvcHRpb24uZGF0YUtleSBdID0gb3B0aW9uLmRlZmF1bHRDaGVja2VkID8/IHRydWU7XG5cdFx0cmV0dXJuIGFjYztcblx0fSwge30gKTtcblxuXHRjb25zdCBbIGNoZWNrYm94U3RhdGUsIHNldENoZWNrYm94U3RhdGUgXSA9IHVzZVN0YXRlKCBpbml0aWFsQ2hlY2tib3hTdGF0ZSApO1xuXHRjb25zdCBbIGFuaW1hdGlvbkFjdGl2ZSwgc2V0QW5pbWF0aW9uQWN0aXZlIF0gPSB1c2VTdGF0ZSggdHJ1ZSApO1xuXHRjb25zdCBbIGhvdmVyZWRCYXIsIHNldEhvdmVyZWRCYXIgXSA9IHVzZVN0YXRlKCBudWxsICk7XG5cdGNvbnN0IFsgaW50ZXJ2YWwsIHNldEludGVydmFsIF0gPSB1c2VTdGF0ZSggTWF0aC5mbG9vciggZGF0YS5sZW5ndGggLyAxMCApICk7XG5cblx0LyoqXG5cdCAqIEBmdW5jdGlvbiB1cGRhdGVJbnRlcnZhbFxuXHQgKiBAZGVzY3JpcHRpb24gVXBkYXRlcyB0aGUgeC1heGlzIHRpY2sgaW50ZXJ2YWwgYmFzZWQgb24gdmlld3BvcnQgd2lkdGguXG5cdCAqXG5cdCAqIEBzaW5jZSA2LjYuM1xuXHQgKlxuXHQgKiBAcmV0dXJuIHt2b2lkfVxuXHQgKi9cblx0Y29uc3QgdXBkYXRlSW50ZXJ2YWwgPSAoKSA9PiB7XG5cdFx0Y29uc3Qgc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcblx0XHRzZXRJbnRlcnZhbCggTWF0aC5mbG9vciggZGF0YS5sZW5ndGggLyAoIHNjcmVlbldpZHRoIC8gMTgwICkgKSApO1xuXHR9O1xuXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xuXHRcdGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0c2V0QW5pbWF0aW9uQWN0aXZlKCBmYWxzZSApO1xuXHRcdH0sIGFuaW1hdGlvbkR1cmF0aW9uICk7XG5cblx0XHRyZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KCB0aW1lciApO1xuXHR9LCBbXSApO1xuXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xuXHRcdGlmICggY3VzdG9tSW50ZXJ2YWwgKSB7XG5cdFx0XHRjdXN0b21JbnRlcnZhbCggc2V0SW50ZXJ2YWwsIGRhdGEubGVuZ3RoICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHVwZGF0ZUludGVydmFsKCk7XG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3Jlc2l6ZScsIHVwZGF0ZUludGVydmFsICk7XG5cblx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCAncmVzaXplJywgdXBkYXRlSW50ZXJ2YWwgKTtcblx0XHRcdH07XG5cdFx0fVxuXHR9LCBbIGRhdGEubGVuZ3RoLCBjdXN0b21JbnRlcnZhbCBdICk7XG5cblx0LyoqXG5cdCAqIEBmdW5jdGlvbiBoYW5kbGVDaGVja2JveENoYW5nZVxuXHQgKiBAZGVzY3JpcHRpb24gVG9nZ2xlcyB2aXNpYmlsaXR5IG9mIGEgZGF0YSBzZXJpZXMgdmlhIGNoZWNrYm94LlxuXHQgKlxuXHQgKiBAc2luY2UgNi42LjNcblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IGRhdGFLZXkgVGhlIGRhdGEga2V5IHRvIHRvZ2dsZS5cblx0ICpcblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdGNvbnN0IGhhbmRsZUNoZWNrYm94Q2hhbmdlID0gKCBkYXRhS2V5ICkgPT4ge1xuXHRcdHNldENoZWNrYm94U3RhdGUoICggcHJldlN0YXRlICkgPT4gKCB7XG5cdFx0XHQuLi5wcmV2U3RhdGUsXG5cdFx0XHRbIGRhdGFLZXkgXTogISBwcmV2U3RhdGVbIGRhdGFLZXkgXSxcblx0XHR9ICkgKTtcblx0fTtcblxuXHRjb25zdCBjYXJ0ZXNpYW5HcmlkQXR0cmlidXRlcyA9IHtcblx0XHRzdHJva2U6IGdyaWRDb2xvcixcblx0XHRzdHJva2VEYXNoYXJyYXk6ICcwJyxcblx0XHR2ZXJ0aWNhbDogZmFsc2UsXG5cdFx0Li4uY2FydGVzaWFuR3JpZFByb3BzLFxuXHR9O1xuXG5cdGNvbnN0IHlBeGlzQXR0cmlidXRlcyA9IHtcblx0XHRheGlzTGluZTogeyBzdHJva2U6IGdyaWRDb2xvciB9LFxuXHRcdHBhZGRpbmc6IHsgdG9wOiAxMCB9LFxuXHRcdHRpY2tMaW5lOiB7IHN0cm9rZTogZ3JpZENvbG9yIH0sXG5cdFx0Li4uKCBub3JtYWxpemVkICYmICEgeUF4aXNQcm9wcy50aWNrRm9ybWF0dGVyID8geyB0aWNrRm9ybWF0dGVyOiBmb3JtYXRQZXJjZW50YWdlVGljayB9IDoge30gKSxcblx0XHQuLi55QXhpc1Byb3BzLFxuXHR9O1xuXG5cdGNvbnN0IHhBeGlzQXR0cmlidXRlcyA9IHtcblx0XHRheGlzTGluZTogeyBzdHJva2U6IGdyaWRDb2xvciB9LFxuXHRcdHRpY2tMaW5lOiB7IHN0cm9rZTogZ3JpZENvbG9yIH0sXG5cdFx0aW50ZXJ2YWwsXG5cdFx0Li4ueEF4aXNQcm9wcyxcblx0fTtcblxuXHRjb25zdCB0b29sdGlwQXR0cmlidXRlcyA9IGJ1aWxkVG9vbHRpcEF0dHJpYnV0ZXMoIHtcblx0XHRjdXJzb3I6IGZhbHNlLFxuXHRcdGRlZmF1bHRWYWx1ZUZvcm1hdHRlcjogbm9ybWFsaXplZCAmJiAhIHRvb2x0aXBQcm9wcy5mb3JtYXR0ZXIgPyBmb3JtYXRQZXJjZW50YWdlVmFsdWUgOiBudWxsLFxuXHRcdHRvb2x0aXBQcm9wcyxcblx0XHR0b29sdGlwU2hhcmVkLFxuXHR9ICk7XG5cblx0Y29uc3QgbGVnZW5kQXR0cmlidXRlcyA9IHtcblx0XHQuLi5sZWdlbmRQcm9wcyxcblx0fTtcblxuXHRjb25zdCBiYXJDaGFydEF0dHJpYnV0ZXMgPSB7XG5cdFx0YWNjZXNzaWJpbGl0eUxheWVyOiB0cnVlLFxuXHRcdGRhdGEsXG5cdFx0bWFyZ2luOiB7IHRvcDogMCwgcmlnaHQ6IDIwLCBsZWZ0OiAwLCBib3R0b206IDAgfSxcblx0XHQuLi4oIG5vcm1hbGl6ZWQgJiYgISBiYXJDaGFydFByb3BzLnN0YWNrT2Zmc2V0ID8geyBzdGFja09mZnNldDogJ2V4cGFuZCcgfSA6IHt9ICksXG5cdFx0Li4uYmFyQ2hhcnRQcm9wcyxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgeyAuLi5jb21wb25lbnRQcm9wcyB9PlxuXHRcdFx0eyBzaG93Q2hlY2tib3hlcyAmJiAoXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZ2Zvcm0tY2hhcnRfX2NoZWNrYm94ZXNcIj5cblx0XHRcdFx0XHQ8Qm94IGRpc3BsYXk9XCJmbGV4XCIgc3BhY2luZz17IFsgMCwgNSwgMCwgMCBdIH0+XG5cdFx0XHRcdFx0XHR7IHZpc2libGVPcHRpb25zLm1hcCggKCBvcHRpb24gKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNoZWNrYm94QXR0cmlidXRlcyA9IHtcblx0XHRcdFx0XHRcdFx0XHRleHRlcm5hbENoZWNrZWQ6IGNoZWNrYm94U3RhdGVbIG9wdGlvbi5kYXRhS2V5IF0sXG5cdFx0XHRcdFx0XHRcdFx0ZXh0ZXJuYWxDb250cm9sOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdGxhYmVsQXR0cmlidXRlczoge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IG9wdGlvbi5sYWJlbCxcblx0XHRcdFx0XHRcdFx0XHRcdHdlaWdodDogJ25vcm1hbCcsXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZTogKCkgPT4gaGFuZGxlQ2hlY2tib3hDaGFuZ2UoIG9wdGlvbi5kYXRhS2V5ICksXG5cdFx0XHRcdFx0XHRcdFx0c3BhY2luZzogWyAwLCAwLCA0LCAzIF0sXG5cdFx0XHRcdFx0XHRcdFx0Li4uY2hlY2tib3hQcm9wcyxcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHQ8Q2hlY2tib3gga2V5PXsgb3B0aW9uLmRhdGFLZXkgfSB7IC4uLmNoZWNrYm94QXR0cmlidXRlcyB9IC8+XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9ICkgfVxuXHRcdFx0XHRcdDwvQm94PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdCkgfVxuXHRcdFx0PFJlc3BvbnNpdmVDb250YWluZXIgd2lkdGg9eyB3aWR0aCB9IGhlaWdodD17IGhlaWdodCB9PlxuXHRcdFx0XHQ8QmFyQ2hhcnQgeyAuLi5iYXJDaGFydEF0dHJpYnV0ZXMgfT5cblx0XHRcdFx0XHQ8Q2FydGVzaWFuR3JpZCB7IC4uLmNhcnRlc2lhbkdyaWRBdHRyaWJ1dGVzIH0gLz5cblx0XHRcdFx0XHQ8WEF4aXMgeyAuLi54QXhpc0F0dHJpYnV0ZXMgfSAvPlxuXHRcdFx0XHRcdDxZQXhpcyB7IC4uLnlBeGlzQXR0cmlidXRlcyB9IC8+XG5cdFx0XHRcdFx0PFRvb2x0aXAgeyAuLi50b29sdGlwQXR0cmlidXRlcyB9IC8+XG5cdFx0XHRcdFx0eyBzaG93TGVnZW5kICYmIDxMZWdlbmQgeyAuLi5sZWdlbmRBdHRyaWJ1dGVzIH0gLz4gfVxuXHRcdFx0XHRcdHsgb3B0aW9ucy5tYXAoXG5cdFx0XHRcdFx0XHQoIG9wdGlvbiApID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKCBvcHRpb24uaGlkZSB8fCAhIGNoZWNrYm94U3RhdGVbIG9wdGlvbi5kYXRhS2V5IF0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRjb25zdCBiYXJBdHRyaWJ1dGVzID0gYnVpbGRCYXJTZXJpZXNBdHRyaWJ1dGVzKCB7XG5cdFx0XHRcdFx0XHRcdFx0b3B0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHN0YWNrZWQsXG5cdFx0XHRcdFx0XHRcdFx0bm9ybWFsaXplZCxcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRpb25EdXJhdGlvbixcblx0XHRcdFx0XHRcdFx0XHRhbmltYXRpb25BY3RpdmUsXG5cdFx0XHRcdFx0XHRcdFx0YmFyUHJvcHMsXG5cdFx0XHRcdFx0XHRcdFx0aG92ZXJlZEJhcixcblx0XHRcdFx0XHRcdFx0XHRzZXRIb3ZlcmVkQmFyLFxuXHRcdFx0XHRcdFx0XHRcdG9uQmFyQ2xpY2ssXG5cdFx0XHRcdFx0XHRcdFx0b25Nb3VzZUVudGVyLFxuXHRcdFx0XHRcdFx0XHRcdG9uTW91c2VMZWF2ZSxcblx0XHRcdFx0XHRcdFx0XHRvbk1vdXNlRG93bixcblx0XHRcdFx0XHRcdFx0XHRvbk1vdXNlVXAsXG5cdFx0XHRcdFx0XHRcdH0gKTtcblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdDxCYXIga2V5PXsgb3B0aW9uLmRhdGFLZXkgfSB7IC4uLmJhckF0dHJpYnV0ZXMgfSAvPlxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCkgfVxuXHRcdFx0XHQ8L0JhckNoYXJ0PlxuXHRcdFx0PC9SZXNwb25zaXZlQ29udGFpbmVyPlxuXHRcdFx0eyBjaGlsZHJlbiB9XG5cdFx0PC9kaXY+XG5cdCk7XG59ICk7XG5cbkdyYXZpdHlCYXJDaGFydC5wcm9wVHlwZXMgPSB7XG5cdGFuaW1hdGlvbkR1cmF0aW9uOiBQcm9wVHlwZXMubnVtYmVyLFxuXHRiYXJDaGFydFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRiYXJQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcblx0Y2FydGVzaWFuR3JpZFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRjaGVja2JveFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRjaGlsZHJlbjogUHJvcFR5cGVzLm9uZU9mVHlwZSggW1xuXHRcdFByb3BUeXBlcy5hcnJheU9mKCBQcm9wVHlwZXMubm9kZSApLFxuXHRcdFByb3BUeXBlcy5ub2RlLFxuXHRdICksXG5cdGN1c3RvbUF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG5cdGN1c3RvbUNsYXNzZXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoIFtcblx0XHRQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdFByb3BUeXBlcy5hcnJheSxcblx0XHRQcm9wVHlwZXMub2JqZWN0LFxuXHRdICksXG5cdGN1c3RvbUludGVydmFsOiBQcm9wVHlwZXMuZnVuYyxcblx0ZGF0YTogUHJvcFR5cGVzLmFycmF5LFxuXHRncmlkQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdGhlaWdodDogUHJvcFR5cGVzLm9uZU9mVHlwZSggWyBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyIF0gKSxcblx0bGVnZW5kUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG5cdG5vcm1hbGl6ZWQ6IFByb3BUeXBlcy5ib29sLFxuXHRvbkJhckNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblx0b25Nb3VzZUVudGVyOiBQcm9wVHlwZXMuZnVuYyxcblx0b25Nb3VzZUxlYXZlOiBQcm9wVHlwZXMuZnVuYyxcblx0b25Nb3VzZURvd246IFByb3BUeXBlcy5mdW5jLFxuXHRvbk1vdXNlVXA6IFByb3BUeXBlcy5mdW5jLFxuXHRvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXksXG5cdHNob3dDaGVja2JveGVzOiBQcm9wVHlwZXMuYm9vbCxcblx0c2hvd0xlZ2VuZDogUHJvcFR5cGVzLmJvb2wsXG5cdHN0YWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuXHR0b29sdGlwUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG5cdHRvb2x0aXBTaGFyZWQ6IFByb3BUeXBlcy5ib29sLFxuXHR3aWR0aDogUHJvcFR5cGVzLm9uZU9mVHlwZSggWyBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubnVtYmVyIF0gKSxcblx0eEF4aXNQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcblx0eUF4aXNQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbkdyYXZpdHlCYXJDaGFydC5kaXNwbGF5TmFtZSA9ICdCYXJDaGFydCc7XG5cbmV4cG9ydCBkZWZhdWx0IEdyYXZpdHlCYXJDaGFydDtcbiJdLCJuYW1lcyI6WyJjbGFzc25hbWVzIiwiUHJvcFR5cGVzIiwiUmVhY3QiLCJCYXJDaGFydCIsIkJhciIsIlhBeGlzIiwiWUF4aXMiLCJDYXJ0ZXNpYW5HcmlkIiwiVG9vbHRpcCIsIkxlZ2VuZCIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJSZWN0YW5nbGUiLCJCb3giLCJDaGVja2JveCIsImJ1aWxkVG9vbHRpcEF0dHJpYnV0ZXMiLCJmb3J3YXJkUmVmIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJmb3JtYXRQZXJjZW50YWdlVGljayIsInZhbHVlIiwiY29uY2F0IiwidG9GaXhlZCIsImZvcm1hdFBlcmNlbnRhZ2VWYWx1ZSIsInJlc29sdmVTdGFja0lkIiwib3B0aW9uIiwic3RhY2tlZCIsIm5vcm1hbGl6ZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzdGFja0lkIiwidW5kZWZpbmVkIiwicmVzb2x2ZVNlcmllc0FjdGl2ZUJhciIsImFjdGl2ZUJhciIsInVzZUN1c3RvbVNoYXBlSG92ZXIiLCJfdHlwZW9mIiwiZXh0cmFjdEJhclBhc3NUaHJvdWdoUHJvcHMiLCJnbG9iYWxCYXJQcm9wcyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNlcmllc0JhclByb3BzIiwibWVyZ2VkQmFyUHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwib25DbGljayIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VEb3duIiwib25Nb3VzZVVwIiwicGFzc1Rocm91Z2hQcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInBhc3NUaHJvdWdoSGFuZGxlcnMiLCJjb21wb3NlQmFyRXZlbnRIYW5kbGVyIiwiZGF0YUtleSIsInBhc3NUaHJvdWdoSGFuZGxlciIsImNoYXJ0Q2FsbGJhY2siLCJzaWRlRWZmZWN0IiwiYmFyRGF0YSIsImluZGV4IiwiZXZlbnQiLCJkYXRhIiwiY3JlYXRlSG92ZXJlZEJhclNoYXBlIiwiaG92ZXJlZEJhciIsInByb3BzIiwiaXNIb3ZlcmVkIiwiZmlsbCIsImhvdmVyQ29sb3IiLCJjb2xvciIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyIsInJhZGl1cyIsImFwcGx5U2VyaWVzQmFyTGFiZWwiLCJiYXJBdHRyaWJ1dGVzIiwibGFiZWwiLCJiYXJMYWJlbCIsInJlc29sdmVCYXJTaGFwZSIsInBhc3NUaHJvdWdoU2hhcGUiLCJzaGFwZSIsImJ1aWxkQmFyU2VyaWVzQXR0cmlidXRlcyIsIl9yZWYiLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkFjdGl2ZSIsImJhclByb3BzIiwic2V0SG92ZXJlZEJhciIsIm9uQmFyQ2xpY2siLCJfcmVzb2x2ZVNlcmllc0FjdGl2ZUIiLCJfZXh0cmFjdEJhclBhc3NUaHJvdWciLCJhbmltYXRpb25CZWdpbiIsImlzQW5pbWF0aW9uQWN0aXZlIiwibmFtZSIsImxlZ2VuZFR5cGUiLCJyZXNvbHZlZFNoYXBlIiwiR3Jhdml0eUJhckNoYXJ0IiwiX3JlZjIiLCJyZWYiLCJfcmVmMiRhbmltYXRpb25EdXJhdGkiLCJfcmVmMiRiYXJDaGFydFByb3BzIiwiYmFyQ2hhcnRQcm9wcyIsIl9yZWYyJGJhclByb3BzIiwiX3JlZjIkY2FydGVzaWFuR3JpZFByIiwiY2FydGVzaWFuR3JpZFByb3BzIiwiX3JlZjIkY2hlY2tib3hQcm9wcyIsImNoZWNrYm94UHJvcHMiLCJfcmVmMiRjaGlsZHJlbiIsImNoaWxkcmVuIiwiX3JlZjIkY3VzdG9tQXR0cmlidXRlIiwiY3VzdG9tQXR0cmlidXRlcyIsIl9yZWYyJGN1c3RvbUNsYXNzZXMiLCJjdXN0b21DbGFzc2VzIiwiX3JlZjIkY3VzdG9tSW50ZXJ2YWwiLCJjdXN0b21JbnRlcnZhbCIsIl9yZWYyJGRhdGEiLCJfcmVmMiRncmlkQ29sb3IiLCJncmlkQ29sb3IiLCJfcmVmMiRoZWlnaHQiLCJoZWlnaHQiLCJfcmVmMiRsZWdlbmRQcm9wcyIsImxlZ2VuZFByb3BzIiwiX3JlZjIkbm9ybWFsaXplZCIsIl9yZWYyJG9uQmFyQ2xpY2siLCJfcmVmMiRvbk1vdXNlRW50ZXIiLCJfcmVmMiRvbk1vdXNlTGVhdmUiLCJfcmVmMiRvbk1vdXNlRG93biIsIl9yZWYyJG9uTW91c2VVcCIsIl9yZWYyJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZjIkc2hvd0NoZWNrYm94ZXMiLCJzaG93Q2hlY2tib3hlcyIsIl9yZWYyJHNob3dMZWdlbmQiLCJzaG93TGVnZW5kIiwiX3JlZjIkc3RhY2tlZCIsIl9yZWYyJHRvb2x0aXBQcm9wcyIsInRvb2x0aXBQcm9wcyIsIl9yZWYyJHRvb2x0aXBTaGFyZWQiLCJ0b29sdGlwU2hhcmVkIiwiX3JlZjIkd2lkdGgiLCJ3aWR0aCIsIl9yZWYyJHhBeGlzUHJvcHMiLCJ4QXhpc1Byb3BzIiwiX3JlZjIkeUF4aXNQcm9wcyIsInlBeGlzUHJvcHMiLCJjb21wb25lbnRQcm9wcyIsImNsYXNzTmFtZSIsInZpc2libGVPcHRpb25zIiwiZmlsdGVyIiwiaGlkZSIsImluaXRpYWxDaGVja2JveFN0YXRlIiwicmVkdWNlIiwiYWNjIiwiX29wdGlvbiRkZWZhdWx0Q2hlY2tlIiwiZGVmYXVsdENoZWNrZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJjaGVja2JveFN0YXRlIiwic2V0Q2hlY2tib3hTdGF0ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0Iiwic2V0QW5pbWF0aW9uQWN0aXZlIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJfdXNlU3RhdGU3IiwiTWF0aCIsImZsb29yIiwiX3VzZVN0YXRlOCIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJ1cGRhdGVJbnRlcnZhbCIsInNjcmVlbldpZHRoIiwid2luZG93IiwiaW5uZXJXaWR0aCIsInRpbWVyIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2hlY2tib3hDaGFuZ2UiLCJwcmV2U3RhdGUiLCJfZGVmaW5lUHJvcGVydHkiLCJjYXJ0ZXNpYW5HcmlkQXR0cmlidXRlcyIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInZlcnRpY2FsIiwieUF4aXNBdHRyaWJ1dGVzIiwiYXhpc0xpbmUiLCJwYWRkaW5nIiwidG9wIiwidGlja0xpbmUiLCJ0aWNrRm9ybWF0dGVyIiwieEF4aXNBdHRyaWJ1dGVzIiwidG9vbHRpcEF0dHJpYnV0ZXMiLCJjdXJzb3IiLCJkZWZhdWx0VmFsdWVGb3JtYXR0ZXIiLCJmb3JtYXR0ZXIiLCJsZWdlbmRBdHRyaWJ1dGVzIiwiYmFyQ2hhcnRBdHRyaWJ1dGVzIiwiYWNjZXNzaWJpbGl0eUxheWVyIiwibWFyZ2luIiwicmlnaHQiLCJsZWZ0IiwiYm90dG9tIiwic3RhY2tPZmZzZXQiLCJkaXNwbGF5Iiwic3BhY2luZyIsIm1hcCIsImNoZWNrYm94QXR0cmlidXRlcyIsImV4dGVybmFsQ2hlY2tlZCIsImV4dGVybmFsQ29udHJvbCIsImxhYmVsQXR0cmlidXRlcyIsIndlaWdodCIsIm9uQ2hhbmdlIiwia2V5IiwicHJvcFR5cGVzIiwibnVtYmVyIiwib2JqZWN0Iiwib25lT2ZUeXBlIiwiYXJyYXlPZiIsIm5vZGUiLCJzdHJpbmciLCJhcnJheSIsImZ1bmMiLCJib29sIiwiZGlzcGxheU5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../components/react/admin/modules/Chart/BarChart/index.js\n\n}");

/***/ }),

/***/ "../components/react/admin/modules/Chart/common/Tooltip.js":
/*!*****************************************************************!*\
  !*** ../components/react/admin/modules/Chart/common/Tooltip.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   buildTooltipAttributes: function() { return /* binding */ buildTooltipAttributes; },\n/* harmony export */   createChartTooltipContent: function() { return /* binding */ createChartTooltipContent; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/extends */ \"../../../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @gravityforms/libraries */ \"@gravityforms/libraries\");\n/* harmony import */ var _gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\nvar _excluded = [\"content\", \"labelFormatter\", \"formatter\", \"itemSorter\", \"shared\", \"cursor\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n\nvar tooltipStyles = {\n  container: {\n    backgroundColor: '#242748',\n    // Dark blue background\n    color: '#ffffff',\n    // White text\n    padding: '8px',\n    borderRadius: '3px',\n    position: 'relative',\n    textAlign: 'left',\n    fontSize: '12px'\n  },\n  label: {\n    fontWeight: '600',\n    marginBottom: '4px'\n  },\n  entry: {\n    alignItems: 'center',\n    display: 'flex',\n    fontWeight: 'normal',\n    gap: '6px'\n  },\n  swatch: {\n    borderRadius: '2px',\n    flexShrink: 0,\n    height: '8px',\n    width: '8px'\n  }\n};\n\n/**\n * @function capitalizeFirstLetter\n * @description Capitalize the first letter of a string.\n *\n * @since 4.4.4\n *\n * @param {string} string The string to capitalize the first letter of.\n *\n * @return {string} The string with the first letter capitalized.\n */\nfunction capitalizeFirstLetter(string) {\n  if (!string) {\n    return '';\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * @function createChartTooltipContent\n * @description Creates a Recharts tooltip content renderer with optional formatters.\n *\n * @since 6.6.3\n *\n * @param {Object}   config                 Tooltip configuration.\n * @param {Function} config.labelFormatter  Optional formatter for the category label.\n * @param {Function} config.valueFormatter  Optional formatter for each series value.\n * @return {Function} Recharts tooltip content renderer.\n */\nvar createChartTooltipContent = function createChartTooltipContent() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n    _ref$labelFormatter = _ref.labelFormatter,\n    labelFormatter = _ref$labelFormatter === void 0 ? null : _ref$labelFormatter,\n    _ref$valueFormatter = _ref.valueFormatter,\n    valueFormatter = _ref$valueFormatter === void 0 ? null : _ref$valueFormatter;\n  return function (tooltipProps) {\n    return /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(ChartTooltip, (0,_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, tooltipProps, {\n      labelFormatter: labelFormatter,\n      valueFormatter: valueFormatter\n    }));\n  };\n};\n\n/**\n * @function buildTooltipAttributes\n * @description Builds Recharts Tooltip props with shared defaults and CustomTooltip wiring.\n *\n * @since 6.6.3\n *\n * @param {Object}        config                      Tooltip build configuration.\n * @param {Object}        config.cursor               Default cursor configuration.\n * @param {Object}        config.tooltipProps         Consumer-provided tooltip props.\n * @param {boolean}       config.tooltipShared        Whether the tooltip is shared across series.\n * @param {Function|null} config.defaultValueFormatter Default value formatter when none is provided.\n *\n * @return {Object} Recharts Tooltip props.\n */\nvar buildTooltipAttributes = function buildTooltipAttributes(_ref2) {\n  var cursor = _ref2.cursor,\n    _ref2$tooltipProps = _ref2.tooltipProps,\n    tooltipProps = _ref2$tooltipProps === void 0 ? {} : _ref2$tooltipProps,\n    _ref2$tooltipShared = _ref2.tooltipShared,\n    tooltipShared = _ref2$tooltipShared === void 0 ? true : _ref2$tooltipShared,\n    _ref2$defaultValueFor = _ref2.defaultValueFormatter,\n    defaultValueFormatter = _ref2$defaultValueFor === void 0 ? null : _ref2$defaultValueFor;\n  var customContent = tooltipProps.content,\n    labelFormatter = tooltipProps.labelFormatter,\n    formatter = tooltipProps.formatter,\n    itemSorter = tooltipProps.itemSorter,\n    shared = tooltipProps.shared,\n    tooltipCursor = tooltipProps.cursor,\n    restTooltipProps = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(tooltipProps, _excluded);\n  var valueFormatter = formatter || defaultValueFormatter;\n  return _objectSpread({\n    content: customContent || createChartTooltipContent({\n      labelFormatter: labelFormatter,\n      valueFormatter: valueFormatter\n    }),\n    cursor: tooltipCursor !== undefined ? tooltipCursor : cursor,\n    formatter: valueFormatter,\n    itemSorter: itemSorter,\n    labelFormatter: labelFormatter,\n    shared: shared !== undefined ? shared : tooltipShared\n  }, restTooltipProps);\n};\n\n/**\n * @module ChartTooltip\n * @description The tooltip component for charts.\n *\n * @since 4.4.4\n *\n * @param {boolean}  active          Whether the tooltip is active.\n * @param {Array}    payload         The payload of the tooltip.\n * @param {string}   label           The label of the tooltip.\n * @param {Function} labelFormatter  Optional formatter for the category label.\n * @param {Function} valueFormatter  Optional formatter for each series value.\n *\n * @return {JSX.Element|null} The tooltip component.\n */\nvar ChartTooltip = function ChartTooltip(_ref3) {\n  var active = _ref3.active,\n    payload = _ref3.payload,\n    label = _ref3.label,\n    _ref3$labelFormatter = _ref3.labelFormatter,\n    labelFormatter = _ref3$labelFormatter === void 0 ? null : _ref3$labelFormatter,\n    _ref3$valueFormatter = _ref3.valueFormatter,\n    valueFormatter = _ref3$valueFormatter === void 0 ? null : _ref3$valueFormatter;\n  if (!active || !payload || !payload.length) {\n    return null;\n  }\n\n  // Recharts Tooltip applies itemSorter before passing payload to custom content.\n  var formattedLabel = labelFormatter ? labelFormatter(label, payload) : label;\n  return /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"div\", {\n    style: tooltipStyles.container\n  }, formattedLabel !== null && formattedLabel !== undefined && formattedLabel !== '' && /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"div\", {\n    style: tooltipStyles.label\n  }, formattedLabel), payload.map(function (entry, index) {\n    var defaultDisplayName = entry.name || entry.dataKey || '';\n    var formattedEntry = valueFormatter ? valueFormatter(entry.value, defaultDisplayName, entry) : entry.value;\n    var displayValue = Array.isArray(formattedEntry) ? formattedEntry[0] : formattedEntry;\n    var displayName = Array.isArray(formattedEntry) && formattedEntry.length > 1 ? formattedEntry[1] : defaultDisplayName;\n    return /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"div\", {\n      key: index,\n      style: tooltipStyles.entry\n    }, entry.color && /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"span\", {\n      style: _objectSpread(_objectSpread({}, tooltipStyles.swatch), {}, {\n        backgroundColor: entry.color\n      })\n    }), /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"span\", null, capitalizeFirstLetter(displayName), \": \"), /*#__PURE__*/_gravityforms_libraries__WEBPACK_IMPORTED_MODULE_3__.React.createElement(\"span\", null, displayValue));\n  }));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ChartTooltip);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vY29tcG9uZW50cy9yZWFjdC9hZG1pbi9tb2R1bGVzL0NoYXJ0L2NvbW1vbi9Ub29sdGlwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFFaEQsSUFBTUMsYUFBYSxHQUFHO0VBQ3JCQyxTQUFTLEVBQUU7SUFDVkMsZUFBZSxFQUFFLFNBQVM7SUFBRTtJQUM1QkMsS0FBSyxFQUFFLFNBQVM7SUFBRTtJQUNsQkMsT0FBTyxFQUFFLEtBQUs7SUFDZEMsWUFBWSxFQUFFLEtBQUs7SUFDbkJDLFFBQVEsRUFBRSxVQUFVO0lBQ3BCQyxTQUFTLEVBQUUsTUFBTTtJQUNqQkMsUUFBUSxFQUFFO0VBQ1gsQ0FBQztFQUNEQyxLQUFLLEVBQUU7SUFDTkMsVUFBVSxFQUFFLEtBQUs7SUFDakJDLFlBQVksRUFBRTtFQUNmLENBQUM7RUFDREMsS0FBSyxFQUFFO0lBQ05DLFVBQVUsRUFBRSxRQUFRO0lBQ3BCQyxPQUFPLEVBQUUsTUFBTTtJQUNmSixVQUFVLEVBQUUsUUFBUTtJQUNwQkssR0FBRyxFQUFFO0VBQ04sQ0FBQztFQUNEQyxNQUFNLEVBQUU7SUFDUFgsWUFBWSxFQUFFLEtBQUs7SUFDbkJZLFVBQVUsRUFBRSxDQUFDO0lBQ2JDLE1BQU0sRUFBRSxLQUFLO0lBQ2JDLEtBQUssRUFBRTtFQUNSO0FBQ0QsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLHFCQUFxQkEsQ0FBRUMsTUFBTSxFQUFHO0VBQ3hDLElBQUssQ0FBRUEsTUFBTSxFQUFHO0lBQ2YsT0FBTyxFQUFFO0VBQ1Y7RUFFQSxPQUFPQSxNQUFNLENBQUNDLE1BQU0sQ0FBRSxDQUFFLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUMsR0FBR0YsTUFBTSxDQUFDRyxLQUFLLENBQUUsQ0FBRSxDQUFDO0FBQzVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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LENBQUMsR0FDN0V3QyxjQUFjLENBQUUsQ0FBQyxDQUFFLEdBQ25CSCxrQkFBa0I7SUFFckIsb0JBQ0NsRSwwREFBQSxDQUFBb0MsYUFBQTtNQUFLdUMsR0FBRyxFQUFHVixLQUFPO01BQUNGLEtBQUssRUFBRzlELGFBQWEsQ0FBQ1k7SUFBTyxHQUM3Q0EsS0FBSyxDQUFDVCxLQUFLLGlCQUNaSiwwREFBQSxDQUFBb0MsYUFBQTtNQUNDMkIsS0FBSyxFQUFBUCxhQUFBLENBQUFBLGFBQUEsS0FDRHZELGFBQWEsQ0FBQ2dCLE1BQU07UUFDdkJkLGVBQWUsRUFBRVUsS0FBSyxDQUFDVDtNQUFLO0lBQzFCLENBQ0gsQ0FDRCxlQUNESiwwREFBQSxDQUFBb0MsYUFBQSxlQUFRZixxQkFBcUIsQ0FBRXFELFdBQVksQ0FBQyxFQUFFLElBQVEsQ0FBQyxlQUN2RDFFLDBEQUFBLENBQUFvQyxhQUFBLGVBQVFtQyxZQUFvQixDQUN4QixDQUFDO0VBRVIsQ0FBRSxDQUNFLENBQUM7QUFFUixDQUFDO0FBRUQsK0RBQWVsQyxZQUFZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3Jhdml0eWZvcm1zLy4uL2NvbXBvbmVudHMvcmVhY3QvYWRtaW4vbW9kdWxlcy9DaGFydC9jb21tb24vVG9vbHRpcC5qcz9iMzlmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0IH0gZnJvbSAnQGdyYXZpdHlmb3Jtcy9saWJyYXJpZXMnO1xuXG5jb25zdCB0b29sdGlwU3R5bGVzID0ge1xuXHRjb250YWluZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3I6ICcjMjQyNzQ4JywgLy8gRGFyayBibHVlIGJhY2tncm91bmRcblx0XHRjb2xvcjogJyNmZmZmZmYnLCAvLyBXaGl0ZSB0ZXh0XG5cdFx0cGFkZGluZzogJzhweCcsXG5cdFx0Ym9yZGVyUmFkaXVzOiAnM3B4Jyxcblx0XHRwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblx0XHR0ZXh0QWxpZ246ICdsZWZ0Jyxcblx0XHRmb250U2l6ZTogJzEycHgnLFxuXHR9LFxuXHRsYWJlbDoge1xuXHRcdGZvbnRXZWlnaHQ6ICc2MDAnLFxuXHRcdG1hcmdpbkJvdHRvbTogJzRweCcsXG5cdH0sXG5cdGVudHJ5OiB7XG5cdFx0YWxpZ25JdGVtczogJ2NlbnRlcicsXG5cdFx0ZGlzcGxheTogJ2ZsZXgnLFxuXHRcdGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuXHRcdGdhcDogJzZweCcsXG5cdH0sXG5cdHN3YXRjaDoge1xuXHRcdGJvcmRlclJhZGl1czogJzJweCcsXG5cdFx0ZmxleFNocmluazogMCxcblx0XHRoZWlnaHQ6ICc4cHgnLFxuXHRcdHdpZHRoOiAnOHB4Jyxcblx0fSxcbn07XG5cbi8qKlxuICogQGZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlclxuICogQGRlc2NyaXB0aW9uIENhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBhIHN0cmluZy5cbiAqXG4gKiBAc2luY2UgNC40LjRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mLlxuICpcbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZyB3aXRoIHRoZSBmaXJzdCBsZXR0ZXIgY2FwaXRhbGl6ZWQuXG4gKi9cbmZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlciggc3RyaW5nICkge1xuXHRpZiAoICEgc3RyaW5nICkge1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdHJldHVybiBzdHJpbmcuY2hhckF0KCAwICkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSggMSApO1xufVxuXG4vKipcbiAqIEBmdW5jdGlvbiBjcmVhdGVDaGFydFRvb2x0aXBDb250ZW50XG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIFJlY2hhcnRzIHRvb2x0aXAgY29udGVudCByZW5kZXJlciB3aXRoIG9wdGlvbmFsIGZvcm1hdHRlcnMuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9ICAgY29uZmlnICAgICAgICAgICAgICAgICBUb29sdGlwIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maWcubGFiZWxGb3JtYXR0ZXIgIE9wdGlvbmFsIGZvcm1hdHRlciBmb3IgdGhlIGNhdGVnb3J5IGxhYmVsLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZmlnLnZhbHVlRm9ybWF0dGVyICBPcHRpb25hbCBmb3JtYXR0ZXIgZm9yIGVhY2ggc2VyaWVzIHZhbHVlLlxuICogQHJldHVybiB7RnVuY3Rpb259IFJlY2hhcnRzIHRvb2x0aXAgY29udGVudCByZW5kZXJlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUNoYXJ0VG9vbHRpcENvbnRlbnQgPSAoIHtcblx0bGFiZWxGb3JtYXR0ZXIgPSBudWxsLFxuXHR2YWx1ZUZvcm1hdHRlciA9IG51bGwsXG59ID0ge30gKSA9PiAoIHRvb2x0aXBQcm9wcyApID0+IChcblx0PENoYXJ0VG9vbHRpcFxuXHRcdHsgLi4udG9vbHRpcFByb3BzIH1cblx0XHRsYWJlbEZvcm1hdHRlcj17IGxhYmVsRm9ybWF0dGVyIH1cblx0XHR2YWx1ZUZvcm1hdHRlcj17IHZhbHVlRm9ybWF0dGVyIH1cblx0Lz5cbik7XG5cbi8qKlxuICogQGZ1bmN0aW9uIGJ1aWxkVG9vbHRpcEF0dHJpYnV0ZXNcbiAqIEBkZXNjcmlwdGlvbiBCdWlsZHMgUmVjaGFydHMgVG9vbHRpcCBwcm9wcyB3aXRoIHNoYXJlZCBkZWZhdWx0cyBhbmQgQ3VzdG9tVG9vbHRpcCB3aXJpbmcuXG4gKlxuICogQHNpbmNlIDYuNi4zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9ICAgICAgICBjb25maWcgICAgICAgICAgICAgICAgICAgICAgVG9vbHRpcCBidWlsZCBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtPYmplY3R9ICAgICAgICBjb25maWcuY3Vyc29yICAgICAgICAgICAgICAgRGVmYXVsdCBjdXJzb3IgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgY29uZmlnLnRvb2x0aXBQcm9wcyAgICAgICAgIENvbnN1bWVyLXByb3ZpZGVkIHRvb2x0aXAgcHJvcHMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59ICAgICAgIGNvbmZpZy50b29sdGlwU2hhcmVkICAgICAgICBXaGV0aGVyIHRoZSB0b29sdGlwIGlzIHNoYXJlZCBhY3Jvc3Mgc2VyaWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbnxudWxsfSBjb25maWcuZGVmYXVsdFZhbHVlRm9ybWF0dGVyIERlZmF1bHQgdmFsdWUgZm9ybWF0dGVyIHdoZW4gbm9uZSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJlY2hhcnRzIFRvb2x0aXAgcHJvcHMuXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZFRvb2x0aXBBdHRyaWJ1dGVzID0gKCB7XG5cdGN1cnNvcixcblx0dG9vbHRpcFByb3BzID0ge30sXG5cdHRvb2x0aXBTaGFyZWQgPSB0cnVlLFxuXHRkZWZhdWx0VmFsdWVGb3JtYXR0ZXIgPSBudWxsLFxufSApID0+IHtcblx0Y29uc3Qge1xuXHRcdGNvbnRlbnQ6IGN1c3RvbUNvbnRlbnQsXG5cdFx0bGFiZWxGb3JtYXR0ZXIsXG5cdFx0Zm9ybWF0dGVyLFxuXHRcdGl0ZW1Tb3J0ZXIsXG5cdFx0c2hhcmVkLFxuXHRcdGN1cnNvcjogdG9vbHRpcEN1cnNvcixcblx0XHQuLi5yZXN0VG9vbHRpcFByb3BzXG5cdH0gPSB0b29sdGlwUHJvcHM7XG5cblx0Y29uc3QgdmFsdWVGb3JtYXR0ZXIgPSBmb3JtYXR0ZXIgfHwgZGVmYXVsdFZhbHVlRm9ybWF0dGVyO1xuXG5cdHJldHVybiB7XG5cdFx0Y29udGVudDogY3VzdG9tQ29udGVudCB8fCBjcmVhdGVDaGFydFRvb2x0aXBDb250ZW50KCB7XG5cdFx0XHRsYWJlbEZvcm1hdHRlcixcblx0XHRcdHZhbHVlRm9ybWF0dGVyLFxuXHRcdH0gKSxcblx0XHRjdXJzb3I6IHRvb2x0aXBDdXJzb3IgIT09IHVuZGVmaW5lZCA/IHRvb2x0aXBDdXJzb3IgOiBjdXJzb3IsXG5cdFx0Zm9ybWF0dGVyOiB2YWx1ZUZvcm1hdHRlcixcblx0XHRpdGVtU29ydGVyLFxuXHRcdGxhYmVsRm9ybWF0dGVyLFxuXHRcdHNoYXJlZDogc2hhcmVkICE9PSB1bmRlZmluZWQgPyBzaGFyZWQgOiB0b29sdGlwU2hhcmVkLFxuXHRcdC4uLnJlc3RUb29sdGlwUHJvcHMsXG5cdH07XG59O1xuXG4vKipcbiAqIEBtb2R1bGUgQ2hhcnRUb29sdGlwXG4gKiBAZGVzY3JpcHRpb24gVGhlIHRvb2x0aXAgY29tcG9uZW50IGZvciBjaGFydHMuXG4gKlxuICogQHNpbmNlIDQuNC40XG4gKlxuICogQHBhcmFtIHtib29sZWFufSAgYWN0aXZlICAgICAgICAgIFdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgYWN0aXZlLlxuICogQHBhcmFtIHtBcnJheX0gICAgcGF5bG9hZCAgICAgICAgIFRoZSBwYXlsb2FkIG9mIHRoZSB0b29sdGlwLlxuICogQHBhcmFtIHtzdHJpbmd9ICAgbGFiZWwgICAgICAgICAgIFRoZSBsYWJlbCBvZiB0aGUgdG9vbHRpcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGxhYmVsRm9ybWF0dGVyICBPcHRpb25hbCBmb3JtYXR0ZXIgZm9yIHRoZSBjYXRlZ29yeSBsYWJlbC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbHVlRm9ybWF0dGVyICBPcHRpb25hbCBmb3JtYXR0ZXIgZm9yIGVhY2ggc2VyaWVzIHZhbHVlLlxuICpcbiAqIEByZXR1cm4ge0pTWC5FbGVtZW50fG51bGx9IFRoZSB0b29sdGlwIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQ2hhcnRUb29sdGlwID0gKCB7XG5cdGFjdGl2ZSxcblx0cGF5bG9hZCxcblx0bGFiZWwsXG5cdGxhYmVsRm9ybWF0dGVyID0gbnVsbCxcblx0dmFsdWVGb3JtYXR0ZXIgPSBudWxsLFxufSApID0+IHtcblx0aWYgKCAhIGFjdGl2ZSB8fCAhIHBheWxvYWQgfHwgISBwYXlsb2FkLmxlbmd0aCApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFJlY2hhcnRzIFRvb2x0aXAgYXBwbGllcyBpdGVtU29ydGVyIGJlZm9yZSBwYXNzaW5nIHBheWxvYWQgdG8gY3VzdG9tIGNvbnRlbnQuXG5cdGNvbnN0IGZvcm1hdHRlZExhYmVsID0gbGFiZWxGb3JtYXR0ZXIgPyBsYWJlbEZvcm1hdHRlciggbGFiZWwsIHBheWxvYWQgKSA6IGxhYmVsO1xuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBzdHlsZT17IHRvb2x0aXBTdHlsZXMuY29udGFpbmVyIH0+XG5cdFx0XHR7IGZvcm1hdHRlZExhYmVsICE9PSBudWxsICYmIGZvcm1hdHRlZExhYmVsICE9PSB1bmRlZmluZWQgJiYgZm9ybWF0dGVkTGFiZWwgIT09ICcnICYmIChcblx0XHRcdFx0PGRpdiBzdHlsZT17IHRvb2x0aXBTdHlsZXMubGFiZWwgfT57IGZvcm1hdHRlZExhYmVsIH08L2Rpdj5cblx0XHRcdCkgfVxuXHRcdFx0eyBwYXlsb2FkLm1hcCggKCBlbnRyeSwgaW5kZXggKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGRlZmF1bHREaXNwbGF5TmFtZSA9IGVudHJ5Lm5hbWUgfHwgZW50cnkuZGF0YUtleSB8fCAnJztcblx0XHRcdFx0Y29uc3QgZm9ybWF0dGVkRW50cnkgPSB2YWx1ZUZvcm1hdHRlclxuXHRcdFx0XHRcdD8gdmFsdWVGb3JtYXR0ZXIoIGVudHJ5LnZhbHVlLCBkZWZhdWx0RGlzcGxheU5hbWUsIGVudHJ5IClcblx0XHRcdFx0XHQ6IGVudHJ5LnZhbHVlO1xuXHRcdFx0XHRjb25zdCBkaXNwbGF5VmFsdWUgPSBBcnJheS5pc0FycmF5KCBmb3JtYXR0ZWRFbnRyeSApXG5cdFx0XHRcdFx0PyBmb3JtYXR0ZWRFbnRyeVsgMCBdXG5cdFx0XHRcdFx0OiBmb3JtYXR0ZWRFbnRyeTtcblx0XHRcdFx0Y29uc3QgZGlzcGxheU5hbWUgPSBBcnJheS5pc0FycmF5KCBmb3JtYXR0ZWRFbnRyeSApICYmIGZvcm1hdHRlZEVudHJ5Lmxlbmd0aCA+IDFcblx0XHRcdFx0XHQ/IGZvcm1hdHRlZEVudHJ5WyAxIF1cblx0XHRcdFx0XHQ6IGRlZmF1bHREaXNwbGF5TmFtZTtcblxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdDxkaXYga2V5PXsgaW5kZXggfSBzdHlsZT17IHRvb2x0aXBTdHlsZXMuZW50cnkgfT5cblx0XHRcdFx0XHRcdHsgZW50cnkuY29sb3IgJiYgKFxuXHRcdFx0XHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdFx0XHRcdHN0eWxlPXsge1xuXHRcdFx0XHRcdFx0XHRcdFx0Li4udG9vbHRpcFN0eWxlcy5zd2F0Y2gsXG5cdFx0XHRcdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGVudHJ5LmNvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdH0gfVxuXHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0KSB9XG5cdFx0XHRcdFx0XHQ8c3Bhbj57IGNhcGl0YWxpemVGaXJzdExldHRlciggZGlzcGxheU5hbWUgKSB9OiA8L3NwYW4+XG5cdFx0XHRcdFx0XHQ8c3Bhbj57IGRpc3BsYXlWYWx1ZSB9PC9zcGFuPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQpO1xuXHRcdFx0fSApIH1cblx0XHQ8L2Rpdj5cblx0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXJ0VG9vbHRpcDtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInRvb2x0aXBTdHlsZXMiLCJjb250YWluZXIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJwb3NpdGlvbiIsInRleHRBbGlnbiIsImZvbnRTaXplIiwibGFiZWwiLCJmb250V2VpZ2h0IiwibWFyZ2luQm90dG9tIiwiZW50cnkiLCJhbGlnbkl0ZW1zIiwiZGlzcGxheSIsImdhcCIsInN3YXRjaCIsImZsZXhTaHJpbmsiLCJoZWlnaHQiLCJ3aWR0aCIsImNhcGl0YWxpemVGaXJzdExldHRlciIsInN0cmluZyIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJjcmVhdGVDaGFydFRvb2x0aXBDb250ZW50IiwiX3JlZiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIl9yZWYkbGFiZWxGb3JtYXR0ZXIiLCJsYWJlbEZvcm1hdHRlciIsIl9yZWYkdmFsdWVGb3JtYXR0ZXIiLCJ2YWx1ZUZvcm1hdHRlciIsInRvb2x0aXBQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJDaGFydFRvb2x0aXAiLCJfZXh0ZW5kcyIsImJ1aWxkVG9vbHRpcEF0dHJpYnV0ZXMiLCJfcmVmMiIsImN1cnNvciIsIl9yZWYyJHRvb2x0aXBQcm9wcyIsIl9yZWYyJHRvb2x0aXBTaGFyZWQiLCJ0b29sdGlwU2hhcmVkIiwiX3JlZjIkZGVmYXVsdFZhbHVlRm9yIiwiZGVmYXVsdFZhbHVlRm9ybWF0dGVyIiwiY3VzdG9tQ29udGVudCIsImNvbnRlbnQiLCJmb3JtYXR0ZXIiLCJpdGVtU29ydGVyIiwic2hhcmVkIiwidG9vbHRpcEN1cnNvciIsInJlc3RUb29sdGlwUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfb2JqZWN0U3ByZWFkIiwiX3JlZjMiLCJhY3RpdmUiLCJwYXlsb2FkIiwiX3JlZjMkbGFiZWxGb3JtYXR0ZXIiLCJfcmVmMyR2YWx1ZUZvcm1hdHRlciIsImZvcm1hdHRlZExhYmVsIiwic3R5bGUiLCJtYXAiLCJpbmRleCIsImRlZmF1bHREaXNwbGF5TmFtZSIsIm5hbWUiLCJkYXRhS2V5IiwiZm9ybWF0dGVkRW50cnkiLCJ2YWx1ZSIsImRpc3BsYXlWYWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsImRpc3BsYXlOYW1lIiwia2V5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../components/react/admin/modules/Chart/common/Tooltip.js\n\n}");

/***/ })

}]);