Files
verify/frontend/.next/server/vendor-chunks/recharts.js
Mohamed Mathar Irfan ed6610d5d8 Initial project upload
2026-07-28 17:57:02 +05:30

655 lines
2.1 MiB

"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/).
*/
exports.id = "vendor-chunks/recharts";
exports.ids = ["vendor-chunks/recharts"];
exports.modules = {
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Area.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Area.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Area: () => (/* binding */ Area)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/max */ \"(ssr)/./node_modules/lodash/max.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_max__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isNaN */ \"(ssr)/./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _shape_Curve__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Curve */ \"(ssr)/./node_modules/recharts/es6/shape/Curve.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_LabelList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../component/LabelList */ \"(ssr)/./node_modules/recharts/es6/component/LabelList.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"layout\",\n \"type\",\n \"stroke\",\n \"connectNulls\",\n \"isRange\",\n \"ref\"\n];\nvar _Area;\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Area\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Area = /*#__PURE__*/ function(_PureComponent) {\n _inherits(Area, _PureComponent);\n function Area() {\n var _this;\n _classCallCheck(this, Area);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Area, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.uniqueId)(\"recharts-area-\"));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function() {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onAnimationEnd)) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function() {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onAnimationStart)) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Area, [\n {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n var _this$props = this.props, dot = _this$props.dot, points = _this$props.points, dataKey = _this$props.dataKey;\n var areaProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(this.props, false);\n var customDotProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(dot, true);\n var dots = points.map(function(entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps), customDotProps), {}, {\n index: i,\n cx: entry.x,\n cy: entry.y,\n dataKey: dataKey,\n value: entry.value,\n payload: entry.payload,\n points: points\n });\n return Area.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? \"\" : \"dots-\").concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n },\n {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props2 = this.props, baseLine = _this$props2.baseLine, points = _this$props2.points, strokeWidth = _this$props2.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n var maxY = lodash_max__WEBPACK_IMPORTED_MODULE_3___default()(points.map(function(entry) {\n return entry.y || 0;\n }));\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(baseLine) && typeof baseLine === \"number\") {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxY = Math.max(lodash_max__WEBPACK_IMPORTED_MODULE_3___default()(baseLine.map(function(entry) {\n return entry.y || 0;\n })), maxY);\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(maxY)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: Math.floor(maxY + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1))\n });\n }\n return null;\n }\n },\n {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props3 = this.props, baseLine = _this$props3.baseLine, points = _this$props3.points, strokeWidth = _this$props3.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n var maxX = lodash_max__WEBPACK_IMPORTED_MODULE_3___default()(points.map(function(entry) {\n return entry.x || 0;\n }));\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(baseLine) && typeof baseLine === \"number\") {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && Array.isArray(baseLine) && baseLine.length) {\n maxX = Math.max(lodash_max__WEBPACK_IMPORTED_MODULE_3___default()(baseLine.map(function(entry) {\n return entry.x || 0;\n })), maxX);\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(maxX)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth ? parseInt(\"\".concat(strokeWidth), 10) : 1),\n height: Math.floor(height)\n });\n }\n return null;\n }\n },\n {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n if (layout === \"vertical\") {\n return this.renderVerticalRect(alpha);\n }\n return this.renderHorizontalRect(alpha);\n }\n },\n {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props4 = this.props, layout = _this$props4.layout, type = _this$props4.type, stroke = _this$props4.stroke, connectNulls = _this$props4.connectNulls, isRange = _this$props4.isRange, ref = _this$props4.ref, others = _objectWithoutProperties(_this$props4, _excluded);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Curve__WEBPACK_IMPORTED_MODULE_10__.Curve, _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(others, true), {\n points: points,\n connectNulls: connectNulls,\n type: type,\n baseLine: baseLine,\n layout: layout,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== \"none\" && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Curve__WEBPACK_IMPORTED_MODULE_10__.Curve, _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== \"none\" && isRange && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Curve__WEBPACK_IMPORTED_MODULE_10__.Curve, _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(this.props, false), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n },\n {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props5 = this.props, points = _this$props5.points, baseLine = _this$props5.baseLine, isAnimationActive = _this$props5.isAnimationActive, animationBegin = _this$props5.animationBegin, animationDuration = _this$props5.animationDuration, animationEasing = _this$props5.animationEasing, animationId = _this$props5.animationId;\n var _this$state = this.state, prevPoints = _this$state.prevPoints, prevBaseLine = _this$state.prevBaseLine;\n // const clipPathId = isNil(id) ? this.id : id;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function(_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n // update animtaion\n var stepPoints = points.map(function(entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prev.x, entry.x);\n var interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n var stepBaseLine;\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(baseLine) && typeof baseLine === \"number\") {\n var interpolator = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(baseLine) || lodash_isNaN__WEBPACK_IMPORTED_MODULE_5___default()(baseLine)) {\n var _interpolator = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prevBaseLine, 0);\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function(entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prev.x, entry.x);\n var interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.interpolateNumber)(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n return entry;\n });\n }\n return _this2.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this2.renderClipRect(t))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this2.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n },\n {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props6 = this.props, points = _this$props6.points, baseLine = _this$props6.baseLine, isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state, prevPoints = _this$state2.prevPoints, prevBaseLine = _this$state2.prevBaseLine, totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default()(prevPoints, points) || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default()(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props7 = this.props, hide = _this$props7.hide, dot = _this$props7.dot, points = _this$props7.points, className = _this$props7.className, top = _this$props7.top, left = _this$props7.left, xAxis = _this$props7.xAxis, yAxis = _this$props7.yAxis, width = _this$props7.width, height = _this$props7.height, isAnimationActive = _this$props7.isAnimationActive, id = _this$props7.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-area\", className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(id) ? this.id : id;\n var _ref2 = (_filterProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(dot, false)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n }, _ref2$r = _ref2.r, r = _ref2$r === void 0 ? 3 : _ref2$r, _ref2$strokeWidth = _ref2.strokeWidth, strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.isDotProps)(dot) ? dot : {}, _ref3$clipDot = _ref3.clipDot, clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && _component_LabelList__WEBPACK_IMPORTED_MODULE_12__.LabelList.renderCallByParent(this.props, points));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine,\n prevPoints: prevState.curPoints,\n prevBaseLine: prevState.curBaseLine\n };\n }\n if (nextProps.points !== prevState.curPoints || nextProps.baseLine !== prevState.curBaseLine) {\n return {\n curPoints: nextProps.points,\n curBaseLine: nextProps.baseLine\n };\n }\n return null;\n }\n }\n ]);\n return Area;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_Area = Area;\n_defineProperty(Area, \"displayName\", \"Area\");\n_defineProperty(Area, \"defaultProps\", {\n stroke: \"#3182bd\",\n fill: \"#3182bd\",\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: \"line\",\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_13__.Global.isSsr,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: \"ease\"\n});\n_defineProperty(Area, \"getBaseValue\", function(props, item, xAxis, yAxis) {\n var layout = props.layout, chartBaseValue = props.baseValue;\n var itemBaseValue = item.props.baseValue;\n // The baseValue can be defined both on the AreaChart as well as on the Area.\n // The value for the item takes precedence.\n var baseValue = itemBaseValue !== null && itemBaseValue !== void 0 ? itemBaseValue : chartBaseValue;\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(baseValue) && typeof baseValue === \"number\") {\n return baseValue;\n }\n var numericAxis = layout === \"horizontal\" ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === \"number\") {\n var domainMax = Math.max(domain[0], domain[1]);\n var domainMin = Math.min(domain[0], domain[1]);\n if (baseValue === \"dataMin\") {\n return domainMin;\n }\n if (baseValue === \"dataMax\") {\n return domainMax;\n }\n return domainMax < 0 ? domainMax : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n if (baseValue === \"dataMin\") {\n return domain[0];\n }\n if (baseValue === \"dataMax\") {\n return domain[1];\n }\n return domain[0];\n});\n_defineProperty(Area, \"getComposedData\", function(_ref4) {\n var props = _ref4.props, item = _ref4.item, xAxis = _ref4.xAxis, yAxis = _ref4.yAxis, xAxisTicks = _ref4.xAxisTicks, yAxisTicks = _ref4.yAxisTicks, bandSize = _ref4.bandSize, dataKey = _ref4.dataKey, stackedData = _ref4.stackedData, dataStartIndex = _ref4.dataStartIndex, displayedData = _ref4.displayedData, offset = _ref4.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = _Area.getBaseValue(props, item, xAxis, yAxis);\n var isHorizontalLayout = layout === \"horizontal\";\n var isRange = false;\n var points = displayedData.map(function(entry, index) {\n var value;\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_14__.getValueByDataKey)(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [\n baseValue,\n value\n ];\n } else {\n isRange = true;\n }\n }\n var isBreakPoint = value[1] == null || hasStack && (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_14__.getValueByDataKey)(entry, dataKey) == null;\n if (isHorizontalLayout) {\n return {\n x: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_14__.getCateCoordinateOfLine)({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: isBreakPoint ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n return {\n x: isBreakPoint ? null : xAxis.scale(value[1]),\n y: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_14__.getCateCoordinateOfLine)({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n if (hasStack || isRange) {\n baseLine = points.map(function(entry) {\n var x = Array.isArray(entry.value) ? entry.value[0] : null;\n if (isHorizontalLayout) {\n return {\n x: entry.x,\n y: x != null && entry.y != null ? yAxis.scale(x) : null\n };\n }\n return {\n x: x != null ? xAxis.scale(x) : null,\n y: entry.y\n };\n });\n } else {\n baseLine = isHorizontalLayout ? yAxis.scale(baseValue) : xAxis.scale(baseValue);\n }\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n});\n_defineProperty(Area, \"renderDotItem\", function(option, props) {\n var dotItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n dotItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(option)) {\n dotItem = option(props);\n } else {\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-area-dot\", typeof option !== \"boolean\" ? option.className : \"\");\n dotItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_15__.Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9BcmVhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQVU7SUFBUTtJQUFVO0lBQWdCO0lBQVc7Q0FBTTtBQUM5RSxJQUFJQztBQUNKLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyx5QkFBeUJDLE1BQU0sRUFBRUMsUUFBUTtJQUFJLElBQUlELFVBQVUsTUFBTSxPQUFPLENBQUM7SUFBRyxJQUFJRSxTQUFTQyw4QkFBOEJILFFBQVFDO0lBQVcsSUFBSUcsS0FBS0M7SUFBRyxJQUFJQyxPQUFPQyxxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQkYsT0FBT0MscUJBQXFCLENBQUNQO1FBQVMsSUFBS0ssSUFBSSxHQUFHQSxJQUFJRyxpQkFBaUJDLE1BQU0sRUFBRUosSUFBSztZQUFFRCxNQUFNSSxnQkFBZ0IsQ0FBQ0gsRUFBRTtZQUFFLElBQUlKLFNBQVNTLE9BQU8sQ0FBQ04sUUFBUSxHQUFHO1lBQVUsSUFBSSxDQUFDRSxPQUFPUixTQUFTLENBQUNhLG9CQUFvQixDQUFDQyxJQUFJLENBQUNaLFFBQVFJLE1BQU07WUFBVUYsTUFBTSxDQUFDRSxJQUFJLEdBQUdKLE1BQU0sQ0FBQ0ksSUFBSTtRQUFFO0lBQUU7SUFBRSxPQUFPRjtBQUFRO0FBQzNlLFNBQVNDLDhCQUE4QkgsTUFBTSxFQUFFQyxRQUFRO0lB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O1FBQ2I7SUFDRjtJQUNBLE9BQU8wSDtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL0FyZWEuanM/ZGJiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wibGF5b3V0XCIsIFwidHlwZVwiLCBcInN0cm9rZVwiLCBcImNvbm5lY3ROdWxsc1wiLCBcImlzUmFuZ2VcIiwgXCJyZWZcIl07XG52YXIgX0FyZWE7XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEFyZWFcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBBbmltYXRlIGZyb20gJ3JlYWN0LXNtb290aCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgbWF4IGZyb20gJ2xvZGFzaC9tYXgnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNOYW4gZnJvbSAnbG9kYXNoL2lzTmFOJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCB7IEN1cnZlIH0gZnJvbSAnLi4vc2hhcGUvQ3VydmUnO1xuaW1wb3J0IHsgRG90IH0gZnJvbSAnLi4vc2hhcGUvRG90JztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IExhYmVsTGlzdCB9IGZyb20gJy4uL2NvbXBvbmVudC9MYWJlbExpc3QnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi4vdXRpbC9HbG9iYWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIHVuaXF1ZUlkLCBpbnRlcnBvbGF0ZU51bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGdldENhdGVDb29yZGluYXRlT2ZMaW5lLCBnZXRWYWx1ZUJ5RGF0YUtleSB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgaXNEb3RQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5leHBvcnQgdmFyIEFyZWEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhBcmVhLCBfUHVyZUNvbXBvbmVudCk7XG4gIGZ1bmN0aW9uIEFyZWEoKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBcmVhKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBBcmVhLCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7XG4gICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlXG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImlkXCIsIHVuaXF1ZUlkKCdyZWNoYXJ0cy1hcmVhLScpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQW5pbWF0aW9uRW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvbkFuaW1hdGlvbkVuZCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uRW5kO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKG9uQW5pbWF0aW9uRW5kKSkge1xuICAgICAgICBvbkFuaW1hdGlvbkVuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVBbmltYXRpb25TdGFydFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb25BbmltYXRpb25TdGFydCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKG9uQW5pbWF0aW9uU3RhcnQpKSB7XG4gICAgICAgIG9uQW5pbWF0aW9uU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEFyZWEsIFt7XG4gICAga2V5OiBcInJlbmRlckRvdHNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRG90cyhuZWVkQ2xpcCwgY2xpcERvdCwgY2xpcFBhdGhJZCkge1xuICAgICAgdmFyIGlzQW5pbWF0aW9uQWN0aXZlID0gdGhpcy5wcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZTtcbiAgICAgIHZhciBpc0FuaW1hdGlvbkZpbmlzaGVkID0gdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkO1xuICAgICAgaWYgKGlzQW5pbWF0aW9uQWN0aXZlICYmICFpc0FuaW1hdGlvbkZpbmlzaGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZG90ID0gX3RoaXMkcHJvcHMuZG90LFxuICAgICAgICBwb2ludHMgPSBfdGhpcyRwcm9wcy5wb2ludHMsXG4gICAgICAgIGRhdGFLZXkgPSBfdGhpcyRwcm9wcy5kYXRhS2V5O1xuICAgICAgdmFyIGFyZWFQcm9wcyA9IGZpbHRlclByb3BzKHRoaXMucHJvcHMsIGZhbHNlKTtcbiAgICAgIHZhciBjdXN0b21Eb3RQcm9wcyA9IGZpbHRlclByb3BzKGRvdCwgdHJ1ZSk7XG4gICAgICB2YXIgZG90cyA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIHZhciBkb3RQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICBrZXk6IFwiZG90LVwiLmNvbmNhdChpKSxcbiAgICAgICAgICByOiAzXG4gICAgICAgIH0sIGFyZWFQcm9wcyksIGN1c3RvbURvdFByb3BzKSwge30sIHtcbiAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICBjeDogZW50cnkueCxcbiAgICAgICAgICBjeTogZW50cnkueSxcbiAgICAgICAgICBkYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICAgIHZhbHVlOiBlbnRyeS52YWx1ZSxcbiAgICAgICAgICBwYXlsb2FkOiBlbnRyeS5wYXlsb2FkLFxuICAgICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQXJlYS5yZW5kZXJEb3RJdGVtKGRvdCwgZG90UHJvcHMpO1xuICAgICAgfSk7XG4gICAgICB2YXIgZG90c1Byb3BzID0ge1xuICAgICAgICBjbGlwUGF0aDogbmVlZENsaXAgPyBcInVybCgjY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBEb3QgPyAnJyA6ICdkb3RzLScpLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiBudWxsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBfZXh0ZW5kcyh7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1hcmVhLWRvdHNcIlxuICAgICAgfSwgZG90c1Byb3BzKSwgZG90cyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckhvcml6b250YWxSZWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckhvcml6b250YWxSZWN0KGFscGhhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYmFzZUxpbmUgPSBfdGhpcyRwcm9wczIuYmFzZUxpbmUsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzMi5wb2ludHMsXG4gICAgICAgIHN0cm9rZVdpZHRoID0gX3RoaXMkcHJvcHMyLnN0cm9rZVdpZHRoO1xuICAgICAgdmFyIHN0YXJ0WCA9IHBvaW50c1swXS54O1xuICAgICAgdmFyIGVuZFggPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLng7XG4gICAgICB2YXIgd2lkdGggPSBhbHBoYSAqIE1hdGguYWJzKHN0YXJ0WCAtIGVuZFgpO1xuICAgICAgdmFyIG1heFkgPSBtYXgocG9pbnRzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LnkgfHwgMDtcbiAgICAgIH0pKTtcbiAgICAgIGlmIChpc051bWJlcihiYXNlTGluZSkgJiYgdHlwZW9mIGJhc2VMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICBtYXhZID0gTWF0aC5tYXgoYmFzZUxpbmUsIG1heFkpO1xuICAgICAgfSBlbHNlIGlmIChiYXNlTGluZSAmJiBBcnJheS5pc0FycmF5KGJhc2VMaW5lKSAmJiBiYXNlTGluZS5sZW5ndGgpIHtcbiAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heChiYXNlTGluZS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgcmV0dXJuIGVudHJ5LnkgfHwgMDtcbiAgICAgICAgfSkpLCBtYXhZKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc051bWJlcihtYXhZKSkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgICAgICB4OiBzdGFydFggPCBlbmRYID8gc3RhcnRYIDogc3RhcnRYIC0gd2lkdGgsXG4gICAgICAgICAgeTogMCxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBNYXRoLmZsb29yKG1heFkgKyAoc3Ryb2tlV2lkdGggPyBwYXJzZUludChcIlwiLmNvbmNhdChzdHJva2VXaWR0aCksIDEwKSA6IDEpKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJWZXJ0aWNhbFJlY3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVmVydGljYWxSZWN0KGFscGhhKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYmFzZUxpbmUgPSBfdGhpcyRwcm9wczMuYmFzZUxpbmUsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzMy5wb2ludHMsXG4gICAgICAgIHN0cm9rZVdpZHRoID0gX3RoaXMkcHJvcHMzLnN0cm9rZVdpZHRoO1xuICAgICAgdmFyIHN0YXJ0WSA9IHBvaW50c1swXS55O1xuICAgICAgdmFyIGVuZFkgPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnk7XG4gICAgICB2YXIgaGVpZ2h0ID0gYWxwaGEgKiBNYXRoLmFicyhzdGFydFkgLSBlbmRZKTtcbiAgICAgIHZhciBtYXhYID0gbWF4KHBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiBlbnRyeS54IHx8IDA7XG4gICAgICB9KSk7XG4gICAgICBpZiAoaXNOdW1iZXIoYmFzZUxpbmUpICYmIHR5cGVvZiBiYXNlTGluZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgbWF4WCA9IE1hdGgubWF4KGJhc2VMaW5lLCBtYXhYKTtcbiAgICAgIH0gZWxzZSBpZiAoYmFzZUxpbmUgJiYgQXJyYXkuaXNBcnJheShiYXNlTGluZSkgJiYgYmFzZUxpbmUubGVuZ3RoKSB7XG4gICAgICAgIG1heFggPSBNYXRoLm1heChtYXgoYmFzZUxpbmUubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgIHJldHVybiBlbnRyeS54IHx8IDA7XG4gICAgICAgIH0pKSwgbWF4WCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNOdW1iZXIobWF4WCkpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiBzdGFydFkgPCBlbmRZID8gc3RhcnRZIDogc3RhcnRZIC0gaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiBtYXhYICsgKHN0cm9rZVdpZHRoID8gcGFyc2VJbnQoXCJcIi5jb25jYXQoc3Ryb2tlV2lkdGgpLCAxMCkgOiAxKSxcbiAgICAgICAgICBoZWlnaHQ6IE1hdGguZmxvb3IoaGVpZ2h0KVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJDbGlwUmVjdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJDbGlwUmVjdChhbHBoYSkge1xuICAgICAgdmFyIGxheW91dCA9IHRoaXMucHJvcHMubGF5b3V0O1xuICAgICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJWZXJ0aWNhbFJlY3QoYWxwaGEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZGVySG9yaXpvbnRhbFJlY3QoYWxwaGEpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJBcmVhU3RhdGljYWxseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJBcmVhU3RhdGljYWxseShwb2ludHMsIGJhc2VMaW5lLCBuZWVkQ2xpcCwgY2xpcFBhdGhJZCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzNC5sYXlvdXQsXG4gICAgICAgIHR5cGUgPSBfdGhpcyRwcm9wczQudHlwZSxcbiAgICAgICAgc3Ryb2tlID0gX3RoaXMkcHJvcHM0LnN0cm9rZSxcbiAgICAgICAgY29ubmVjdE51bGxzID0gX3RoaXMkcHJvcHM0LmNvbm5lY3ROdWxscyxcbiAgICAgICAgaXNSYW5nZSA9IF90aGlzJHByb3BzNC5pc1JhbmdlLFxuICAgICAgICByZWYgPSBfdGhpcyRwcm9wczQucmVmLFxuICAgICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM0LCBfZXhjbHVkZWQpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsaXBQYXRoOiBuZWVkQ2xpcCA/IFwidXJsKCNjbGlwUGF0aC1cIi5jb25jYXQoY2xpcFBhdGhJZCwgXCIpXCIpIDogbnVsbFxuICAgICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ3VydmUsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUpLCB7XG4gICAgICAgIHBvaW50czogcG9pbnRzLFxuICAgICAgICBjb25uZWN0TnVsbHM6IGNvbm5lY3ROdWxscyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgYmFzZUxpbmU6IGJhc2VMaW5lLFxuICAgICAgICBsYXlvdXQ6IGxheW91dCxcbiAgICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWFyZWEtYXJlYVwiXG4gICAgICB9KSksIHN0cm9rZSAhPT0gJ25vbmUnICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEN1cnZlLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1hcmVhLWN1cnZlXCIsXG4gICAgICAgIGxheW91dDogbGF5b3V0LFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb25uZWN0TnVsbHM6IGNvbm5lY3ROdWxscyxcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHBvaW50czogcG9pbnRzXG4gICAgICB9KSksIHN0cm9rZSAhPT0gJ25vbmUnICYmIGlzUmFuZ2UgJiYgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ3VydmUsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCBmYWxzZSksIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWFyZWEtY3VydmVcIixcbiAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbm5lY3ROdWxsczogY29ubmVjdE51bGxzLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgcG9pbnRzOiBiYXNlTGluZVxuICAgICAgfSkpKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQXJlYVdpdGhBbmltYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXJlYVdpdGhBbmltYXRpb24obmVlZENsaXAsIGNsaXBQYXRoSWQpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzNS5wb2ludHMsXG4gICAgICAgIGJhc2VMaW5lID0gX3RoaXMkcHJvcHM1LmJhc2VMaW5lLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNS5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYW5pbWF0aW9uQmVnaW4gPSBfdGhpcyRwcm9wczUuYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHM1LmFuaW1hdGlvbkR1cmF0aW9uLFxuICAgICAgICBhbmltYXRpb25FYXNpbmcgPSBfdGhpcyRwcm9wczUuYW5pbWF0aW9uRWFzaW5nLFxuICAgICAgICBhbmltYXRpb25JZCA9IF90aGlzJHByb3BzNS5hbmltYXRpb25JZDtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHByZXZQb2ludHMgPSBfdGhpcyRzdGF0ZS5wcmV2UG9pbnRzLFxuICAgICAgICBwcmV2QmFzZUxpbmUgPSBfdGhpcyRzdGF0ZS5wcmV2QmFzZUxpbmU7XG4gICAgICAvLyBjb25zdCBjbGlwUGF0aElkID0gaXNOaWwoaWQpID8gdGhpcy5pZCA6IGlkO1xuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgaXNBY3RpdmU6IGlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHQ6IDBcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0OiAxXG4gICAgICAgIH0sXG4gICAgICAgIGtleTogXCJhcmVhLVwiLmNvbmNhdChhbmltYXRpb25JZCksXG4gICAgICAgIG9uQW5pbWF0aW9uRW5kOiB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZCxcbiAgICAgICAgb25BbmltYXRpb25TdGFydDogdGhpcy5oYW5kbGVBbmltYXRpb25TdGFydFxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHQgPSBfcmVmLnQ7XG4gICAgICAgIGlmIChwcmV2UG9pbnRzKSB7XG4gICAgICAgICAgdmFyIHByZXZQb2ludHNEaWZmRmFjdG9yID0gcHJldlBvaW50cy5sZW5ndGggLyBwb2ludHMubGVuZ3RoO1xuICAgICAgICAgIC8vIHVwZGF0ZSBhbmltdGFpb25cbiAgICAgICAgICB2YXIgc3RlcFBvaW50cyA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIHByZXZQb2ludEluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAqIHByZXZQb2ludHNEaWZmRmFjdG9yKTtcbiAgICAgICAgICAgIGlmIChwcmV2UG9pbnRzW3ByZXZQb2ludEluZGV4XSkge1xuICAgICAgICAgICAgICB2YXIgcHJldiA9IHByZXZQb2ludHNbcHJldlBvaW50SW5kZXhdO1xuICAgICAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yWCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYueCwgZW50cnkueCk7XG4gICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0b3JZID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi55LCBlbnRyeS55KTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICAgIHg6IGludGVycG9sYXRvclgodCksXG4gICAgICAgICAgICAgICAgeTogaW50ZXJwb2xhdG9yWSh0KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YXIgc3RlcEJhc2VMaW5lO1xuICAgICAgICAgIGlmIChpc051bWJlcihiYXNlTGluZSkgJiYgdHlwZW9mIGJhc2VMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvciA9IGludGVycG9sYXRlTnVtYmVyKHByZXZCYXNlTGluZSwgYmFzZUxpbmUpO1xuICAgICAgICAgICAgc3RlcEJhc2VMaW5lID0gaW50ZXJwb2xhdG9yKHQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNOaWwoYmFzZUxpbmUpIHx8IGlzTmFuKGJhc2VMaW5lKSkge1xuICAgICAgICAgICAgdmFyIF9pbnRlcnBvbGF0b3IgPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2QmFzZUxpbmUsIDApO1xuICAgICAgICAgICAgc3RlcEJhc2VMaW5lID0gX2ludGVycG9sYXRvcih0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RlcEJhc2VMaW5lID0gYmFzZUxpbmUubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZQb2ludEluZGV4ID0gTWF0aC5mbG9vcihpbmRleCAqIHByZXZQb2ludHNEaWZmRmFjdG9yKTtcbiAgICAgICAgICAgICAgaWYgKHByZXZCYXNlTGluZVtwcmV2UG9pbnRJbmRleF0pIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHByZXZCYXNlTGluZVtwcmV2UG9pbnRJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIGludGVycG9sYXRvclggPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LngsIGVudHJ5LngpO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0b3JZID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi55LCBlbnRyeS55KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgICAgICB4OiBpbnRlcnBvbGF0b3JYKHQpLFxuICAgICAgICAgICAgICAgICAgeTogaW50ZXJwb2xhdG9yWSh0KVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gX3RoaXMyLnJlbmRlckFyZWFTdGF0aWNhbGx5KHN0ZXBQb2ludHMsIHN0ZXBCYXNlTGluZSwgbmVlZENsaXAsIGNsaXBQYXRoSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkZWZzXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2xpcFBhdGhcIiwge1xuICAgICAgICAgIGlkOiBcImFuaW1hdGlvbkNsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkKVxuICAgICAgICB9LCBfdGhpczIucmVuZGVyQ2xpcFJlY3QodCkpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgICBjbGlwUGF0aDogXCJ1cmwoI2FuaW1hdGlvbkNsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIilcbiAgICAgICAgfSwgX3RoaXMyLnJlbmRlckFyZWFTdGF0aWNhbGx5KHBvaW50cywgYmFzZUxpbmUsIG5lZWRDbGlwLCBjbGlwUGF0aElkKSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckFyZWFcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXJlYShuZWVkQ2xpcCwgY2xpcFBhdGhJZCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzNi5wb2ludHMsXG4gICAgICAgIGJhc2VMaW5lID0gX3RoaXMkcHJvcHM2LmJhc2VMaW5lLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNi5pc0FuaW1hdGlvbkFjdGl2ZTtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTIgPSB0aGlzLnN0YXRlLFxuICAgICAgICBwcmV2UG9pbnRzID0gX3RoaXMkc3RhdGUyLnByZXZQb2ludHMsXG4gICAgICAgIHByZXZCYXNlTGluZSA9IF90aGlzJHN0YXRlMi5wcmV2QmFzZUxpbmUsXG4gICAgICAgIHRvdGFsTGVuZ3RoID0gX3RoaXMkc3RhdGUyLnRvdGFsTGVuZ3RoO1xuICAgICAgaWYgKGlzQW5pbWF0aW9uQWN0aXZlICYmIHBvaW50cyAmJiBwb2ludHMubGVuZ3RoICYmICghcHJldlBvaW50cyAmJiB0b3RhbExlbmd0aCA+IDAgfHwgIWlzRXF1YWwocHJldlBvaW50cywgcG9pbnRzKSB8fCAhaXNFcXVhbChwcmV2QmFzZUxpbmUsIGJhc2VMaW5lKSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJlYVdpdGhBbmltYXRpb24obmVlZENsaXAsIGNsaXBQYXRoSWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXJlYVN0YXRpY2FsbHkocG9pbnRzLCBiYXNlTGluZSwgbmVlZENsaXAsIGNsaXBQYXRoSWQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9maWx0ZXJQcm9wcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICBoaWRlID0gX3RoaXMkcHJvcHM3LmhpZGUsXG4gICAgICAgIGRvdCA9IF90aGlzJHByb3BzNy5kb3QsXG4gICAgICAgIHBvaW50cyA9IF90aGlzJHByb3BzNy5wb2ludHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWUsXG4gICAgICAgIHRvcCA9IF90aGlzJHByb3BzNy50b3AsXG4gICAgICAgIGxlZnQgPSBfdGhpcyRwcm9wczcubGVmdCxcbiAgICAgICAgeEF4aXMgPSBfdGhpcyRwcm9wczcueEF4aXMsXG4gICAgICAgIHlBeGlzID0gX3RoaXMkcHJvcHM3LnlBeGlzLFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM3LmhlaWdodCxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczcuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgIGlkID0gX3RoaXMkcHJvcHM3LmlkO1xuICAgICAgaWYgKGhpZGUgfHwgIXBvaW50cyB8fCAhcG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FuaW1hdGlvbkZpbmlzaGVkID0gdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkO1xuICAgICAgdmFyIGhhc1NpbmdsZVBvaW50ID0gcG9pbnRzLmxlbmd0aCA9PT0gMTtcbiAgICAgIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtYXJlYScsIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgbmVlZENsaXBYID0geEF4aXMgJiYgeEF4aXMuYWxsb3dEYXRhT3ZlcmZsb3c7XG4gICAgICB2YXIgbmVlZENsaXBZID0geUF4aXMgJiYgeUF4aXMuYWxsb3dEYXRhT3ZlcmZsb3c7XG4gICAgICB2YXIgbmVlZENsaXAgPSBuZWVkQ2xpcFggfHwgbmVlZENsaXBZO1xuICAgICAgdmFyIGNsaXBQYXRoSWQgPSBpc05pbChpZCkgPyB0aGlzLmlkIDogaWQ7XG4gICAgICB2YXIgX3JlZjIgPSAoX2ZpbHRlclByb3BzID0gZmlsdGVyUHJvcHMoZG90LCBmYWxzZSkpICE9PSBudWxsICYmIF9maWx0ZXJQcm9wcyAhPT0gdm9pZCAwID8gX2ZpbHRlclByb3BzIDoge1xuICAgICAgICAgIHI6IDMsXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDJcbiAgICAgICAgfSxcbiAgICAgICAgX3JlZjIkciA9IF9yZWYyLnIsXG4gICAgICAgIHIgPSBfcmVmMiRyID09PSB2b2lkIDAgPyAzIDogX3JlZjIkcixcbiAgICAgICAgX3JlZjIkc3Ryb2tlV2lkdGggPSBfcmVmMi5zdHJva2VXaWR0aCxcbiAgICAgICAgc3Ryb2tlV2lkdGggPSBfcmVmMiRzdHJva2VXaWR0aCA9PT0gdm9pZCAwID8gMiA6IF9yZWYyJHN0cm9rZVdpZHRoO1xuICAgICAgdmFyIF9yZWYzID0gaXNEb3RQcm9wcyhkb3QpID8gZG90IDoge30sXG4gICAgICAgIF9yZWYzJGNsaXBEb3QgPSBfcmVmMy5jbGlwRG90LFxuICAgICAgICBjbGlwRG90ID0gX3JlZjMkY2xpcERvdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYzJGNsaXBEb3Q7XG4gICAgICB2YXIgZG90U2l6ZSA9IHIgKiAyICsgc3Ryb2tlV2lkdGg7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzXG4gICAgICB9LCBuZWVkQ2xpcFggfHwgbmVlZENsaXBZID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkZWZzXCIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiY2xpcFBhdGhcIiwge1xuICAgICAgICBpZDogXCJjbGlwUGF0aC1cIi5jb25jYXQoY2xpcFBhdGhJZClcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIHg6IG5lZWRDbGlwWCA/IGxlZnQgOiBsZWZ0IC0gd2lkdGggLyAyLFxuICAgICAgICB5OiBuZWVkQ2xpcFkgPyB0b3AgOiB0b3AgLSBoZWlnaHQgLyAyLFxuICAgICAgICB3aWR0aDogbmVlZENsaXBYID8gd2lkdGggOiB3aWR0aCAqIDIsXG4gICAgICAgIGhlaWdodDogbmVlZENsaXBZID8gaGVpZ2h0IDogaGVpZ2h0ICogMlxuICAgICAgfSkpLCAhY2xpcERvdCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgaWQ6IFwiY2xpcFBhdGgtZG90cy1cIi5jb25jYXQoY2xpcFBhdGhJZClcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIHg6IGxlZnQgLSBkb3RTaXplIC8gMixcbiAgICAgICAgeTogdG9wIC0gZG90U2l6ZSAvIDIsXG4gICAgICAgIHdpZHRoOiB3aWR0aCArIGRvdFNpemUsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0ICsgZG90U2l6ZVxuICAgICAgfSkpKSA6IG51bGwsICFoYXNTaW5nbGVQb2ludCA/IHRoaXMucmVuZGVyQXJlYShuZWVkQ2xpcCwgY2xpcFBhdGhJZCkgOiBudWxsLCAoZG90IHx8IGhhc1NpbmdsZVBvaW50KSAmJiB0aGlzLnJlbmRlckRvdHMobmVlZENsaXAsIGNsaXBEb3QsIGNsaXBQYXRoSWQpLCAoIWlzQW5pbWF0aW9uQWN0aXZlIHx8IGlzQW5pbWF0aW9uRmluaXNoZWQpICYmIExhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgcG9pbnRzKSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgaWYgKG5leHRQcm9wcy5hbmltYXRpb25JZCAhPT0gcHJldlN0YXRlLnByZXZBbmltYXRpb25JZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHByZXZBbmltYXRpb25JZDogbmV4dFByb3BzLmFuaW1hdGlvbklkLFxuICAgICAgICAgIGN1clBvaW50czogbmV4dFByb3BzLnBvaW50cyxcbiAgICAgICAgICBjdXJCYXNlTGluZTogbmV4dFByb3BzLmJhc2VMaW5lLFxuICAgICAgICAgIHByZXZQb2ludHM6IHByZXZTdGF0ZS5jdXJQb2ludHMsXG4gICAgICAgICAgcHJldkJhc2VMaW5lOiBwcmV2U3RhdGUuY3VyQmFzZUxpbmVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0UHJvcHMucG9pbnRzICE9PSBwcmV2U3RhdGUuY3VyUG9pbnRzIHx8IG5leHRQcm9wcy5iYXNlTGluZSAhPT0gcHJldlN0YXRlLmN1ckJhc2VMaW5lKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY3VyUG9pbnRzOiBuZXh0UHJvcHMucG9pbnRzLFxuICAgICAgICAgIGN1ckJhc2VMaW5lOiBuZXh0UHJvcHMuYmFzZUxpbmVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQXJlYTtcbn0oUHVyZUNvbXBvbmVudCk7XG5fQXJlYSA9IEFyZWE7XG5fZGVmaW5lUHJvcGVydHkoQXJlYSwgXCJkaXNwbGF5TmFtZVwiLCAnQXJlYScpO1xuX2RlZmluZVByb3BlcnR5KEFyZWEsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgc3Ryb2tlOiAnIzMxODJiZCcsXG4gIGZpbGw6ICcjMzE4MmJkJyxcbiAgZmlsbE9wYWNpdHk6IDAuNixcbiAgeEF4aXNJZDogMCxcbiAgeUF4aXNJZDogMCxcbiAgbGVnZW5kVHlwZTogJ2xpbmUnLFxuICBjb25uZWN0TnVsbHM6IGZhbHNlLFxuICAvLyBwb2ludHMgb2YgYXJlYVxuICBwb2ludHM6IFtdLFxuICBkb3Q6IGZhbHNlLFxuICBhY3RpdmVEb3Q6IHRydWUsXG4gIGhpZGU6IGZhbHNlLFxuICBpc0FuaW1hdGlvbkFjdGl2ZTogIUdsb2JhbC5pc1NzcixcbiAgYW5pbWF0aW9uQmVnaW46IDAsXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiAxNTAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJ1xufSk7XG5fZGVmaW5lUHJvcGVydHkoQXJlYSwgXCJnZXRCYXNlVmFsdWVcIiwgZnVuY3Rpb24gKHByb3BzLCBpdGVtLCB4QXhpcywgeUF4aXMpIHtcbiAgdmFyIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGFydEJhc2VWYWx1ZSA9IHByb3BzLmJhc2VWYWx1ZTtcbiAgdmFyIGl0ZW1CYXNlVmFsdWUgPSBpdGVtLnByb3BzLmJhc2VWYWx1ZTtcblxuICAvLyBUaGUgYmFzZVZhbHVlIGNhbiBiZSBkZWZpbmVkIGJvdGggb24gdGhlIEFyZWFDaGFydCBhcyB3ZWxsIGFzIG9uIHRoZSBBcmVhLlxuICAvLyBUaGUgdmFsdWUgZm9yIHRoZSBpdGVtIHRha2VzIHByZWNlZGVuY2UuXG4gIHZhciBiYXNlVmFsdWUgPSBpdGVtQmFzZVZhbHVlICE9PSBudWxsICYmIGl0ZW1CYXNlVmFsdWUgIT09IHZvaWQgMCA/IGl0ZW1CYXNlVmFsdWUgOiBjaGFydEJhc2VWYWx1ZTtcbiAgaWYgKGlzTnVtYmVyKGJhc2VWYWx1ZSkgJiYgdHlwZW9mIGJhc2VWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYmFzZVZhbHVlO1xuICB9XG4gIHZhciBudW1lcmljQXhpcyA9IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8geUF4aXMgOiB4QXhpcztcbiAgdmFyIGRvbWFpbiA9IG51bWVyaWNBeGlzLnNjYWxlLmRvbWFpbigpO1xuICBpZiAobnVtZXJpY0F4aXMudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YXIgZG9tYWluTWF4ID0gTWF0aC5tYXgoZG9tYWluWzBdLCBkb21haW5bMV0pO1xuICAgIHZhciBkb21haW5NaW4gPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gICAgaWYgKGJhc2VWYWx1ZSA9PT0gJ2RhdGFNaW4nKSB7XG4gICAgICByZXR1cm4gZG9tYWluTWluO1xuICAgIH1cbiAgICBpZiAoYmFzZVZhbHVlID09PSAnZGF0YU1heCcpIHtcbiAgICAgIHJldHVybiBkb21haW5NYXg7XG4gICAgfVxuICAgIHJldHVybiBkb21haW5NYXggPCAwID8gZG9tYWluTWF4IDogTWF0aC5tYXgoTWF0aC5taW4oZG9tYWluWzBdLCBkb21haW5bMV0pLCAwKTtcbiAgfVxuICBpZiAoYmFzZVZhbHVlID09PSAnZGF0YU1pbicpIHtcbiAgICByZXR1cm4gZG9tYWluWzBdO1xuICB9XG4gIGlmIChiYXNlVmFsdWUgPT09ICdkYXRhTWF4Jykge1xuICAgIHJldHVybiBkb21haW5bMV07XG4gIH1cbiAgcmV0dXJuIGRvbWFpblswXTtcbn0pO1xuX2RlZmluZVByb3BlcnR5KEFyZWEsIFwiZ2V0Q29tcG9zZWREYXRhXCIsIGZ1bmN0aW9uIChfcmVmNCkge1xuICB2YXIgcHJvcHMgPSBfcmVmNC5wcm9wcyxcbiAgICBpdGVtID0gX3JlZjQuaXRlbSxcbiAgICB4QXhpcyA9IF9yZWY0LnhBeGlzLFxuICAgIHlBeGlzID0gX3JlZjQueUF4aXMsXG4gICAgeEF4aXNUaWNrcyA9IF9yZWY0LnhBeGlzVGlja3MsXG4gICAgeUF4aXNUaWNrcyA9IF9yZWY0LnlBeGlzVGlja3MsXG4gICAgYmFuZFNpemUgPSBfcmVmNC5iYW5kU2l6ZSxcbiAgICBkYXRhS2V5ID0gX3JlZjQuZGF0YUtleSxcbiAgICBzdGFja2VkRGF0YSA9IF9yZWY0LnN0YWNrZWREYXRhLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZjQuZGF0YVN0YXJ0SW5kZXgsXG4gICAgZGlzcGxheWVkRGF0YSA9IF9yZWY0LmRpc3BsYXllZERhdGEsXG4gICAgb2Zmc2V0ID0gX3JlZjQub2Zmc2V0O1xuICB2YXIgbGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICB2YXIgaGFzU3RhY2sgPSBzdGFja2VkRGF0YSAmJiBzdGFja2VkRGF0YS5sZW5ndGg7XG4gIHZhciBiYXNlVmFsdWUgPSBfQXJlYS5nZXRCYXNlVmFsdWUocHJvcHMsIGl0ZW0sIHhBeGlzLCB5QXhpcyk7XG4gIHZhciBpc0hvcml6b250YWxMYXlvdXQgPSBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgdmFyIGlzUmFuZ2UgPSBmYWxzZTtcbiAgdmFyIHBvaW50cyA9IGRpc3BsYXllZERhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWU7XG4gICAgaWYgKGhhc1N0YWNrKSB7XG4gICAgICB2YWx1ZSA9IHN0YWNrZWREYXRhW2RhdGFTdGFydEluZGV4ICsgaW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBkYXRhS2V5KTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBbYmFzZVZhbHVlLCB2YWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc1JhbmdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIGlzQnJlYWtQb2ludCA9IHZhbHVlWzFdID09IG51bGwgfHwgaGFzU3RhY2sgJiYgZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGRhdGFLZXkpID09IG51bGw7XG4gICAgaWYgKGlzSG9yaXpvbnRhbExheW91dCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogZ2V0Q2F0ZUNvb3JkaW5hdGVPZkxpbmUoe1xuICAgICAgICAgIGF4aXM6IHhBeGlzLFxuICAgICAgICAgIHRpY2tzOiB4QXhpc1RpY2tzLFxuICAgICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgICBlbnRyeTogZW50cnksXG4gICAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICAgIH0pLFxuICAgICAgICB5OiBpc0JyZWFrUG9pbnQgPyBudWxsIDogeUF4aXMuc2NhbGUodmFsdWVbMV0pLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgeDogaXNCcmVha1BvaW50ID8gbnVsbCA6IHhBeGlzLnNjYWxlKHZhbHVlWzFdKSxcbiAgICAgIHk6IGdldENhdGVDb29yZGluYXRlT2ZMaW5lKHtcbiAgICAgICAgYXhpczogeUF4aXMsXG4gICAgICAgIHRpY2tzOiB5QXhpc1RpY2tzLFxuICAgICAgICBiYW5kU2l6ZTogYmFuZFNpemUsXG4gICAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9KSxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgfTtcbiAgfSk7XG4gIHZhciBiYXNlTGluZTtcbiAgaWYgKGhhc1N0YWNrIHx8IGlzUmFuZ2UpIHtcbiAgICBiYXNlTGluZSA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgeCA9IEFycmF5LmlzQXJyYXkoZW50cnkudmFsdWUpID8gZW50cnkudmFsdWVbMF0gOiBudWxsO1xuICAgICAgaWYgKGlzSG9yaXpvbnRhbExheW91dCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IGVudHJ5LngsXG4gICAgICAgICAgeTogeCAhPSBudWxsICYmIGVudHJ5LnkgIT0gbnVsbCA/IHlBeGlzLnNjYWxlKHgpIDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCAhPSBudWxsID8geEF4aXMuc2NhbGUoeCkgOiBudWxsLFxuICAgICAgICB5OiBlbnRyeS55XG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2VMaW5lID0gaXNIb3Jpem9udGFsTGF5b3V0ID8geUF4aXMuc2NhbGUoYmFzZVZhbHVlKSA6IHhBeGlzLnNjYWxlKGJhc2VWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgIHBvaW50czogcG9pbnRzLFxuICAgIGJhc2VMaW5lOiBiYXNlTGluZSxcbiAgICBsYXlvdXQ6IGxheW91dCxcbiAgICBpc1JhbmdlOiBpc1JhbmdlXG4gIH0sIG9mZnNldCk7XG59KTtcbl9kZWZpbmVQcm9wZXJ0eShBcmVhLCBcInJlbmRlckRvdEl0ZW1cIiwgZnVuY3Rpb24gKG9wdGlvbiwgcHJvcHMpIHtcbiAgdmFyIGRvdEl0ZW07XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICBkb3RJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICBkb3RJdGVtID0gb3B0aW9uKHByb3BzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gY2xzeCgncmVjaGFydHMtYXJlYS1kb3QnLCB0eXBlb2Ygb3B0aW9uICE9PSAnYm9vbGVhbicgPyBvcHRpb24uY2xhc3NOYW1lIDogJycpO1xuICAgIGRvdEl0ZW0gPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEb3QsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVcbiAgICB9KSk7XG4gIH1cbiAgcmV0dXJuIGRvdEl0ZW07XG59KTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX0FyZWEiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwic291cmNlS2V5cyIsImtleXMiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJhcmd1bWVudHMiLCJoYXNPd25Qcm9wZXJ0eSIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY2xzeCIsIkFuaW1hdGUiLCJpc0Z1bmN0aW9uIiwibWF4IiwiaXNOaWwiLCJpc05hbiIsImlzRXF1YWwiLCJDdXJ2ZSIsIkRvdCIsIkxheWVyIiwiTGFiZWxMaXN0IiwiR2xvYmFsIiwiaXNOdW1iZXIiLCJ1bmlxdWVJZCIsImludGVycG9sYXRlTnVtYmVyIiwiZ2V0Q2F0ZUNvb3JkaW5hdGVPZkxpbmUiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsImZpbHRlclByb3BzIiwiaXNEb3RQcm9wcyIsIkFyZWEiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJpc0FuaW1hdGlvbkZpbmlzaGVkIiwib25BbmltYXRpb25FbmQiLCJzZXRTdGF0ZSIsIm9uQW5pbWF0aW9uU3RhcnQiLCJyZW5kZXJEb3RzIiwibmVlZENsaXAiLCJjbGlwRG90IiwiY2xpcFBhdGhJZCIsImlzQW5pbWF0aW9uQWN0aXZlIiwic3RhdGUiLCJfdGhpcyRwcm9wcyIsImRvdCIsInBvaW50cyIsImRhdGFLZXkiLCJhcmVhUHJvcHMiLCJjdXN0b21Eb3RQcm9wcyIsImRvdHMiLCJtYXAiLCJlbnRyeSIsImRvdFByb3BzIiwiaW5kZXgiLCJjeCIsIngiLCJjeSIsInkiLCJwYXlsb2FkIiwicmVuZGVyRG90SXRlbSIsImRvdHNQcm9wcyIsImNsaXBQYXRoIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInJlbmRlckhvcml6b250YWxSZWN0IiwiYWxwaGEiLCJfdGhpcyRwcm9wczIiLCJiYXNlTGluZSIsInN0cm9rZVdpZHRoIiwic3RhcnRYIiwiZW5kWCIsIndpZHRoIiwiTWF0aCIsImFicyIsIm1heFkiLCJpc0FycmF5IiwiaGVpZ2h0IiwiZmxvb3IiLCJwYXJzZUludCIsInJlbmRlclZlcnRpY2FsUmVjdCIsIl90aGlzJHByb3BzMyIsInN0YXJ0WSIsImVuZFkiLCJtYXhYIiwicmVuZGVyQ2xpcFJlY3QiLCJsYXlvdXQiLCJyZW5kZXJBcmVhU3RhdGljYWxseSIsIl90aGlzJHByb3BzNCIsInR5cGUiLCJzdHJva2UiLCJjb25uZWN0TnVsbHMiLCJpc1JhbmdlIiwicmVmIiwib3RoZXJzIiwiZmlsbCIsInJlbmRlckFyZWFXaXRoQW5pbWF0aW9uIiwiX3RoaXMyIiwiX3RoaXMkcHJvcHM1IiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImFuaW1hdGlvbklkIiwiX3RoaXMkc3RhdGUiLCJwcmV2UG9pbnRzIiwicHJldkJhc2VMaW5lIiwiYmVnaW4iLCJkdXJhdGlvbiIsImlzQWN0aXZlIiwiZWFzaW5nIiwiZnJvbSIsInRvIiwiaGFuZGxlQW5pbWF0aW9uRW5kIiwiaGFuZGxlQW5pbWF0aW9uU3RhcnQiLCJfcmVmIiwicHJldlBvaW50c0RpZmZGYWN0b3IiLCJzdGVwUG9pbnRzIiwicHJldlBvaW50SW5kZXgiLCJwcmV2IiwiaW50ZXJwb2xhdG9yWCIsImludGVycG9sYXRvclkiLCJzdGVwQmFzZUxpbmUiLCJpbnRlcnBvbGF0b3IiLCJfaW50ZXJwb2xhdG9yIiwiaWQiLCJyZW5kZXJBcmVhIiwiX3RoaXMkcHJvcHM2IiwiX3RoaXMkc3RhdGUyIiwidG90YWxMZW5ndGgiLCJyZW5kZXIiLCJfZmlsdGVyUHJvcHMiLCJfdGhpcyRwcm9wczciLCJoaWRlIiwidG9wIiwibGVmdCIsInhBeGlzIiwieUF4aXMiLCJoYXNTaW5nbGVQb2ludCIsImxheWVyQ2xhc3MiLCJuZWVkQ2xpcFgiLCJhbGxvd0RhdGFPdmVyZmxvdyIsIm5lZWRDbGlwWSIsIl9yZWYyIiwiX3JlZjIkciIsIl9yZWYyJHN0cm9rZVdpZHRoIiwiX3JlZjMiLCJfcmVmMyRjbGlwRG90IiwiZG90U2l6ZSIsInJlbmRlckNhbGxCeVBhcmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsInByZXZBbmltYXRpb25JZCIsImN1clBvaW50cyIsImN1ckJhc2VMaW5lIiwiZmlsbE9wYWNpdHkiLCJ4QXhpc0lkIiwieUF4aXNJZCIsImxlZ2VuZFR5cGUiLCJhY3RpdmVEb3QiLCJpc1NzciIsIml0ZW0iLCJjaGFydEJhc2VWYWx1ZSIsImJhc2VWYWx1ZSIsIml0ZW1CYXNlVmFsdWUiLCJudW1lcmljQXhpcyIsImRvbWFpbiIsInNjYWxlIiwiZG9tYWluTWF4IiwiZG9tYWluTWluIiwibWluIiwiX3JlZjQiLCJ4QXhpc1RpY2tzIiwieUF4aXNUaWNrcyIsImJhbmRTaXplIiwic3RhY2tlZERhdGEiLCJkYXRhU3RhcnRJbmRleCIsImRpc3BsYXllZERhdGEiLCJvZmZzZXQiLCJoYXNTdGFjayIsImdldEJhc2VWYWx1ZSIsImlzSG9yaXpvbnRhbExheW91dCIsImlzQnJlYWtQb2ludCIsImF4aXMiLCJ0aWNrcyIsIm9wdGlvbiIsImRvdEl0ZW0iLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Area.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Bar.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Bar.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Bar: () => (/* binding */ Bar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _ErrorBar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ErrorBar */ \"(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\");\n/* harmony import */ var _component_Cell__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../component/Cell */ \"(ssr)/./node_modules/recharts/es6/component/Cell.js\");\n/* harmony import */ var _component_LabelList__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../component/LabelList */ \"(ssr)/./node_modules/recharts/es6/component/LabelList.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_BarUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/BarUtils */ \"(ssr)/./node_modules/recharts/es6/util/BarUtils.js\");\nvar _excluded = [\n \"value\",\n \"background\"\n];\nvar _Bar;\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Render a group of bar\n */ \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Bar = /*#__PURE__*/ function(_PureComponent) {\n _inherits(Bar, _PureComponent);\n function Bar() {\n var _this;\n _classCallCheck(this, Bar);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Bar, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: false\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.uniqueId)(\"recharts-bar-\"));\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function() {\n var onAnimationEnd = _this.props.onAnimationEnd;\n _this.setState({\n isAnimationFinished: true\n });\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function() {\n var onAnimationStart = _this.props.onAnimationStart;\n _this.setState({\n isAnimationFinished: false\n });\n if (onAnimationStart) {\n onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Bar, [\n {\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n var _this$props = this.props, shape = _this$props.shape, dataKey = _this$props.dataKey, activeIndex = _this$props.activeIndex, activeBar = _this$props.activeBar;\n var baseProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.filterProps)(this.props, false);\n return data && data.map(function(entry, i) {\n var isActive = i === activeIndex;\n var option = isActive ? activeBar : shape;\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n isActive: isActive,\n option: option,\n index: i,\n dataKey: dataKey,\n onAnimationStart: _this2.handleAnimationStart,\n onAnimationEnd: _this2.handleAnimationEnd\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventsOfChild)(_this2.props, entry, i), {\n key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.BarRectangle, props));\n });\n }\n },\n {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n var _this$props2 = this.props, data = _this$props2.data, layout = _this$props2.layout, isAnimationActive = _this$props2.isAnimationActive, animationBegin = _this$props2.animationBegin, animationDuration = _this$props2.animationDuration, animationEasing = _this$props2.animationEasing, animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function(_ref) {\n var t = _ref.t;\n var stepData = data.map(function(entry, index) {\n var prev = prevData && prevData[index];\n if (prev) {\n var interpolatorX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.x, entry.x);\n var interpolatorY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.y, entry.y);\n var interpolatorWidth = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.width, entry.width);\n var interpolatorHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n if (layout === \"horizontal\") {\n var _interpolatorHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(0, entry.height);\n var h = _interpolatorHeight(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n var interpolator = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.interpolateNumber)(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n },\n {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props, data = _this$props3.data, isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n if (isAnimationActive && data && data.length && (!prevData || !lodash_isEqual__WEBPACK_IMPORTED_MODULE_2___default()(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n return this.renderRectanglesStatically(data);\n }\n },\n {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n var _this$props4 = this.props, data = _this$props4.data, dataKey = _this$props4.dataKey, activeIndex = _this$props4.activeIndex;\n var backgroundProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.filterProps)(this.props.background, false);\n return data.map(function(entry, i) {\n var value = entry.value, background = entry.background, rest = _objectWithoutProperties(entry, _excluded);\n if (!background) {\n return null;\n }\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: \"#eee\"\n }, background), backgroundProps), (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventsOfChild)(_this4.props, entry, i)), {}, {\n onAnimationStart: _this4.handleAnimationStart,\n onAnimationEnd: _this4.handleAnimationEnd,\n dataKey: dataKey,\n index: i,\n key: \"background-bar-\".concat(i),\n className: \"recharts-bar-background-rectangle\"\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.BarRectangle, _extends({\n option: _this4.props.background,\n isActive: i === activeIndex\n }, props));\n });\n }\n },\n {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props5 = this.props, data = _this$props5.data, xAxis = _this$props5.xAxis, yAxis = _this$props5.yAxis, layout = _this$props5.layout, children = _this$props5.children;\n var errorBarItems = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.findAllByType)(children, _ErrorBar__WEBPACK_IMPORTED_MODULE_10__.ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var offset = layout === \"vertical\" ? data[0].height / 2 : data[0].width / 2;\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n /**\n * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n * */ var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: value,\n errorVal: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getValueByDataKey)(dataPoint, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, errorBarProps, errorBarItems.map(function(item) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(item, {\n key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props, hide = _this$props6.hide, data = _this$props6.data, className = _this$props6.className, xAxis = _this$props6.xAxis, yAxis = _this$props6.yAxis, left = _this$props6.left, top = _this$props6.top, width = _this$props6.width, height = _this$props6.height, isAnimationActive = _this$props6.isAnimationActive, background = _this$props6.background, id = _this$props6.id;\n if (hide || !data || !data.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-bar\", className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = lodash_isNil__WEBPACK_IMPORTED_MODULE_3___default()(id) ? this.id : id;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n }))) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_6__.Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && _component_LabelList__WEBPACK_IMPORTED_MODULE_12__.LabelList.renderCallByParent(this.props, data));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n return null;\n }\n }\n ]);\n return Bar;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", \"Bar\");\n_defineProperty(Bar, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n legendType: \"rect\",\n minPointSize: 0,\n hide: false,\n data: [],\n layout: \"vertical\",\n activeBar: false,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_13__.Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: \"ease\"\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item An instance of Bar\n * @param {Array} barPosition The offset and size of each bar\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {Array} stackedData The stacked data of a bar item\n * @return{Array} Composed data\n */ _defineProperty(Bar, \"getComposedData\", function(_ref2) {\n var props = _ref2.props, item = _ref2.item, barPosition = _ref2.barPosition, bandSize = _ref2.bandSize, xAxis = _ref2.xAxis, yAxis = _ref2.yAxis, xAxisTicks = _ref2.xAxisTicks, yAxisTicks = _ref2.yAxisTicks, stackedData = _ref2.stackedData, dataStartIndex = _ref2.dataStartIndex, displayedData = _ref2.displayedData, offset = _ref2.offset;\n var pos = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.findPositionOfBar)(barPosition, item);\n if (!pos) {\n return null;\n }\n var layout = props.layout;\n var _item$props = item.props, dataKey = _item$props.dataKey, children = _item$props.children, minPointSizeProp = _item$props.minPointSize;\n var numericAxis = layout === \"horizontal\" ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBaseValueOfBar)({\n numericAxis: numericAxis\n });\n var cells = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_5__.findAllByType)(children, _component_Cell__WEBPACK_IMPORTED_MODULE_14__.Cell);\n var rects = displayedData.map(function(entry, index) {\n var value, x, y, width, height, background;\n if (stackedData) {\n value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.truncateByDomain)(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getValueByDataKey)(entry, dataKey);\n if (!Array.isArray(value)) {\n value = [\n baseValue,\n value\n ];\n }\n }\n var minPointSize = (0,_util_BarUtils__WEBPACK_IMPORTED_MODULE_8__.minPointSizeCallback)(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n if (layout === \"horizontal\") {\n var _ref4;\n var _ref3 = [\n yAxis.scale(value[0]),\n yAxis.scale(value[1])\n ], baseValueScale = _ref3[0], currentValueScale = _ref3[1];\n x = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getCateCoordinateOfBar)({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n width = pos.size;\n var computedHeight = baseValueScale - currentValueScale;\n height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.mathSign)(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n var _ref5 = [\n xAxis.scale(value[0]),\n xAxis.scale(value[1])\n ], _baseValueScale = _ref5[0], _currentValueScale = _ref5[1];\n x = _baseValueScale;\n y = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getCateCoordinateOfBar)({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = _currentValueScale - _baseValueScale;\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.mathSign)(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n width += _delta;\n }\n }\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [\n (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTooltipItem)(item, entry)\n ],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CYXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFTO0NBQWE7QUFDdkMsSUFBSUM7QUFDSixTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0sseUJBQXlCQyxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJRCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUUsU0FBU0MsOEJBQThCSCxRQUFRQztJQUFXLElBQUlHLEtBQUtDO0lBQUcsSUFBSUMsT0FBT0MscUJBQXFCLEVBQUU7UUFBRSxJQUFJQyxtQkFBbUJGLE9BQU9DLHFCQUFxQixDQUFDUDtRQUFTLElBQUtLLElBQUksR0FBR0EsSUFBSUcsaUJBQWlCQyxNQUFNLEVBQUVKLElBQUs7WUFBRUQsTUFBTUksZ0JBQWdCLENBQUNILEVBQUU7WUFBRSxJQUFJSixTQUFTUyxPQUFPLENBQUNOLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ0UsT0FBT1IsU0FBUyxDQUFDYSxvQkFBb0IsQ0FBQ0MsSUFBSSxDQUFDWixRQUFRSSxNQUFNO1lBQVVGLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHSixNQUFNLENBQUNJLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0Y7QUFBUTtBQUMzZSxTQUFTQyw4QkFBOEJILE1BQU0sRUFBRUMsUUFBUTtJQUFJLElBQUlELFVBQVUsTUFBTSxPQUFPLENB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QUNOMUYsUUFBUUE7SUFDVixHQUFHMkM7QUFDTCIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CYXIuanM/OGNjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1widmFsdWVcIiwgXCJiYWNrZ3JvdW5kXCJdO1xudmFyIF9CYXI7XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfY2FsbFN1cGVyKHQsIG8sIGUpIHsgcmV0dXJuIG8gPSBfZ2V0UHJvdG90eXBlT2YobyksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSA/IFJlZmxlY3QuY29uc3RydWN0KG8sIGUgfHwgW10sIF9nZXRQcm90b3R5cGVPZih0KS5jb25zdHJ1Y3RvcikgOiBvLmFwcGx5KHQsIGUpKTsgfVxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdWJDbGFzcywgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlbmRlciBhIGdyb3VwIG9mIGJhclxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IEFuaW1hdGUgZnJvbSAncmVhY3Qtc21vb3RoJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgRXJyb3JCYXIgfSBmcm9tICcuL0Vycm9yQmFyJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICcuLi9jb21wb25lbnQvQ2VsbCc7XG5pbXBvcnQgeyBMYWJlbExpc3QgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWxMaXN0JztcbmltcG9ydCB7IHVuaXF1ZUlkLCBtYXRoU2lnbiwgaW50ZXJwb2xhdGVOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgZmluZEFsbEJ5VHlwZSB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyLCBnZXRWYWx1ZUJ5RGF0YUtleSwgdHJ1bmNhdGVCeURvbWFpbiwgZ2V0QmFzZVZhbHVlT2ZCYXIsIGZpbmRQb3NpdGlvbk9mQmFyLCBnZXRUb29sdGlwSXRlbSB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5pbXBvcnQgeyBhZGFwdEV2ZW50c09mQ2hpbGQgfSBmcm9tICcuLi91dGlsL3R5cGVzJztcbmltcG9ydCB7IEJhclJlY3RhbmdsZSwgbWluUG9pbnRTaXplQ2FsbGJhY2sgfSBmcm9tICcuLi91dGlsL0JhclV0aWxzJztcbmV4cG9ydCB2YXIgQmFyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQmFyLCBfUHVyZUNvbXBvbmVudCk7XG4gIGZ1bmN0aW9uIEJhcigpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJhcik7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQmFyLCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7XG4gICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiBmYWxzZVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpZFwiLCB1bmlxdWVJZCgncmVjaGFydHMtYmFyLScpKTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQW5pbWF0aW9uRW5kXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvbkFuaW1hdGlvbkVuZCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uRW5kO1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0FuaW1hdGlvbkZpbmlzaGVkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGlmIChvbkFuaW1hdGlvbkVuZCkge1xuICAgICAgICBvbkFuaW1hdGlvbkVuZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVBbmltYXRpb25TdGFydFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb25BbmltYXRpb25TdGFydCA9IF90aGlzLnByb3BzLm9uQW5pbWF0aW9uU3RhcnQ7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzQW5pbWF0aW9uRmluaXNoZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIGlmIChvbkFuaW1hdGlvblN0YXJ0KSB7XG4gICAgICAgIG9uQW5pbWF0aW9uU3RhcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEJhciwgW3tcbiAgICBrZXk6IFwicmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHkoZGF0YSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBzaGFwZSA9IF90aGlzJHByb3BzLnNoYXBlLFxuICAgICAgICBkYXRhS2V5ID0gX3RoaXMkcHJvcHMuZGF0YUtleSxcbiAgICAgICAgYWN0aXZlSW5kZXggPSBfdGhpcyRwcm9wcy5hY3RpdmVJbmRleCxcbiAgICAgICAgYWN0aXZlQmFyID0gX3RoaXMkcHJvcHMuYWN0aXZlQmFyO1xuICAgICAgdmFyIGJhc2VQcm9wcyA9IGZpbHRlclByb3BzKHRoaXMucHJvcHMsIGZhbHNlKTtcbiAgICAgIHJldHVybiBkYXRhICYmIGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgICAgICB2YXIgaXNBY3RpdmUgPSBpID09PSBhY3RpdmVJbmRleDtcbiAgICAgICAgdmFyIG9wdGlvbiA9IGlzQWN0aXZlID8gYWN0aXZlQmFyIDogc2hhcGU7XG4gICAgICAgIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBiYXNlUHJvcHMpLCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgaXNBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgb25BbmltYXRpb25TdGFydDogX3RoaXMyLmhhbmRsZUFuaW1hdGlvblN0YXJ0LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBfdGhpczIuaGFuZGxlQW5pbWF0aW9uRW5kXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYmFyLXJlY3RhbmdsZVwiXG4gICAgICAgIH0sIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpczIucHJvcHMsIGVudHJ5LCBpKSwge1xuICAgICAgICAgIGtleTogXCJyZWN0YW5nbGUtXCIuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS54LCBcIi1cIikuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS55LCBcIi1cIikuY29uY2F0KGVudHJ5ID09PSBudWxsIHx8IGVudHJ5ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbnRyeS52YWx1ZSlcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEJhclJlY3RhbmdsZSwgcHJvcHMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczIuZGF0YSxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMyLmxheW91dCxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wczIuaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICAgIGFuaW1hdGlvbkJlZ2luID0gX3RoaXMkcHJvcHMyLmFuaW1hdGlvbkJlZ2luLFxuICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IF90aGlzJHByb3BzMi5hbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nID0gX3RoaXMkcHJvcHMyLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgYW5pbWF0aW9uSWQgPSBfdGhpcyRwcm9wczIuYW5pbWF0aW9uSWQ7XG4gICAgICB2YXIgcHJldkRhdGEgPSB0aGlzLnN0YXRlLnByZXZEYXRhO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICAgICAgYmVnaW46IGFuaW1hdGlvbkJlZ2luLFxuICAgICAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGlzQWN0aXZlOiBpc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgZWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0OiAwXG4gICAgICAgIH0sXG4gICAgICAgIHRvOiB7XG4gICAgICAgICAgdDogMVxuICAgICAgICB9LFxuICAgICAgICBrZXk6IFwiYmFyLVwiLmNvbmNhdChhbmltYXRpb25JZCksXG4gICAgICAgIG9uQW5pbWF0aW9uRW5kOiB0aGlzLmhhbmRsZUFuaW1hdGlvbkVuZCxcbiAgICAgICAgb25BbmltYXRpb25TdGFydDogdGhpcy5oYW5kbGVBbmltYXRpb25TdGFydFxuICAgICAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIHQgPSBfcmVmLnQ7XG4gICAgICAgIHZhciBzdGVwRGF0YSA9IGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICAgICAgICB2YXIgcHJldiA9IHByZXZEYXRhICYmIHByZXZEYXRhW2luZGV4XTtcbiAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvclggPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LngsIGVudHJ5LngpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvclkgPSBpbnRlcnBvbGF0ZU51bWJlcihwcmV2LnksIGVudHJ5LnkpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvcldpZHRoID0gaW50ZXJwb2xhdGVOdW1iZXIocHJldi53aWR0aCwgZW50cnkud2lkdGgpO1xuICAgICAgICAgICAgdmFyIGludGVycG9sYXRvckhlaWdodCA9IGludGVycG9sYXRlTnVtYmVyKHByZXYuaGVpZ2h0LCBlbnRyeS5oZWlnaHQpO1xuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICAgICAgICB4OiBpbnRlcnBvbGF0b3JYKHQpLFxuICAgICAgICAgICAgICB5OiBpbnRlcnBvbGF0b3JZKHQpLFxuICAgICAgICAgICAgICB3aWR0aDogaW50ZXJwb2xhdG9yV2lkdGgodCksXG4gICAgICAgICAgICAgIGhlaWdodDogaW50ZXJwb2xhdG9ySGVpZ2h0KHQpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICB2YXIgX2ludGVycG9sYXRvckhlaWdodCA9IGludGVycG9sYXRlTnVtYmVyKDAsIGVudHJ5LmhlaWdodCk7XG4gICAgICAgICAgICB2YXIgaCA9IF9pbnRlcnBvbGF0b3JIZWlnaHQodCk7XG4gICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgICAgICAgIHk6IGVudHJ5LnkgKyBlbnRyeS5oZWlnaHQgLSBoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdG9yID0gaW50ZXJwb2xhdGVOdW1iZXIoMCwgZW50cnkud2lkdGgpO1xuICAgICAgICAgIHZhciB3ID0gaW50ZXJwb2xhdG9yKHQpO1xuICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGVudHJ5KSwge30sIHtcbiAgICAgICAgICAgIHdpZHRoOiB3XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIG51bGwsIF90aGlzMy5yZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseShzdGVwRGF0YSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclJlY3RhbmdsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUmVjdGFuZ2xlcygpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHMzLmRhdGEsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlID0gX3RoaXMkcHJvcHMzLmlzQW5pbWF0aW9uQWN0aXZlO1xuICAgICAgdmFyIHByZXZEYXRhID0gdGhpcy5zdGF0ZS5wcmV2RGF0YTtcbiAgICAgIGlmIChpc0FuaW1hdGlvbkFjdGl2ZSAmJiBkYXRhICYmIGRhdGEubGVuZ3RoICYmICghcHJldkRhdGEgfHwgIWlzRXF1YWwocHJldkRhdGEsIGRhdGEpKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbigpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyUmVjdGFuZ2xlc1N0YXRpY2FsbHkoZGF0YSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckJhY2tncm91bmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQmFja2dyb3VuZCgpIHtcbiAgICAgIHZhciBfdGhpczQgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczQuZGF0YSxcbiAgICAgICAgZGF0YUtleSA9IF90aGlzJHByb3BzNC5kYXRhS2V5LFxuICAgICAgICBhY3RpdmVJbmRleCA9IF90aGlzJHByb3BzNC5hY3RpdmVJbmRleDtcbiAgICAgIHZhciBiYWNrZ3JvdW5kUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLmJhY2tncm91bmQsIGZhbHNlKTtcbiAgICAgIHJldHVybiBkYXRhLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gZW50cnkudmFsdWUsXG4gICAgICAgICAgYmFja2dyb3VuZCA9IGVudHJ5LmJhY2tncm91bmQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlbnRyeSwgX2V4Y2x1ZGVkKTtcbiAgICAgICAgaWYgKCFiYWNrZ3JvdW5kKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0KSwge30sIHtcbiAgICAgICAgICBmaWxsOiAnI2VlZSdcbiAgICAgICAgfSwgYmFja2dyb3VuZCksIGJhY2tncm91bmRQcm9wcyksIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpczQucHJvcHMsIGVudHJ5LCBpKSksIHt9LCB7XG4gICAgICAgICAgb25BbmltYXRpb25TdGFydDogX3RoaXM0LmhhbmRsZUFuaW1hdGlvblN0YXJ0LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBfdGhpczQuaGFuZGxlQW5pbWF0aW9uRW5kLFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAga2V5OiBcImJhY2tncm91bmQtYmFyLVwiLmNvbmNhdChpKSxcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWNoYXJ0cy1iYXItYmFja2dyb3VuZC1yZWN0YW5nbGUnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQmFyUmVjdGFuZ2xlLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgb3B0aW9uOiBfdGhpczQucHJvcHMuYmFja2dyb3VuZCxcbiAgICAgICAgICBpc0FjdGl2ZTogaSA9PT0gYWN0aXZlSW5kZXhcbiAgICAgICAgfSwgcHJvcHMpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJFcnJvckJhclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJFcnJvckJhcihuZWVkQ2xpcCwgY2xpcFBhdGhJZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuaXNBbmltYXRpb25BY3RpdmUgJiYgIXRoaXMuc3RhdGUuaXNBbmltYXRpb25GaW5pc2hlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM1LmRhdGEsXG4gICAgICAgIHhBeGlzID0gX3RoaXMkcHJvcHM1LnhBeGlzLFxuICAgICAgICB5QXhpcyA9IF90aGlzJHByb3BzNS55QXhpcyxcbiAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHM1LmxheW91dCxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczUuY2hpbGRyZW47XG4gICAgICB2YXIgZXJyb3JCYXJJdGVtcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIEVycm9yQmFyKTtcbiAgICAgIGlmICghZXJyb3JCYXJJdGVtcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgPyBkYXRhWzBdLmhlaWdodCAvIDIgOiBkYXRhWzBdLndpZHRoIC8gMjtcbiAgICAgIHZhciBkYXRhUG9pbnRGb3JtYXR0ZXIgPSBmdW5jdGlvbiBkYXRhUG9pbnRGb3JtYXR0ZXIoZGF0YVBvaW50LCBkYXRhS2V5KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB0aGUgdmFsdWUgY29taW5nIGZyb20gYGdldENvbXBvc2VkRGF0YWAgaXMgYW4gYXJyYXkgdGhlbiB0aGlzIGlzIGEgc3RhY2tlZCBiYXIgY2hhcnQuXG4gICAgICAgICAqIGFyclsxXSByZXByZXNlbnRzIGVuZCB2YWx1ZSBvZiB0aGUgYmFyIHNpbmNlIHRoZSBkYXRhIGlzIGluIHRoZSBmb3JtIG9mIFtzdGFydFZhbHVlLCBlbmRWYWx1ZV0uXG4gICAgICAgICAqICovXG4gICAgICAgIHZhciB2YWx1ZSA9IEFycmF5LmlzQXJyYXkoZGF0YVBvaW50LnZhbHVlKSA/IGRhdGFQb2ludC52YWx1ZVsxXSA6IGRhdGFQb2ludC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiBkYXRhUG9pbnQueCxcbiAgICAgICAgICB5OiBkYXRhUG9pbnQueSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgZXJyb3JWYWw6IGdldFZhbHVlQnlEYXRhS2V5KGRhdGFQb2ludCwgZGF0YUtleSlcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICB2YXIgZXJyb3JCYXJQcm9wcyA9IHtcbiAgICAgICAgY2xpcFBhdGg6IG5lZWRDbGlwID8gXCJ1cmwoI2NsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiBudWxsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBlcnJvckJhclByb3BzLCBlcnJvckJhckl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChpdGVtLCB7XG4gICAgICAgICAga2V5OiBcImVycm9yLWJhci1cIi5jb25jYXQoY2xpcFBhdGhJZCwgXCItXCIpLmNvbmNhdChpdGVtLnByb3BzLmRhdGFLZXkpLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgeEF4aXM6IHhBeGlzLFxuICAgICAgICAgIHlBeGlzOiB5QXhpcyxcbiAgICAgICAgICBsYXlvdXQ6IGxheW91dCxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICBkYXRhUG9pbnRGb3JtYXR0ZXI6IGRhdGFQb2ludEZvcm1hdHRlclxuICAgICAgICB9KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICBoaWRlID0gX3RoaXMkcHJvcHM2LmhpZGUsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczYuZGF0YSxcbiAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM2LmNsYXNzTmFtZSxcbiAgICAgICAgeEF4aXMgPSBfdGhpcyRwcm9wczYueEF4aXMsXG4gICAgICAgIHlBeGlzID0gX3RoaXMkcHJvcHM2LnlBeGlzLFxuICAgICAgICBsZWZ0ID0gX3RoaXMkcHJvcHM2LmxlZnQsXG4gICAgICAgIHRvcCA9IF90aGlzJHByb3BzNi50b3AsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM2LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczYuaGVpZ2h0LFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzNi5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYmFja2dyb3VuZCA9IF90aGlzJHByb3BzNi5iYWNrZ3JvdW5kLFxuICAgICAgICBpZCA9IF90aGlzJHByb3BzNi5pZDtcbiAgICAgIGlmIChoaWRlIHx8ICFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHZhciBpc0FuaW1hdGlvbkZpbmlzaGVkID0gdGhpcy5zdGF0ZS5pc0FuaW1hdGlvbkZpbmlzaGVkO1xuICAgICAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1iYXInLCBjbGFzc05hbWUpO1xuICAgICAgdmFyIG5lZWRDbGlwWCA9IHhBeGlzICYmIHhBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwWSA9IHlBeGlzICYmIHlBeGlzLmFsbG93RGF0YU92ZXJmbG93O1xuICAgICAgdmFyIG5lZWRDbGlwID0gbmVlZENsaXBYIHx8IG5lZWRDbGlwWTtcbiAgICAgIHZhciBjbGlwUGF0aElkID0gaXNOaWwoaWQpID8gdGhpcy5pZCA6IGlkO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzc1xuICAgICAgfSwgbmVlZENsaXBYIHx8IG5lZWRDbGlwWSA/IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgaWQ6IFwiY2xpcFBhdGgtXCIuY29uY2F0KGNsaXBQYXRoSWQpXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICB4OiBuZWVkQ2xpcFggPyBsZWZ0IDogbGVmdCAtIHdpZHRoIC8gMixcbiAgICAgICAgeTogbmVlZENsaXBZID8gdG9wIDogdG9wIC0gaGVpZ2h0IC8gMixcbiAgICAgICAgd2lkdGg6IG5lZWRDbGlwWCA/IHdpZHRoIDogd2lkdGggKiAyLFxuICAgICAgICBoZWlnaHQ6IG5lZWRDbGlwWSA/IGhlaWdodCA6IGhlaWdodCAqIDJcbiAgICAgIH0pKSkgOiBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYmFyLXJlY3RhbmdsZXNcIixcbiAgICAgICAgY2xpcFBhdGg6IG5lZWRDbGlwID8gXCJ1cmwoI2NsaXBQYXRoLVwiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiBudWxsXG4gICAgICB9LCBiYWNrZ3JvdW5kID8gdGhpcy5yZW5kZXJCYWNrZ3JvdW5kKCkgOiBudWxsLCB0aGlzLnJlbmRlclJlY3RhbmdsZXMoKSksIHRoaXMucmVuZGVyRXJyb3JCYXIobmVlZENsaXAsIGNsaXBQYXRoSWQpLCAoIWlzQW5pbWF0aW9uQWN0aXZlIHx8IGlzQW5pbWF0aW9uRmluaXNoZWQpICYmIExhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcywgZGF0YSkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgIGlmIChuZXh0UHJvcHMuYW5pbWF0aW9uSWQgIT09IHByZXZTdGF0ZS5wcmV2QW5pbWF0aW9uSWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcmV2QW5pbWF0aW9uSWQ6IG5leHRQcm9wcy5hbmltYXRpb25JZCxcbiAgICAgICAgICBjdXJEYXRhOiBuZXh0UHJvcHMuZGF0YSxcbiAgICAgICAgICBwcmV2RGF0YTogcHJldlN0YXRlLmN1ckRhdGFcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0UHJvcHMuZGF0YSAhPT0gcHJldlN0YXRlLmN1ckRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjdXJEYXRhOiBuZXh0UHJvcHMuZGF0YVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XSk7XG4gIHJldHVybiBCYXI7XG59KFB1cmVDb21wb25lbnQpO1xuX0JhciA9IEJhcjtcbl9kZWZpbmVQcm9wZXJ0eShCYXIsIFwiZGlzcGxheU5hbWVcIiwgJ0JhcicpO1xuX2RlZmluZVByb3BlcnR5KEJhciwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICBsZWdlbmRUeXBlOiAncmVjdCcsXG4gIG1pblBvaW50U2l6ZTogMCxcbiAgaGlkZTogZmFsc2UsXG4gIGRhdGE6IFtdLFxuICBsYXlvdXQ6ICd2ZXJ0aWNhbCcsXG4gIGFjdGl2ZUJhcjogZmFsc2UsXG4gIGlzQW5pbWF0aW9uQWN0aXZlOiAhR2xvYmFsLmlzU3NyLFxuICBhbmltYXRpb25CZWdpbjogMCxcbiAgYW5pbWF0aW9uRHVyYXRpb246IDQwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZSdcbn0pO1xuLyoqXG4gKiBDb21wb3NlIHRoZSBkYXRhIG9mIGVhY2ggZ3JvdXBcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wcyBmb3IgdGhlIGNvbXBvbmVudFxuICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gICAgICAgIEFuIGluc3RhbmNlIG9mIEJhclxuICogQHBhcmFtIHtBcnJheX0gYmFyUG9zaXRpb24gIFRoZSBvZmZzZXQgYW5kIHNpemUgb2YgZWFjaCBiYXJcbiAqIEBwYXJhbSB7T2JqZWN0fSB4QXhpcyAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB4LWF4aXNcbiAqIEBwYXJhbSB7T2JqZWN0fSB5QXhpcyAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvZiB5LWF4aXNcbiAqIEBwYXJhbSB7QXJyYXl9IHN0YWNrZWREYXRhICBUaGUgc3RhY2tlZCBkYXRhIG9mIGEgYmFyIGl0ZW1cbiAqIEByZXR1cm57QXJyYXl9IENvbXBvc2VkIGRhdGFcbiAqL1xuX2RlZmluZVByb3BlcnR5KEJhciwgXCJnZXRDb21wb3NlZERhdGFcIiwgZnVuY3Rpb24gKF9yZWYyKSB7XG4gIHZhciBwcm9wcyA9IF9yZWYyLnByb3BzLFxuICAgIGl0ZW0gPSBfcmVmMi5pdGVtLFxuICAgIGJhclBvc2l0aW9uID0gX3JlZjIuYmFyUG9zaXRpb24sXG4gICAgYmFuZFNpemUgPSBfcmVmMi5iYW5kU2l6ZSxcbiAgICB4QXhpcyA9IF9yZWYyLnhBeGlzLFxuICAgIHlBeGlzID0gX3JlZjIueUF4aXMsXG4gICAgeEF4aXNUaWNrcyA9IF9yZWYyLnhBeGlzVGlja3MsXG4gICAgeUF4aXNUaWNrcyA9IF9yZWYyLnlBeGlzVGlja3MsXG4gICAgc3RhY2tlZERhdGEgPSBfcmVmMi5zdGFja2VkRGF0YSxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWYyLmRhdGFTdGFydEluZGV4LFxuICAgIGRpc3BsYXllZERhdGEgPSBfcmVmMi5kaXNwbGF5ZWREYXRhLFxuICAgIG9mZnNldCA9IF9yZWYyLm9mZnNldDtcbiAgdmFyIHBvcyA9IGZpbmRQb3NpdGlvbk9mQmFyKGJhclBvc2l0aW9uLCBpdGVtKTtcbiAgaWYgKCFwb3MpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5b3V0ID0gcHJvcHMubGF5b3V0O1xuICB2YXIgX2l0ZW0kcHJvcHMgPSBpdGVtLnByb3BzLFxuICAgIGRhdGFLZXkgPSBfaXRlbSRwcm9wcy5kYXRhS2V5LFxuICAgIGNoaWxkcmVuID0gX2l0ZW0kcHJvcHMuY2hpbGRyZW4sXG4gICAgbWluUG9pbnRTaXplUHJvcCA9IF9pdGVtJHByb3BzLm1pblBvaW50U2l6ZTtcbiAgdmFyIG51bWVyaWNBeGlzID0gbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyB5QXhpcyA6IHhBeGlzO1xuICB2YXIgc3RhY2tlZERvbWFpbiA9IHN0YWNrZWREYXRhID8gbnVtZXJpY0F4aXMuc2NhbGUuZG9tYWluKCkgOiBudWxsO1xuICB2YXIgYmFzZVZhbHVlID0gZ2V0QmFzZVZhbHVlT2ZCYXIoe1xuICAgIG51bWVyaWNBeGlzOiBudW1lcmljQXhpc1xuICB9KTtcbiAgdmFyIGNlbGxzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgQ2VsbCk7XG4gIHZhciByZWN0cyA9IGRpc3BsYXllZERhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWUsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJhY2tncm91bmQ7XG4gICAgaWYgKHN0YWNrZWREYXRhKSB7XG4gICAgICB2YWx1ZSA9IHRydW5jYXRlQnlEb21haW4oc3RhY2tlZERhdGFbZGF0YVN0YXJ0SW5kZXggKyBpbmRleF0sIHN0YWNrZWREb21haW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBkYXRhS2V5KTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBbYmFzZVZhbHVlLCB2YWx1ZV07XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBtaW5Qb2ludFNpemUgPSBtaW5Qb2ludFNpemVDYWxsYmFjayhtaW5Qb2ludFNpemVQcm9wLCBfQmFyLmRlZmF1bHRQcm9wcy5taW5Qb2ludFNpemUpKHZhbHVlWzFdLCBpbmRleCk7XG4gICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICB2YXIgX3JlZjQ7XG4gICAgICB2YXIgX3JlZjMgPSBbeUF4aXMuc2NhbGUodmFsdWVbMF0pLCB5QXhpcy5zY2FsZSh2YWx1ZVsxXSldLFxuICAgICAgICBiYXNlVmFsdWVTY2FsZSA9IF9yZWYzWzBdLFxuICAgICAgICBjdXJyZW50VmFsdWVTY2FsZSA9IF9yZWYzWzFdO1xuICAgICAgeCA9IGdldENhdGVDb29yZGluYXRlT2ZCYXIoe1xuICAgICAgICBheGlzOiB4QXhpcyxcbiAgICAgICAgdGlja3M6IHhBeGlzVGlja3MsXG4gICAgICAgIGJhbmRTaXplOiBiYW5kU2l6ZSxcbiAgICAgICAgb2Zmc2V0OiBwb3Mub2Zmc2V0LFxuICAgICAgICBlbnRyeTogZW50cnksXG4gICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgICB5ID0gKF9yZWY0ID0gY3VycmVudFZhbHVlU2NhbGUgIT09IG51bGwgJiYgY3VycmVudFZhbHVlU2NhbGUgIT09IHZvaWQgMCA/IGN1cnJlbnRWYWx1ZVNjYWxlIDogYmFzZVZhbHVlU2NhbGUpICE9PSBudWxsICYmIF9yZWY0ICE9PSB2b2lkIDAgPyBfcmVmNCA6IHVuZGVmaW5lZDtcbiAgICAgIHdpZHRoID0gcG9zLnNpemU7XG4gICAgICB2YXIgY29tcHV0ZWRIZWlnaHQgPSBiYXNlVmFsdWVTY2FsZSAtIGN1cnJlbnRWYWx1ZVNjYWxlO1xuICAgICAgaGVpZ2h0ID0gTnVtYmVyLmlzTmFOKGNvbXB1dGVkSGVpZ2h0KSA/IDAgOiBjb21wdXRlZEhlaWdodDtcbiAgICAgIGJhY2tncm91bmQgPSB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHlBeGlzLnksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB5QXhpcy5oZWlnaHRcbiAgICAgIH07XG4gICAgICBpZiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSA+IDAgJiYgTWF0aC5hYnMoaGVpZ2h0KSA8IE1hdGguYWJzKG1pblBvaW50U2l6ZSkpIHtcbiAgICAgICAgdmFyIGRlbHRhID0gbWF0aFNpZ24oaGVpZ2h0IHx8IG1pblBvaW50U2l6ZSkgKiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSAtIE1hdGguYWJzKGhlaWdodCkpO1xuICAgICAgICB5IC09IGRlbHRhO1xuICAgICAgICBoZWlnaHQgKz0gZGVsdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfcmVmNSA9IFt4QXhpcy5zY2FsZSh2YWx1ZVswXSksIHhBeGlzLnNjYWxlKHZhbHVlWzFdKV0sXG4gICAgICAgIF9iYXNlVmFsdWVTY2FsZSA9IF9yZWY1WzBdLFxuICAgICAgICBfY3VycmVudFZhbHVlU2NhbGUgPSBfcmVmNVsxXTtcbiAgICAgIHggPSBfYmFzZVZhbHVlU2NhbGU7XG4gICAgICB5ID0gZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhcih7XG4gICAgICAgIGF4aXM6IHlBeGlzLFxuICAgICAgICB0aWNrczogeUF4aXNUaWNrcyxcbiAgICAgICAgYmFuZFNpemU6IGJhbmRTaXplLFxuICAgICAgICBvZmZzZXQ6IHBvcy5vZmZzZXQsXG4gICAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICAgICAgaW5kZXg6IGluZGV4XG4gICAgICB9KTtcbiAgICAgIHdpZHRoID0gX2N1cnJlbnRWYWx1ZVNjYWxlIC0gX2Jhc2VWYWx1ZVNjYWxlO1xuICAgICAgaGVpZ2h0ID0gcG9zLnNpemU7XG4gICAgICBiYWNrZ3JvdW5kID0ge1xuICAgICAgICB4OiB4QXhpcy54LFxuICAgICAgICB5OiB5LFxuICAgICAgICB3aWR0aDogeEF4aXMud2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9O1xuICAgICAgaWYgKE1hdGguYWJzKG1pblBvaW50U2l6ZSkgPiAwICYmIE1hdGguYWJzKHdpZHRoKSA8IE1hdGguYWJzKG1pblBvaW50U2l6ZSkpIHtcbiAgICAgICAgdmFyIF9kZWx0YSA9IG1hdGhTaWduKHdpZHRoIHx8IG1pblBvaW50U2l6ZSkgKiAoTWF0aC5hYnMobWluUG9pbnRTaXplKSAtIE1hdGguYWJzKHdpZHRoKSk7XG4gICAgICAgIHdpZHRoICs9IF9kZWx0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICB4OiB4LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgdmFsdWU6IHN0YWNrZWREYXRhID8gdmFsdWUgOiB2YWx1ZVsxXSxcbiAgICAgIHBheWxvYWQ6IGVudHJ5LFxuICAgICAgYmFja2dyb3VuZDogYmFja2dyb3VuZFxuICAgIH0sIGNlbGxzICYmIGNlbGxzW2luZGV4XSAmJiBjZWxsc1tpbmRleF0ucHJvcHMpLCB7fSwge1xuICAgICAgdG9vbHRpcFBheWxvYWQ6IFtnZXRUb29sdGlwSXRlbShpdGVtLCBlbnRyeSldLFxuICAgICAgdG9vbHRpcFBvc2l0aW9uOiB7XG4gICAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICAgIHk6IHkgKyBoZWlnaHQgLyAyXG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgZGF0YTogcmVjdHMsXG4gICAgbGF5b3V0OiBsYXlvdXRcbiAgfSwgb2Zmc2V0KTtcbn0pOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfQmFyIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJ0YXJnZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImtleSIsImkiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwibGVuZ3RoIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2FsbCIsInNvdXJjZUtleXMiLCJrZXlzIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwiYXJndW1lbnRzIiwiaGFzT3duUHJvcGVydHkiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiUmVmZXJlbmNlRXJyb3IiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImNsc3giLCJBbmltYXRlIiwiaXNFcXVhbCIsImlzTmlsIiwiTGF5ZXIiLCJFcnJvckJhciIsIkNlbGwiLCJMYWJlbExpc3QiLCJ1bmlxdWVJZCIsIm1hdGhTaWduIiwiaW50ZXJwb2xhdGVOdW1iZXIiLCJmaWx0ZXJQcm9wcyIsImZpbmRBbGxCeVR5cGUiLCJHbG9iYWwiLCJnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJ0cnVuY2F0ZUJ5RG9tYWluIiwiZ2V0QmFzZVZhbHVlT2ZCYXIiLCJmaW5kUG9zaXRpb25PZkJhciIsImdldFRvb2x0aXBJdGVtIiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiQmFyUmVjdGFuZ2xlIiwibWluUG9pbnRTaXplQ2FsbGJhY2siLCJCYXIiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJpc0FuaW1hdGlvbkZpbmlzaGVkIiwib25BbmltYXRpb25FbmQiLCJzZXRTdGF0ZSIsIm9uQW5pbWF0aW9uU3RhcnQiLCJyZW5kZXJSZWN0YW5nbGVzU3RhdGljYWxseSIsImRhdGEiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsInNoYXBlIiwiZGF0YUtleSIsImFjdGl2ZUluZGV4IiwiYWN0aXZlQmFyIiwiYmFzZVByb3BzIiwibWFwIiwiZW50cnkiLCJpc0FjdGl2ZSIsIm9wdGlvbiIsImluZGV4IiwiaGFuZGxlQW5pbWF0aW9uU3RhcnQiLCJoYW5kbGVBbmltYXRpb25FbmQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwieCIsInkiLCJyZW5kZXJSZWN0YW5nbGVzV2l0aEFuaW1hdGlvbiIsIl90aGlzMyIsIl90aGlzJHByb3BzMiIsImxheW91dCIsImlzQW5pbWF0aW9uQWN0aXZlIiwiYW5pbWF0aW9uQmVnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkVhc2luZyIsImFuaW1hdGlvbklkIiwicHJldkRhdGEiLCJzdGF0ZSIsImJlZ2luIiwiZHVyYXRpb24iLCJlYXNpbmciLCJmcm9tIiwidG8iLCJfcmVmIiwic3RlcERhdGEiLCJwcmV2IiwiaW50ZXJwb2xhdG9yWCIsImludGVycG9sYXRvclkiLCJpbnRlcnBvbGF0b3JXaWR0aCIsIndpZHRoIiwiaW50ZXJwb2xhdG9ySGVpZ2h0IiwiaGVpZ2h0IiwiX2ludGVycG9sYXRvckhlaWdodCIsImgiLCJpbnRlcnBvbGF0b3IiLCJ3IiwicmVuZGVyUmVjdGFuZ2xlcyIsIl90aGlzJHByb3BzMyIsInJlbmRlckJhY2tncm91bmQiLCJfdGhpczQiLCJfdGhpcyRwcm9wczQiLCJiYWNrZ3JvdW5kUHJvcHMiLCJiYWNrZ3JvdW5kIiwicmVzdCIsImZpbGwiLCJyZW5kZXJFcnJvckJhciIsIm5lZWRDbGlwIiwiY2xpcFBhdGhJZCIsIl90aGlzJHByb3BzNSIsInhBeGlzIiwieUF4aXMiLCJjaGlsZHJlbiIsImVycm9yQmFySXRlbXMiLCJvZmZzZXQiLCJkYXRhUG9pbnRGb3JtYXR0ZXIiLCJkYXRhUG9pbnQiLCJpc0FycmF5IiwiZXJyb3JWYWwiLCJlcnJvckJhclByb3BzIiwiY2xpcFBhdGgiLCJpdGVtIiwiY2xvbmVFbGVtZW50IiwicmVuZGVyIiwiX3RoaXMkcHJvcHM2IiwiaGlkZSIsImxlZnQiLCJ0b3AiLCJpZCIsImxheWVyQ2xhc3MiLCJuZWVkQ2xpcFgiLCJhbGxvd0RhdGFPdmVyZmxvdyIsIm5lZWRDbGlwWSIsInJlbmRlckNhbGxCeVBhcmVudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsInByZXZBbmltYXRpb25JZCIsImN1ckRhdGEiLCJ4QXhpc0lkIiwieUF4aXNJZCIsImxlZ2VuZFR5cGUiLCJtaW5Qb2ludFNpemUiLCJpc1NzciIsIl9yZWYyIiwiYmFyUG9zaXRpb24iLCJiYW5kU2l6ZSIsInhBeGlzVGlja3MiLCJ5QXhpc1RpY2tzIiwic3RhY2tlZERhdGEiLCJkYXRhU3RhcnRJbmRleCIsImRpc3BsYXllZERhdGEiLCJwb3MiLCJfaXRlbSRwcm9wcyIsIm1pblBvaW50U2l6ZVByb3AiLCJudW1lcmljQXhpcyIsInN0YWNrZWREb21haW4iLCJzY2FsZSIsImRvbWFpbiIsImJhc2VWYWx1ZSIsImNlbGxzIiwicmVjdHMiLCJkZWZhdWx0UHJvcHMiLCJfcmVmNCIsIl9yZWYzIiwiYmFzZVZhbHVlU2NhbGUiLCJjdXJyZW50VmFsdWVTY2FsZSIsImF4aXMiLCJ0aWNrcyIsInVuZGVmaW5lZCIsInNpemUiLCJjb21wdXRlZEhlaWdodCIsImlzTmFOIiwiTWF0aCIsImFicyIsImRlbHRhIiwiX3JlZjUiLCJfYmFzZVZhbHVlU2NhbGUiLCJfY3VycmVudFZhbHVlU2NhbGUiLCJfZGVsdGEiLCJwYXlsb2FkIiwidG9vbHRpcFBheWxvYWQiLCJ0b29sdGlwUG9zaXRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Bar.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/Brush.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/Brush.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Brush: () => (/* binding */ Brush)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! victory-vendor/d3-scale */ \"(ssr)/./node_modules/victory-vendor/es/d3-scale.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/range */ \"(ssr)/./node_modules/lodash/range.js\");\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_range__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_CssPrefixUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/CssPrefixUtils */ \"(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Brush\n */ \n\n\n\n\n\n\n\n\n\n\nvar createScale = function createScale(_ref) {\n var data = _ref.data, startIndex = _ref.startIndex, endIndex = _ref.endIndex, x = _ref.x, width = _ref.width, travellerWidth = _ref.travellerWidth;\n if (!data || !data.length) {\n return {};\n }\n var len = data.length;\n var scale = (0,victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_2__.scalePoint)().domain(lodash_range__WEBPACK_IMPORTED_MODULE_4___default()(0, len)).range([\n x,\n x + width - travellerWidth\n ]);\n var scaleValues = scale.domain().map(function(entry) {\n return scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n isTravellerFocused: false,\n startX: scale(startIndex),\n endX: scale(endIndex),\n scale: scale,\n scaleValues: scaleValues\n };\n};\nvar isTouch = function isTouch(e) {\n return e.changedTouches && !!e.changedTouches.length;\n};\nvar Brush = /*#__PURE__*/ function(_PureComponent) {\n _inherits(Brush, _PureComponent);\n function Brush(props) {\n var _this;\n _classCallCheck(this, Brush);\n _this = _callSuper(this, Brush, [\n props\n ]);\n _defineProperty(_assertThisInitialized(_this), \"handleDrag\", function(e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleDragEnd\", function() {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n }, function() {\n var _this$props = _this.props, endIndex = _this$props.endIndex, onDragEnd = _this$props.onDragEnd, startIndex = _this$props.startIndex;\n onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n endIndex: endIndex,\n startIndex: startIndex\n });\n });\n _this.detachDragEndListener();\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveWrapper\", function() {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleEnterSlideOrTraveller\", function() {\n _this.setState({\n isTextActive: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleLeaveSlideOrTraveller\", function() {\n _this.setState({\n isTextActive: false\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"handleSlideDragStart\", function(e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n _this.attachDragEndListener();\n });\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), \"startX\"),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), \"endX\")\n };\n _this.state = {};\n return _this;\n }\n _createClass(Brush, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n this.detachDragEndListener();\n }\n },\n {\n key: \"getIndex\",\n value: function getIndex(_ref2) {\n var startX = _ref2.startX, endX = _ref2.endX;\n var scaleValues = this.state.scaleValues;\n var _this$props2 = this.props, gap = _this$props2.gap, data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = Brush.getIndexInRange(scaleValues, min);\n var maxIndex = Brush.getIndexInRange(scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n },\n {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props, data = _this$props3.data, tickFormatter = _this$props3.tickFormatter, dataKey = _this$props3.dataKey;\n var text = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getValueByDataKey)(data[index], dataKey, index);\n return lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(tickFormatter) ? tickFormatter(text, index) : text;\n }\n },\n {\n key: \"attachDragEndListener\",\n value: function attachDragEndListener() {\n window.addEventListener(\"mouseup\", this.handleDragEnd, true);\n window.addEventListener(\"touchend\", this.handleDragEnd, true);\n window.addEventListener(\"mousemove\", this.handleDrag, true);\n }\n },\n {\n key: \"detachDragEndListener\",\n value: function detachDragEndListener() {\n window.removeEventListener(\"mouseup\", this.handleDragEnd, true);\n window.removeEventListener(\"touchend\", this.handleDragEnd, true);\n window.removeEventListener(\"mousemove\", this.handleDrag, true);\n }\n },\n {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state, slideMoveStartX = _this$state.slideMoveStartX, startX = _this$state.startX, endX = _this$state.endX;\n var _this$props4 = this.props, x = _this$props4.x, width = _this$props4.width, travellerWidth = _this$props4.travellerWidth, startIndex = _this$props4.startIndex, endIndex = _this$props4.endIndex, onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n },\n {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = isTouch(e) ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n this.attachDragEndListener();\n }\n },\n {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$state2 = this.state, brushMoveStartX = _this$state2.brushMoveStartX, movingTravellerId = _this$state2.movingTravellerId, endX = _this$state2.endX, startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props, x = _this$props5.x, width = _this$props5.width, travellerWidth = _this$props5.travellerWidth, onChange = _this$props5.onChange, gap = _this$props5.gap, data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex, endIndex = newIndex.endIndex;\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n if (movingTravellerId === \"startX\" && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === \"endX\" && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n return false;\n };\n this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function() {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n },\n {\n key: \"handleTravellerMoveKeyboard\",\n value: function handleTravellerMoveKeyboard(direction, id) {\n var _this2 = this;\n // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n var _this$state3 = this.state, scaleValues = _this$state3.scaleValues, startX = _this$state3.startX, endX = _this$state3.endX;\n // currentScaleValue refers to which coordinate the current traveller should be placed at.\n var currentScaleValue = this.state[id];\n var currentIndex = scaleValues.indexOf(currentScaleValue);\n if (currentIndex === -1) {\n return;\n }\n var newIndex = currentIndex + direction;\n if (newIndex === -1 || newIndex >= scaleValues.length) {\n return;\n }\n var newScaleValue = scaleValues[newIndex];\n // Prevent travellers from being on top of each other or overlapping\n if (id === \"startX\" && newScaleValue >= endX || id === \"endX\" && newScaleValue <= startX) {\n return;\n }\n this.setState(_defineProperty({}, id, newScaleValue), function() {\n _this2.props.onChange(_this2.getIndex({\n startX: _this2.state.startX,\n endX: _this2.state.endX\n }));\n });\n }\n },\n {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props, x = _this$props6.x, y = _this$props6.y, width = _this$props6.width, height = _this$props6.height, fill = _this$props6.fill, stroke = _this$props6.stroke;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n },\n {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props, x = _this$props7.x, y = _this$props7.y, width = _this$props7.width, height = _this$props7.height, data = _this$props7.data, children = _this$props7.children, padding = _this$props7.padding;\n var chartElement = react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n if (!chartElement) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n },\n {\n key: \"renderTravellerLayer\",\n value: function renderTravellerLayer(travellerX, id) {\n var _data$startIndex, _data$endIndex, _this3 = this;\n var _this$props8 = this.props, y = _this$props8.y, travellerWidth = _this$props8.travellerWidth, height = _this$props8.height, traveller = _this$props8.traveller, ariaLabel = _this$props8.ariaLabel, data = _this$props8.data, startIndex = _this$props8.startIndex, endIndex = _this$props8.endIndex;\n var x = Math.max(travellerX, this.props.x);\n var travellerProps = _objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false)), {}, {\n x: x,\n y: y,\n width: travellerWidth,\n height: height\n });\n var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n tabIndex: 0,\n role: \"slider\",\n \"aria-label\": ariaLabelBrush,\n \"aria-valuenow\": travellerX,\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n onKeyDown: function onKeyDown(e) {\n if (![\n \"ArrowLeft\",\n \"ArrowRight\"\n ].includes(e.key)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n _this3.handleTravellerMoveKeyboard(e.key === \"ArrowRight\" ? 1 : -1, id);\n },\n onFocus: function onFocus() {\n _this3.setState({\n isTravellerFocused: true\n });\n },\n onBlur: function onBlur() {\n _this3.setState({\n isTravellerFocused: false\n });\n },\n style: {\n cursor: \"col-resize\"\n }\n }, Brush.renderTraveller(traveller, travellerProps));\n }\n },\n {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props, y = _this$props9.y, height = _this$props9.height, stroke = _this$props9.stroke, travellerWidth = _this$props9.travellerWidth;\n var x = Math.min(startX, endX) + travellerWidth;\n var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: \"move\"\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n },\n {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props, startIndex = _this$props10.startIndex, endIndex = _this$props10.endIndex, y = _this$props10.y, height = _this$props10.height, travellerWidth = _this$props10.travellerWidth, stroke = _this$props10.stroke;\n var _this$state4 = this.state, startX = _this$state4.startX, endX = _this$state4.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: \"none\",\n fill: stroke\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: \"recharts-brush-texts\"\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props, data = _this$props11.data, className = _this$props11.className, children = _this$props11.children, x = _this$props11.x, y = _this$props11.y, width = _this$props11.width, height = _this$props11.height, alwaysShowText = _this$props11.alwaysShowText;\n var _this$state5 = this.state, startX = _this$state5.startX, endX = _this$state5.endX, isTextActive = _this$state5.isTextActive, isSlideMoving = _this$state5.isSlideMoving, isTravellerMoving = _this$state5.isTravellerMoving, isTravellerFocused = _this$state5.isTravellerFocused;\n if (!data || !data.length || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(x) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(y) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(width) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_9__.isNumber)(height) || width <= 0 || height <= 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-brush\", className);\n var isPanoramic = react__WEBPACK_IMPORTED_MODULE_0___default().Children.count(children) === 1;\n var style = (0,_util_CssPrefixUtils__WEBPACK_IMPORTED_MODULE_10__.generatePrefixStyle)(\"userSelect\", \"none\");\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: layerClass,\n onMouseLeave: this.handleLeaveWrapper,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, \"startX\"), this.renderTravellerLayer(endX, \"endX\"), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n }\n }\n ], [\n {\n key: \"renderDefaultTraveller\",\n value: function renderDefaultTraveller(props) {\n var x = props.x, y = props.y, width = props.width, height = props.height, stroke = props.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + width - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + width - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n },\n {\n key: \"renderTraveller\",\n value: function renderTraveller(option, props) {\n var rectangle;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n rectangle = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(option)) {\n rectangle = option(props);\n } else {\n rectangle = Brush.renderDefaultTraveller(props);\n }\n return rectangle;\n }\n },\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var data = nextProps.data, width = nextProps.width, x = nextProps.x, travellerWidth = nextProps.travellerWidth, updateId = nextProps.updateId, startIndex = nextProps.startIndex, endIndex = nextProps.endIndex;\n if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n return _objectSpread({\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width\n }, data && data.length ? createScale({\n data: data,\n width: width,\n x: x,\n travellerWidth: travellerWidth,\n startIndex: startIndex,\n endIndex: endIndex\n }) : {\n scale: null,\n scaleValues: null\n });\n }\n if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n prevState.scale.range([\n x,\n x + width - travellerWidth\n ]);\n var scaleValues = prevState.scale.domain().map(function(entry) {\n return prevState.scale(entry);\n });\n return {\n prevData: data,\n prevTravellerWidth: travellerWidth,\n prevUpdateId: updateId,\n prevX: x,\n prevWidth: width,\n startX: prevState.scale(nextProps.startIndex),\n endX: prevState.scale(nextProps.endIndex),\n scaleValues: scaleValues\n };\n }\n return null;\n }\n },\n {\n key: \"getIndexInRange\",\n value: function getIndexInRange(valueRange, x) {\n var len = valueRange.length;\n var start = 0;\n var end = len - 1;\n while(end - start > 1){\n var middle = Math.floor((start + end) / 2);\n if (valueRange[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n return x >= valueRange[end] ? end : start;\n }\n }\n ]);\n return Brush;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Brush, \"displayName\", \"Brush\");\n_defineProperty(Brush, \"defaultProps\", {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: \"#fff\",\n stroke: \"#666\",\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9CcnVzaC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixNQUFN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SUFBSztvQkFDeEMsSUFBSUYsVUFBVSxDQUFDRyxPQUFPLEdBQUc3SyxHQUFHO3dCQUMxQjRLLE1BQU1DO29CQUNSLE9BQU87d0JBQ0xGLFFBQVFFO29CQUNWO2dCQUNGO2dCQUNBLE9BQU83SyxLQUFLMEssVUFBVSxDQUFDRSxJQUFJLEdBQUdBLE1BQU1EO1lBQ3RDO1FBQ0Y7S0FBRTtJQUNGLE9BQU8xSjtBQUNULEVBQUVsQyxnREFBYUEsRUFBRTtBQUNqQjVDLGdCQUFnQjhFLE9BQU8sZUFBZTtBQUN0QzlFLGdCQUFnQjhFLE9BQU8sZ0JBQWdCO0lBQ3JDbUUsUUFBUTtJQUNSbEYsZ0JBQWdCO0lBQ2hCMEMsS0FBSztJQUNMeUMsTUFBTTtJQUNOQyxRQUFRO0lBQ1JLLFNBQVM7UUFDUG1GLEtBQUs7UUFDTEMsT0FBTztRQUNQQyxRQUFRO1FBQ1JDLE1BQU07SUFDUjtJQUNBaEosY0FBYztJQUNkNkcsZ0JBQWdCO0FBQ2xCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL0JydXNoLmpzP2YzM2QiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQnJ1c2hcbiAqL1xuaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIENoaWxkcmVuIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBzY2FsZVBvaW50IH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2NhbGUnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHJhbmdlIGZyb20gJ2xvZGFzaC9yYW5nZSc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50L1RleHQnO1xuaW1wb3J0IHsgZ2V0VmFsdWVCeURhdGFLZXkgfSBmcm9tICcuLi91dGlsL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVByZWZpeFN0eWxlIH0gZnJvbSAnLi4vdXRpbC9Dc3NQcmVmaXhVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgY3JlYXRlU2NhbGUgPSBmdW5jdGlvbiBjcmVhdGVTY2FsZShfcmVmKSB7XG4gIHZhciBkYXRhID0gX3JlZi5kYXRhLFxuICAgIHN0YXJ0SW5kZXggPSBfcmVmLnN0YXJ0SW5kZXgsXG4gICAgZW5kSW5kZXggPSBfcmVmLmVuZEluZGV4LFxuICAgIHggPSBfcmVmLngsXG4gICAgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgIHRyYXZlbGxlcldpZHRoID0gX3JlZi50cmF2ZWxsZXJXaWR0aDtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICB2YXIgbGVuID0gZGF0YS5sZW5ndGg7XG4gIHZhciBzY2FsZSA9IHNjYWxlUG9pbnQoKS5kb21haW4ocmFuZ2UoMCwgbGVuKSkucmFuZ2UoW3gsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoXSk7XG4gIHZhciBzY2FsZVZhbHVlcyA9IHNjYWxlLmRvbWFpbigpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gc2NhbGUoZW50cnkpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpc1RleHRBY3RpdmU6IGZhbHNlLFxuICAgIGlzU2xpZGVNb3Zpbmc6IGZhbHNlLFxuICAgIGlzVHJhdmVsbGVyTW92aW5nOiBmYWxzZSxcbiAgICBpc1RyYXZlbGxlckZvY3VzZWQ6IGZhbHNlLFxuICAgIHN0YXJ0WDogc2NhbGUoc3RhcnRJbmRleCksXG4gICAgZW5kWDogc2NhbGUoZW5kSW5kZXgpLFxuICAgIHNjYWxlOiBzY2FsZSxcbiAgICBzY2FsZVZhbHVlczogc2NhbGVWYWx1ZXNcbiAgfTtcbn07XG52YXIgaXNUb3VjaCA9IGZ1bmN0aW9uIGlzVG91Y2goZSkge1xuICByZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyAmJiAhIWUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoO1xufTtcbmV4cG9ydCB2YXIgQnJ1c2ggPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhCcnVzaCwgX1B1cmVDb21wb25lbnQpO1xuICBmdW5jdGlvbiBCcnVzaChwcm9wcykge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnJ1c2gpO1xuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBCcnVzaCwgW3Byb3BzXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZURyYWdcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChfdGhpcy5sZWF2ZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5sZWF2ZVRpbWVyKTtcbiAgICAgICAgX3RoaXMubGVhdmVUaW1lciA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoX3RoaXMuc3RhdGUuaXNUcmF2ZWxsZXJNb3ZpbmcpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlVHJhdmVsbGVyTW92ZShlKTtcbiAgICAgIH0gZWxzZSBpZiAoX3RoaXMuc3RhdGUuaXNTbGlkZU1vdmluZykge1xuICAgICAgICBfdGhpcy5oYW5kbGVTbGlkZURyYWcoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZVRvdWNoTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgaWYgKGUuY2hhbmdlZFRvdWNoZXMgIT0gbnVsbCAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlRHJhZyhlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlRHJhZ0VuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVHJhdmVsbGVyTW92aW5nOiBmYWxzZSxcbiAgICAgICAgaXNTbGlkZU1vdmluZzogZmFsc2VcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZW5kSW5kZXggPSBfdGhpcyRwcm9wcy5lbmRJbmRleCxcbiAgICAgICAgICBvbkRyYWdFbmQgPSBfdGhpcyRwcm9wcy5vbkRyYWdFbmQsXG4gICAgICAgICAgc3RhcnRJbmRleCA9IF90aGlzJHByb3BzLnN0YXJ0SW5kZXg7XG4gICAgICAgIG9uRHJhZ0VuZCA9PT0gbnVsbCB8fCBvbkRyYWdFbmQgPT09IHZvaWQgMCB8fCBvbkRyYWdFbmQoe1xuICAgICAgICAgIGVuZEluZGV4OiBlbmRJbmRleCxcbiAgICAgICAgICBzdGFydEluZGV4OiBzdGFydEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfdGhpcy5kZXRhY2hEcmFnRW5kTGlzdGVuZXIoKTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlTGVhdmVXcmFwcGVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5zdGF0ZS5pc1RyYXZlbGxlck1vdmluZyB8fCBfdGhpcy5zdGF0ZS5pc1NsaWRlTW92aW5nKSB7XG4gICAgICAgIF90aGlzLmxlYXZlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChfdGhpcy5oYW5kbGVEcmFnRW5kLCBfdGhpcy5wcm9wcy5sZWF2ZVRpbWVPdXQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVFbnRlclNsaWRlT3JUcmF2ZWxsZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1RleHRBY3RpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVMZWF2ZVNsaWRlT3JUcmF2ZWxsZXJcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1RleHRBY3RpdmU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlU2xpZGVEcmFnU3RhcnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIHZhciBldmVudCA9IGlzVG91Y2goZSkgPyBlLmNoYW5nZWRUb3VjaGVzWzBdIDogZTtcbiAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNUcmF2ZWxsZXJNb3Zpbmc6IGZhbHNlLFxuICAgICAgICBpc1NsaWRlTW92aW5nOiB0cnVlLFxuICAgICAgICBzbGlkZU1vdmVTdGFydFg6IGV2ZW50LnBhZ2VYXG4gICAgICB9KTtcbiAgICAgIF90aGlzLmF0dGFjaERyYWdFbmRMaXN0ZW5lcigpO1xuICAgIH0pO1xuICAgIF90aGlzLnRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzID0ge1xuICAgICAgc3RhcnRYOiBfdGhpcy5oYW5kbGVUcmF2ZWxsZXJEcmFnU3RhcnQuYmluZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgJ3N0YXJ0WCcpLFxuICAgICAgZW5kWDogX3RoaXMuaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0LmJpbmQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICdlbmRYJylcbiAgICB9O1xuICAgIF90aGlzLnN0YXRlID0ge307XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhCcnVzaCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50V2lsbFVubW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5sZWF2ZVRpbWVyKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxlYXZlVGltZXIpO1xuICAgICAgICB0aGlzLmxlYXZlVGltZXIgPSBudWxsO1xuICAgICAgfVxuICAgICAgdGhpcy5kZXRhY2hEcmFnRW5kTGlzdGVuZXIoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SW5kZXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SW5kZXgoX3JlZjIpIHtcbiAgICAgIHZhciBzdGFydFggPSBfcmVmMi5zdGFydFgsXG4gICAgICAgIGVuZFggPSBfcmVmMi5lbmRYO1xuICAgICAgdmFyIHNjYWxlVmFsdWVzID0gdGhpcy5zdGF0ZS5zY2FsZVZhbHVlcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICBnYXAgPSBfdGhpcyRwcm9wczIuZ2FwLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHMyLmRhdGE7XG4gICAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgdmFyIG1pbiA9IE1hdGgubWluKHN0YXJ0WCwgZW5kWCk7XG4gICAgICB2YXIgbWF4ID0gTWF0aC5tYXgoc3RhcnRYLCBlbmRYKTtcbiAgICAgIHZhciBtaW5JbmRleCA9IEJydXNoLmdldEluZGV4SW5SYW5nZShzY2FsZVZhbHVlcywgbWluKTtcbiAgICAgIHZhciBtYXhJbmRleCA9IEJydXNoLmdldEluZGV4SW5SYW5nZShzY2FsZVZhbHVlcywgbWF4KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0SW5kZXg6IG1pbkluZGV4IC0gbWluSW5kZXggJSBnYXAsXG4gICAgICAgIGVuZEluZGV4OiBtYXhJbmRleCA9PT0gbGFzdEluZGV4ID8gbGFzdEluZGV4IDogbWF4SW5kZXggLSBtYXhJbmRleCAlIGdhcFxuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGV4dE9mVGlja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUZXh0T2ZUaWNrKGluZGV4KSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzMy5kYXRhLFxuICAgICAgICB0aWNrRm9ybWF0dGVyID0gX3RoaXMkcHJvcHMzLnRpY2tGb3JtYXR0ZXIsXG4gICAgICAgIGRhdGFLZXkgPSBfdGhpcyRwcm9wczMuZGF0YUtleTtcbiAgICAgIHZhciB0ZXh0ID0gZ2V0VmFsdWVCeURhdGFLZXkoZGF0YVtpbmRleF0sIGRhdGFLZXksIGluZGV4KTtcbiAgICAgIHJldHVybiBpc0Z1bmN0aW9uKHRpY2tGb3JtYXR0ZXIpID8gdGlja0Zvcm1hdHRlcih0ZXh0LCBpbmRleCkgOiB0ZXh0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdHRhY2hEcmFnRW5kTGlzdGVuZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoRHJhZ0VuZExpc3RlbmVyKCkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZURyYWdFbmQsIHRydWUpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5oYW5kbGVEcmFnRW5kLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZURyYWcsIHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZXRhY2hEcmFnRW5kTGlzdGVuZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGV0YWNoRHJhZ0VuZExpc3RlbmVyKCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLmhhbmRsZURyYWdFbmQsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5oYW5kbGVEcmFnRW5kLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZURyYWcsIHRydWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVTbGlkZURyYWdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlU2xpZGVEcmFnKGUpIHtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIHNsaWRlTW92ZVN0YXJ0WCA9IF90aGlzJHN0YXRlLnNsaWRlTW92ZVN0YXJ0WCxcbiAgICAgICAgc3RhcnRYID0gX3RoaXMkc3RhdGUuc3RhcnRYLFxuICAgICAgICBlbmRYID0gX3RoaXMkc3RhdGUuZW5kWDtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHM0LngsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM0LndpZHRoLFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IF90aGlzJHByb3BzNC50cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgc3RhcnRJbmRleCA9IF90aGlzJHByb3BzNC5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IF90aGlzJHByb3BzNC5lbmRJbmRleCxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wczQub25DaGFuZ2U7XG4gICAgICB2YXIgZGVsdGEgPSBlLnBhZ2VYIC0gc2xpZGVNb3ZlU3RhcnRYO1xuICAgICAgaWYgKGRlbHRhID4gMCkge1xuICAgICAgICBkZWx0YSA9IE1hdGgubWluKGRlbHRhLCB4ICsgd2lkdGggLSB0cmF2ZWxsZXJXaWR0aCAtIGVuZFgsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoIC0gc3RhcnRYKTtcbiAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPCAwKSB7XG4gICAgICAgIGRlbHRhID0gTWF0aC5tYXgoZGVsdGEsIHggLSBzdGFydFgsIHggLSBlbmRYKTtcbiAgICAgIH1cbiAgICAgIHZhciBuZXdJbmRleCA9IHRoaXMuZ2V0SW5kZXgoe1xuICAgICAgICBzdGFydFg6IHN0YXJ0WCArIGRlbHRhLFxuICAgICAgICBlbmRYOiBlbmRYICsgZGVsdGFcbiAgICAgIH0pO1xuICAgICAgaWYgKChuZXdJbmRleC5zdGFydEluZGV4ICE9PSBzdGFydEluZGV4IHx8IG5ld0luZGV4LmVuZEluZGV4ICE9PSBlbmRJbmRleCkgJiYgb25DaGFuZ2UpIHtcbiAgICAgICAgb25DaGFuZ2UobmV3SW5kZXgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0WDogc3RhcnRYICsgZGVsdGEsXG4gICAgICAgIGVuZFg6IGVuZFggKyBkZWx0YSxcbiAgICAgICAgc2xpZGVNb3ZlU3RhcnRYOiBlLnBhZ2VYXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRyYXZlbGxlckRyYWdTdGFydChpZCwgZSkge1xuICAgICAgdmFyIGV2ZW50ID0gaXNUb3VjaChlKSA/IGUuY2hhbmdlZFRvdWNoZXNbMF0gOiBlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzU2xpZGVNb3Zpbmc6IGZhbHNlLFxuICAgICAgICBpc1RyYXZlbGxlck1vdmluZzogdHJ1ZSxcbiAgICAgICAgbW92aW5nVHJhdmVsbGVySWQ6IGlkLFxuICAgICAgICBicnVzaE1vdmVTdGFydFg6IGV2ZW50LnBhZ2VYXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXR0YWNoRHJhZ0VuZExpc3RlbmVyKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhbmRsZVRyYXZlbGxlck1vdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVHJhdmVsbGVyTW92ZShlKSB7XG4gICAgICB2YXIgX3RoaXMkc3RhdGUyID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgYnJ1c2hNb3ZlU3RhcnRYID0gX3RoaXMkc3RhdGUyLmJydXNoTW92ZVN0YXJ0WCxcbiAgICAgICAgbW92aW5nVHJhdmVsbGVySWQgPSBfdGhpcyRzdGF0ZTIubW92aW5nVHJhdmVsbGVySWQsXG4gICAgICAgIGVuZFggPSBfdGhpcyRzdGF0ZTIuZW5kWCxcbiAgICAgICAgc3RhcnRYID0gX3RoaXMkc3RhdGUyLnN0YXJ0WDtcbiAgICAgIHZhciBwcmV2VmFsdWUgPSB0aGlzLnN0YXRlW21vdmluZ1RyYXZlbGxlcklkXTtcbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHM1LngsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM1LndpZHRoLFxuICAgICAgICB0cmF2ZWxsZXJXaWR0aCA9IF90aGlzJHByb3BzNS50cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgb25DaGFuZ2UgPSBfdGhpcyRwcm9wczUub25DaGFuZ2UsXG4gICAgICAgIGdhcCA9IF90aGlzJHByb3BzNS5nYXAsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczUuZGF0YTtcbiAgICAgIHZhciBwYXJhbXMgPSB7XG4gICAgICAgIHN0YXJ0WDogdGhpcy5zdGF0ZS5zdGFydFgsXG4gICAgICAgIGVuZFg6IHRoaXMuc3RhdGUuZW5kWFxuICAgICAgfTtcbiAgICAgIHZhciBkZWx0YSA9IGUucGFnZVggLSBicnVzaE1vdmVTdGFydFg7XG4gICAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICAgIGRlbHRhID0gTWF0aC5taW4oZGVsdGEsIHggKyB3aWR0aCAtIHRyYXZlbGxlcldpZHRoIC0gcHJldlZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPCAwKSB7XG4gICAgICAgIGRlbHRhID0gTWF0aC5tYXgoZGVsdGEsIHggLSBwcmV2VmFsdWUpO1xuICAgICAgfVxuICAgICAgcGFyYW1zW21vdmluZ1RyYXZlbGxlcklkXSA9IHByZXZWYWx1ZSArIGRlbHRhO1xuICAgICAgdmFyIG5ld0luZGV4ID0gdGhpcy5nZXRJbmRleChwYXJhbXMpO1xuICAgICAgdmFyIHN0YXJ0SW5kZXggPSBuZXdJbmRleC5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IG5ld0luZGV4LmVuZEluZGV4O1xuICAgICAgdmFyIGlzRnVsbEdhcCA9IGZ1bmN0aW9uIGlzRnVsbEdhcCgpIHtcbiAgICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKG1vdmluZ1RyYXZlbGxlcklkID09PSAnc3RhcnRYJyAmJiAoZW5kWCA+IHN0YXJ0WCA/IHN0YXJ0SW5kZXggJSBnYXAgPT09IDAgOiBlbmRJbmRleCAlIGdhcCA9PT0gMCkgfHwgZW5kWCA8IHN0YXJ0WCAmJiBlbmRJbmRleCA9PT0gbGFzdEluZGV4IHx8IG1vdmluZ1RyYXZlbGxlcklkID09PSAnZW5kWCcgJiYgKGVuZFggPiBzdGFydFggPyBlbmRJbmRleCAlIGdhcCA9PT0gMCA6IHN0YXJ0SW5kZXggJSBnYXAgPT09IDApIHx8IGVuZFggPiBzdGFydFggJiYgZW5kSW5kZXggPT09IGxhc3RJbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgICB0aGlzLnNldFN0YXRlKF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe30sIG1vdmluZ1RyYXZlbGxlcklkLCBwcmV2VmFsdWUgKyBkZWx0YSksIFwiYnJ1c2hNb3ZlU3RhcnRYXCIsIGUucGFnZVgpLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgIGlmIChpc0Z1bGxHYXAoKSkge1xuICAgICAgICAgICAgb25DaGFuZ2UobmV3SW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUcmF2ZWxsZXJNb3ZlS2V5Ym9hcmQoZGlyZWN0aW9uLCBpZCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICAvLyBzY2FsZVZhbHVlcyBhcmUgYSBsaXN0IG9mIGNvb3JkaW5hdGVzLiBGb3IgZXhhbXBsZTogWzY1LCAyNTAsIDQzNSwgNjIwLCA4MDUsIDk5MF0uXG4gICAgICB2YXIgX3RoaXMkc3RhdGUzID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgc2NhbGVWYWx1ZXMgPSBfdGhpcyRzdGF0ZTMuc2NhbGVWYWx1ZXMsXG4gICAgICAgIHN0YXJ0WCA9IF90aGlzJHN0YXRlMy5zdGFydFgsXG4gICAgICAgIGVuZFggPSBfdGhpcyRzdGF0ZTMuZW5kWDtcbiAgICAgIC8vIGN1cnJlbnRTY2FsZVZhbHVlIHJlZmVycyB0byB3aGljaCBjb29yZGluYXRlIHRoZSBjdXJyZW50IHRyYXZlbGxlciBzaG91bGQgYmUgcGxhY2VkIGF0LlxuICAgICAgdmFyIGN1cnJlbnRTY2FsZVZhbHVlID0gdGhpcy5zdGF0ZVtpZF07XG4gICAgICB2YXIgY3VycmVudEluZGV4ID0gc2NhbGVWYWx1ZXMuaW5kZXhPZihjdXJyZW50U2NhbGVWYWx1ZSk7XG4gICAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmV3SW5kZXggPSBjdXJyZW50SW5kZXggKyBkaXJlY3Rpb247XG4gICAgICBpZiAobmV3SW5kZXggPT09IC0xIHx8IG5ld0luZGV4ID49IHNjYWxlVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmV3U2NhbGVWYWx1ZSA9IHNjYWxlVmFsdWVzW25ld0luZGV4XTtcblxuICAgICAgLy8gUHJldmVudCB0cmF2ZWxsZXJzIGZyb20gYmVpbmcgb24gdG9wIG9mIGVhY2ggb3RoZXIgb3Igb3ZlcmxhcHBpbmdcbiAgICAgIGlmIChpZCA9PT0gJ3N0YXJ0WCcgJiYgbmV3U2NhbGVWYWx1ZSA+PSBlbmRYIHx8IGlkID09PSAnZW5kWCcgJiYgbmV3U2NhbGVWYWx1ZSA8PSBzdGFydFgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZShfZGVmaW5lUHJvcGVydHkoe30sIGlkLCBuZXdTY2FsZVZhbHVlKSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczIucHJvcHMub25DaGFuZ2UoX3RoaXMyLmdldEluZGV4KHtcbiAgICAgICAgICBzdGFydFg6IF90aGlzMi5zdGF0ZS5zdGFydFgsXG4gICAgICAgICAgZW5kWDogX3RoaXMyLnN0YXRlLmVuZFhcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckJhY2tncm91bmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQmFja2dyb3VuZCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHM2LngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczYueSxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczYud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNi5oZWlnaHQsXG4gICAgICAgIGZpbGwgPSBfdGhpcyRwcm9wczYuZmlsbCxcbiAgICAgICAgc3Ryb2tlID0gX3RoaXMkcHJvcHM2LnN0cm9rZTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICBzdHJva2U6IHN0cm9rZSxcbiAgICAgICAgZmlsbDogZmlsbCxcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclBhbm9yYW1hXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclBhbm9yYW1hKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHggPSBfdGhpcyRwcm9wczcueCxcbiAgICAgICAgeSA9IF90aGlzJHByb3BzNy55LFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM3LmhlaWdodCxcbiAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNy5kYXRhLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNy5jaGlsZHJlbixcbiAgICAgICAgcGFkZGluZyA9IF90aGlzJHByb3BzNy5wYWRkaW5nO1xuICAgICAgdmFyIGNoYXJ0RWxlbWVudCA9IENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgICAgaWYgKCFjaGFydEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGFydEVsZW1lbnQsIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgbWFyZ2luOiBwYWRkaW5nLFxuICAgICAgICBjb21wYWN0OiB0cnVlLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyVHJhdmVsbGVyTGF5ZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVHJhdmVsbGVyTGF5ZXIodHJhdmVsbGVyWCwgaWQpIHtcbiAgICAgIHZhciBfZGF0YSRzdGFydEluZGV4LFxuICAgICAgICBfZGF0YSRlbmRJbmRleCxcbiAgICAgICAgX3RoaXMzID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczggPSB0aGlzLnByb3BzLFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM4LnksXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gX3RoaXMkcHJvcHM4LnRyYXZlbGxlcldpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczguaGVpZ2h0LFxuICAgICAgICB0cmF2ZWxsZXIgPSBfdGhpcyRwcm9wczgudHJhdmVsbGVyLFxuICAgICAgICBhcmlhTGFiZWwgPSBfdGhpcyRwcm9wczguYXJpYUxhYmVsLFxuICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM4LmRhdGEsXG4gICAgICAgIHN0YXJ0SW5kZXggPSBfdGhpcyRwcm9wczguc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBfdGhpcyRwcm9wczguZW5kSW5kZXg7XG4gICAgICB2YXIgeCA9IE1hdGgubWF4KHRyYXZlbGxlclgsIHRoaXMucHJvcHMueCk7XG4gICAgICB2YXIgdHJhdmVsbGVyUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGZpbHRlclByb3BzKHRoaXMucHJvcHMsIGZhbHNlKSksIHt9LCB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB0cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgIH0pO1xuICAgICAgdmFyIGFyaWFMYWJlbEJydXNoID0gYXJpYUxhYmVsIHx8IFwiTWluIHZhbHVlOiBcIi5jb25jYXQoKF9kYXRhJHN0YXJ0SW5kZXggPSBkYXRhW3N0YXJ0SW5kZXhdKSA9PT0gbnVsbCB8fCBfZGF0YSRzdGFydEluZGV4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGF0YSRzdGFydEluZGV4Lm5hbWUsIFwiLCBNYXggdmFsdWU6IFwiKS5jb25jYXQoKF9kYXRhJGVuZEluZGV4ID0gZGF0YVtlbmRJbmRleF0pID09PSBudWxsIHx8IF9kYXRhJGVuZEluZGV4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGF0YSRlbmRJbmRleC5uYW1lKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICB0YWJJbmRleDogMCxcbiAgICAgICAgcm9sZTogXCJzbGlkZXJcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbEJydXNoLFxuICAgICAgICBcImFyaWEtdmFsdWVub3dcIjogdHJhdmVsbGVyWCxcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWJydXNoLXRyYXZlbGxlclwiLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHRoaXMuaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMuaGFuZGxlTGVhdmVTbGlkZU9yVHJhdmVsbGVyLFxuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy50cmF2ZWxsZXJEcmFnU3RhcnRIYW5kbGVyc1tpZF0sXG4gICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy50cmF2ZWxsZXJEcmFnU3RhcnRIYW5kbGVyc1tpZF0sXG4gICAgICAgIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKGUpIHtcbiAgICAgICAgICBpZiAoIVsnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnXS5pbmNsdWRlcyhlLmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgX3RoaXMzLmhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZChlLmtleSA9PT0gJ0Fycm93UmlnaHQnID8gMSA6IC0xLCBpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRm9jdXM6IGZ1bmN0aW9uIG9uRm9jdXMoKSB7XG4gICAgICAgICAgX3RoaXMzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzVHJhdmVsbGVyRm9jdXNlZDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbkJsdXI6IGZ1bmN0aW9uIG9uQmx1cigpIHtcbiAgICAgICAgICBfdGhpczMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNUcmF2ZWxsZXJGb2N1c2VkOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGN1cnNvcjogJ2NvbC1yZXNpemUnXG4gICAgICAgIH1cbiAgICAgIH0sIEJydXNoLnJlbmRlclRyYXZlbGxlcih0cmF2ZWxsZXIsIHRyYXZlbGxlclByb3BzKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclNsaWRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclNsaWRlKHN0YXJ0WCwgZW5kWCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzOSA9IHRoaXMucHJvcHMsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczkueSxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM5LmhlaWdodCxcbiAgICAgICAgc3Ryb2tlID0gX3RoaXMkcHJvcHM5LnN0cm9rZSxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBfdGhpcyRwcm9wczkudHJhdmVsbGVyV2lkdGg7XG4gICAgICB2YXIgeCA9IE1hdGgubWluKHN0YXJ0WCwgZW5kWCkgKyB0cmF2ZWxsZXJXaWR0aDtcbiAgICAgIHZhciB3aWR0aCA9IE1hdGgubWF4KE1hdGguYWJzKGVuZFggLSBzdGFydFgpIC0gdHJhdmVsbGVyV2lkdGgsIDApO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1icnVzaC1zbGlkZVwiLFxuICAgICAgICBvbk1vdXNlRW50ZXI6IHRoaXMuaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyLFxuICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMuaGFuZGxlTGVhdmVTbGlkZU9yVHJhdmVsbGVyLFxuICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5oYW5kbGVTbGlkZURyYWdTdGFydCxcbiAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVNsaWRlRHJhZ1N0YXJ0LFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGN1cnNvcjogJ21vdmUnXG4gICAgICAgIH0sXG4gICAgICAgIHN0cm9rZTogXCJub25lXCIsXG4gICAgICAgIGZpbGw6IHN0cm9rZSxcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuMixcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRleHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVGV4dCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczEwID0gdGhpcy5wcm9wcyxcbiAgICAgICAgc3RhcnRJbmRleCA9IF90aGlzJHByb3BzMTAuc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBfdGhpcyRwcm9wczEwLmVuZEluZGV4LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHMxMC55LFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczEwLmhlaWdodCxcbiAgICAgICAgdHJhdmVsbGVyV2lkdGggPSBfdGhpcyRwcm9wczEwLnRyYXZlbGxlcldpZHRoLFxuICAgICAgICBzdHJva2UgPSBfdGhpcyRwcm9wczEwLnN0cm9rZTtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTQgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzdGFydFggPSBfdGhpcyRzdGF0ZTQuc3RhcnRYLFxuICAgICAgICBlbmRYID0gX3RoaXMkc3RhdGU0LmVuZFg7XG4gICAgICB2YXIgb2Zmc2V0ID0gNTtcbiAgICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICBmaWxsOiBzdHJva2VcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWJydXNoLXRleHRzXCJcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIF9leHRlbmRzKHtcbiAgICAgICAgdGV4dEFuY2hvcjogXCJlbmRcIixcbiAgICAgICAgdmVydGljYWxBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgIHg6IE1hdGgubWluKHN0YXJ0WCwgZW5kWCkgLSBvZmZzZXQsXG4gICAgICAgIHk6IHkgKyBoZWlnaHQgLyAyXG4gICAgICB9LCBhdHRycyksIHRoaXMuZ2V0VGV4dE9mVGljayhzdGFydEluZGV4KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIF9leHRlbmRzKHtcbiAgICAgICAgdGV4dEFuY2hvcjogXCJzdGFydFwiLFxuICAgICAgICB2ZXJ0aWNhbEFuY2hvcjogXCJtaWRkbGVcIixcbiAgICAgICAgeDogTWF0aC5tYXgoc3RhcnRYLCBlbmRYKSArIHRyYXZlbGxlcldpZHRoICsgb2Zmc2V0LFxuICAgICAgICB5OiB5ICsgaGVpZ2h0IC8gMlxuICAgICAgfSwgYXR0cnMpLCB0aGlzLmdldFRleHRPZlRpY2soZW5kSW5kZXgpKSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMxMSA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRhdGEgPSBfdGhpcyRwcm9wczExLmRhdGEsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMTEuY2xhc3NOYW1lLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMTEuY2hpbGRyZW4sXG4gICAgICAgIHggPSBfdGhpcyRwcm9wczExLngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczExLnksXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMxMS53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMxMS5oZWlnaHQsXG4gICAgICAgIGFsd2F5c1Nob3dUZXh0ID0gX3RoaXMkcHJvcHMxMS5hbHdheXNTaG93VGV4dDtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICBzdGFydFggPSBfdGhpcyRzdGF0ZTUuc3RhcnRYLFxuICAgICAgICBlbmRYID0gX3RoaXMkc3RhdGU1LmVuZFgsXG4gICAgICAgIGlzVGV4dEFjdGl2ZSA9IF90aGlzJHN0YXRlNS5pc1RleHRBY3RpdmUsXG4gICAgICAgIGlzU2xpZGVNb3ZpbmcgPSBfdGhpcyRzdGF0ZTUuaXNTbGlkZU1vdmluZyxcbiAgICAgICAgaXNUcmF2ZWxsZXJNb3ZpbmcgPSBfdGhpcyRzdGF0ZTUuaXNUcmF2ZWxsZXJNb3ZpbmcsXG4gICAgICAgIGlzVHJhdmVsbGVyRm9jdXNlZCA9IF90aGlzJHN0YXRlNS5pc1RyYXZlbGxlckZvY3VzZWQ7XG4gICAgICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoIHx8ICFpc051bWJlcih4KSB8fCAhaXNOdW1iZXIoeSkgfHwgIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1icnVzaCcsIGNsYXNzTmFtZSk7XG4gICAgICB2YXIgaXNQYW5vcmFtaWMgPSBSZWFjdC5DaGlsZHJlbi5jb3VudChjaGlsZHJlbikgPT09IDE7XG4gICAgICB2YXIgc3R5bGUgPSBnZW5lcmF0ZVByZWZpeFN0eWxlKCd1c2VyU2VsZWN0JywgJ25vbmUnKTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5oYW5kbGVMZWF2ZVdyYXBwZXIsXG4gICAgICAgIG9uVG91Y2hNb3ZlOiB0aGlzLmhhbmRsZVRvdWNoTW92ZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9LCB0aGlzLnJlbmRlckJhY2tncm91bmQoKSwgaXNQYW5vcmFtaWMgJiYgdGhpcy5yZW5kZXJQYW5vcmFtYSgpLCB0aGlzLnJlbmRlclNsaWRlKHN0YXJ0WCwgZW5kWCksIHRoaXMucmVuZGVyVHJhdmVsbGVyTGF5ZXIoc3RhcnRYLCAnc3RhcnRYJyksIHRoaXMucmVuZGVyVHJhdmVsbGVyTGF5ZXIoZW5kWCwgJ2VuZFgnKSwgKGlzVGV4dEFjdGl2ZSB8fCBpc1NsaWRlTW92aW5nIHx8IGlzVHJhdmVsbGVyTW92aW5nIHx8IGlzVHJhdmVsbGVyRm9jdXNlZCB8fCBhbHdheXNTaG93VGV4dCkgJiYgdGhpcy5yZW5kZXJUZXh0KCkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcInJlbmRlckRlZmF1bHRUcmF2ZWxsZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRGVmYXVsdFRyYXZlbGxlcihwcm9wcykge1xuICAgICAgdmFyIHggPSBwcm9wcy54LFxuICAgICAgICB5ID0gcHJvcHMueSxcbiAgICAgICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgICAgICBzdHJva2UgPSBwcm9wcy5zdHJva2U7XG4gICAgICB2YXIgbGluZVkgPSBNYXRoLmZsb29yKHkgKyBoZWlnaHQgLyAyKSAtIDE7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIGZpbGw6IHN0cm9rZSxcbiAgICAgICAgc3Ryb2tlOiBcIm5vbmVcIlxuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCB7XG4gICAgICAgIHgxOiB4ICsgMSxcbiAgICAgICAgeTE6IGxpbmVZLFxuICAgICAgICB4MjogeCArIHdpZHRoIC0gMSxcbiAgICAgICAgeTI6IGxpbmVZLFxuICAgICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgICAgc3Ryb2tlOiBcIiNmZmZcIlxuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCB7XG4gICAgICAgIHgxOiB4ICsgMSxcbiAgICAgICAgeTE6IGxpbmVZICsgMixcbiAgICAgICAgeDI6IHggKyB3aWR0aCAtIDEsXG4gICAgICAgIHkyOiBsaW5lWSArIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2U6IFwiI2ZmZlwiXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRyYXZlbGxlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUcmF2ZWxsZXIob3B0aW9uLCBwcm9wcykge1xuICAgICAgdmFyIHJlY3RhbmdsZTtcbiAgICAgIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICAgICAgcmVjdGFuZ2xlID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICAgIHJlY3RhbmdsZSA9IG9wdGlvbihwcm9wcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWN0YW5nbGUgPSBCcnVzaC5yZW5kZXJEZWZhdWx0VHJhdmVsbGVyKHByb3BzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWN0YW5nbGU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgIHZhciBkYXRhID0gbmV4dFByb3BzLmRhdGEsXG4gICAgICAgIHdpZHRoID0gbmV4dFByb3BzLndpZHRoLFxuICAgICAgICB4ID0gbmV4dFByb3BzLngsXG4gICAgICAgIHRyYXZlbGxlcldpZHRoID0gbmV4dFByb3BzLnRyYXZlbGxlcldpZHRoLFxuICAgICAgICB1cGRhdGVJZCA9IG5leHRQcm9wcy51cGRhdGVJZCxcbiAgICAgICAgc3RhcnRJbmRleCA9IG5leHRQcm9wcy5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IG5leHRQcm9wcy5lbmRJbmRleDtcbiAgICAgIGlmIChkYXRhICE9PSBwcmV2U3RhdGUucHJldkRhdGEgfHwgdXBkYXRlSWQgIT09IHByZXZTdGF0ZS5wcmV2VXBkYXRlSWQpIHtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHByZXZEYXRhOiBkYXRhLFxuICAgICAgICAgIHByZXZUcmF2ZWxsZXJXaWR0aDogdHJhdmVsbGVyV2lkdGgsXG4gICAgICAgICAgcHJldlVwZGF0ZUlkOiB1cGRhdGVJZCxcbiAgICAgICAgICBwcmV2WDogeCxcbiAgICAgICAgICBwcmV2V2lkdGg6IHdpZHRoXG4gICAgICAgIH0sIGRhdGEgJiYgZGF0YS5sZW5ndGggPyBjcmVhdGVTY2FsZSh7XG4gICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgeDogeCxcbiAgICAgICAgICB0cmF2ZWxsZXJXaWR0aDogdHJhdmVsbGVyV2lkdGgsXG4gICAgICAgICAgc3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICBlbmRJbmRleDogZW5kSW5kZXhcbiAgICAgICAgfSkgOiB7XG4gICAgICAgICAgc2NhbGU6IG51bGwsXG4gICAgICAgICAgc2NhbGVWYWx1ZXM6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAocHJldlN0YXRlLnNjYWxlICYmICh3aWR0aCAhPT0gcHJldlN0YXRlLnByZXZXaWR0aCB8fCB4ICE9PSBwcmV2U3RhdGUucHJldlggfHwgdHJhdmVsbGVyV2lkdGggIT09IHByZXZTdGF0ZS5wcmV2VHJhdmVsbGVyV2lkdGgpKSB7XG4gICAgICAgIHByZXZTdGF0ZS5zY2FsZS5yYW5nZShbeCwgeCArIHdpZHRoIC0gdHJhdmVsbGVyV2lkdGhdKTtcbiAgICAgICAgdmFyIHNjYWxlVmFsdWVzID0gcHJldlN0YXRlLnNjYWxlLmRvbWFpbigpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlN0YXRlLnNjYWxlKGVudHJ5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJldkRhdGE6IGRhdGEsXG4gICAgICAgICAgcHJldlRyYXZlbGxlcldpZHRoOiB0cmF2ZWxsZXJXaWR0aCxcbiAgICAgICAgICBwcmV2VXBkYXRlSWQ6IHVwZGF0ZUlkLFxuICAgICAgICAgIHByZXZYOiB4LFxuICAgICAgICAgIHByZXZXaWR0aDogd2lkdGgsXG4gICAgICAgICAgc3RhcnRYOiBwcmV2U3RhdGUuc2NhbGUobmV4dFByb3BzLnN0YXJ0SW5kZXgpLFxuICAgICAgICAgIGVuZFg6IHByZXZTdGF0ZS5zY2FsZShuZXh0UHJvcHMuZW5kSW5kZXgpLFxuICAgICAgICAgIHNjYWxlVmFsdWVzOiBzY2FsZVZhbHVlc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEluZGV4SW5SYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbmRleEluUmFuZ2UodmFsdWVSYW5nZSwgeCkge1xuICAgICAgdmFyIGxlbiA9IHZhbHVlUmFuZ2UubGVuZ3RoO1xuICAgICAgdmFyIHN0YXJ0ID0gMDtcbiAgICAgIHZhciBlbmQgPSBsZW4gLSAxO1xuICAgICAgd2hpbGUgKGVuZCAtIHN0YXJ0ID4gMSkge1xuICAgICAgICB2YXIgbWlkZGxlID0gTWF0aC5mbG9vcigoc3RhcnQgKyBlbmQpIC8gMik7XG4gICAgICAgIGlmICh2YWx1ZVJhbmdlW21pZGRsZV0gPiB4KSB7XG4gICAgICAgICAgZW5kID0gbWlkZGxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXJ0ID0gbWlkZGxlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geCA+PSB2YWx1ZVJhbmdlW2VuZF0gPyBlbmQgOiBzdGFydDtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEJydXNoO1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShCcnVzaCwgXCJkaXNwbGF5TmFtZVwiLCAnQnJ1c2gnKTtcbl9kZWZpbmVQcm9wZXJ0eShCcnVzaCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBoZWlnaHQ6IDQwLFxuICB0cmF2ZWxsZXJXaWR0aDogNSxcbiAgZ2FwOiAxLFxuICBmaWxsOiAnI2ZmZicsXG4gIHN0cm9rZTogJyM2NjYnLFxuICBwYWRkaW5nOiB7XG4gICAgdG9wOiAxLFxuICAgIHJpZ2h0OiAxLFxuICAgIGJvdHRvbTogMSxcbiAgICBsZWZ0OiAxXG4gIH0sXG4gIGxlYXZlVGltZU91dDogMTAwMCxcbiAgYWx3YXlzU2hvd1RleHQ6IGZhbHNlXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiUmVmZXJlbmNlRXJyb3IiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkNoaWxkcmVuIiwiY2xzeCIsInNjYWxlUG9pbnQiLCJpc0Z1bmN0aW9uIiwicmFuZ2UiLCJMYXllciIsIlRleHQiLCJnZXRWYWx1ZUJ5RGF0YUtleSIsImlzTnVtYmVyIiwiZ2VuZXJhdGVQcmVmaXhTdHlsZSIsImZpbHRlclByb3BzIiwiY3JlYXRlU2NhbGUiLCJfcmVmIiwiZGF0YSIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsIngiLCJ3aWR0aCIsInRyYXZlbGxlcldpZHRoIiwibGVuIiwic2NhbGUiLCJkb21haW4iLCJzY2FsZVZhbHVlcyIsIm1hcCIsImVudHJ5IiwiaXNUZXh0QWN0aXZlIiwiaXNTbGlkZU1vdmluZyIsImlzVHJhdmVsbGVyTW92aW5nIiwiaXNUcmF2ZWxsZXJGb2N1c2VkIiwic3RhcnRYIiwiZW5kWCIsImlzVG91Y2giLCJjaGFuZ2VkVG91Y2hlcyIsIkJydXNoIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsImxlYXZlVGltZXIiLCJjbGVhclRpbWVvdXQiLCJzdGF0ZSIsImhhbmRsZVRyYXZlbGxlck1vdmUiLCJoYW5kbGVTbGlkZURyYWciLCJoYW5kbGVEcmFnIiwic2V0U3RhdGUiLCJfdGhpcyRwcm9wcyIsIm9uRHJhZ0VuZCIsImRldGFjaERyYWdFbmRMaXN0ZW5lciIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJoYW5kbGVEcmFnRW5kIiwibGVhdmVUaW1lT3V0IiwiZXZlbnQiLCJzbGlkZU1vdmVTdGFydFgiLCJwYWdlWCIsImF0dGFjaERyYWdFbmRMaXN0ZW5lciIsInRyYXZlbGxlckRyYWdTdGFydEhhbmRsZXJzIiwiaGFuZGxlVHJhdmVsbGVyRHJhZ1N0YXJ0IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXRJbmRleCIsIl9yZWYyIiwiX3RoaXMkcHJvcHMyIiwiZ2FwIiwibGFzdEluZGV4IiwibWluIiwiTWF0aCIsIm1heCIsIm1pbkluZGV4IiwiZ2V0SW5kZXhJblJhbmdlIiwibWF4SW5kZXgiLCJnZXRUZXh0T2ZUaWNrIiwiaW5kZXgiLCJfdGhpcyRwcm9wczMiLCJ0aWNrRm9ybWF0dGVyIiwiZGF0YUtleSIsInRleHQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl90aGlzJHN0YXRlIiwiX3RoaXMkcHJvcHM0Iiwib25DaGFuZ2UiLCJkZWx0YSIsIm5ld0luZGV4IiwiaWQiLCJtb3ZpbmdUcmF2ZWxsZXJJZCIsImJydXNoTW92ZVN0YXJ0WCIsIl90aGlzJHN0YXRlMiIsInByZXZWYWx1ZSIsIl90aGlzJHByb3BzNSIsInBhcmFtcyIsImlzRnVsbEdhcCIsImhhbmRsZVRyYXZlbGxlck1vdmVLZXlib2FyZCIsImRpcmVjdGlvbiIsIl90aGlzMiIsIl90aGlzJHN0YXRlMyIsImN1cnJlbnRTY2FsZVZhbHVlIiwiY3VycmVudEluZGV4IiwiaW5kZXhPZiIsIm5ld1NjYWxlVmFsdWUiLCJyZW5kZXJCYWNrZ3JvdW5kIiwiX3RoaXMkcHJvcHM2IiwieSIsImhlaWdodCIsImZpbGwiLCJzdHJva2UiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyUGFub3JhbWEiLCJfdGhpcyRwcm9wczciLCJjaGlsZHJlbiIsInBhZGRpbmciLCJjaGFydEVsZW1lbnQiLCJvbmx5IiwiY2xvbmVFbGVtZW50IiwibWFyZ2luIiwiY29tcGFjdCIsInJlbmRlclRyYXZlbGxlckxheWVyIiwidHJhdmVsbGVyWCIsIl9kYXRhJHN0YXJ0SW5kZXgiLCJfZGF0YSRlbmRJbmRleCIsIl90aGlzMyIsIl90aGlzJHByb3BzOCIsInRyYXZlbGxlciIsImFyaWFMYWJlbCIsInRyYXZlbGxlclByb3BzIiwiYXJpYUxhYmVsQnJ1c2giLCJjb25jYXQiLCJuYW1lIiwidGFiSW5kZXgiLCJyb2xlIiwiY2xhc3NOYW1lIiwib25Nb3VzZUVudGVyIiwiaGFuZGxlRW50ZXJTbGlkZU9yVHJhdmVsbGVyIiwib25Nb3VzZUxlYXZlIiwiaGFuZGxlTGVhdmVTbGlkZU9yVHJhdmVsbGVyIiwib25Nb3VzZURvd24iLCJvblRvdWNoU3RhcnQiLCJvbktleURvd24iLCJpbmNsdWRlcyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwib25Gb2N1cyIsIm9uQmx1ciIsInN0eWxlIiwiY3Vyc29yIiwicmVuZGVyVHJhdmVsbGVyIiwicmVuZGVyU2xpZGUiLCJfdGhpcyRwcm9wczkiLCJhYnMiLCJoYW5kbGVTbGlkZURyYWdTdGFydCIsImZpbGxPcGFjaXR5IiwicmVuZGVyVGV4dCIsIl90aGlzJHByb3BzMTAiLCJfdGhpcyRzdGF0ZTQiLCJvZmZzZXQiLCJhdHRycyIsInBvaW50ZXJFdmVudHMiLCJ0ZXh0QW5jaG9yIiwidmVydGljYWxBbmNob3IiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczExIiwiYWx3YXlzU2hvd1RleHQiLCJfdGhpcyRzdGF0ZTUiLCJsYXllckNsYXNzIiwiaXNQYW5vcmFtaWMiLCJjb3VudCIsImhhbmRsZUxlYXZlV3JhcHBlciIsIm9uVG91Y2hNb3ZlIiwiaGFuZGxlVG91Y2hNb3ZlIiwicmVuZGVyRGVmYXVsdFRyYXZlbGxlciIsImxpbmVZIiwiZmxvb3IiLCJGcmFnbWVudCIsIngxIiwieTEiLCJ4MiIsInkyIiwib3B0aW9uIiwicmVjdGFuZ2xlIiwiaXNWYWxpZEVsZW1lbnQiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJuZXh0UHJvcHMiLCJwcmV2U3RhdGUiLCJ1cGRhdGVJZCIsInByZXZEYXRhIiwicHJldlVwZGF0ZUlkIiwicHJldlRyYXZlbGxlcldpZHRoIiwicHJldlgiLCJwcmV2V2lkdGgiLCJ2YWx1ZVJhbmdlIiwic3RhcnQiLCJlbmQiLCJtaWRkbGUiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/Brush.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/CartesianAxis.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CartesianAxis: () => (/* binding */ CartesianAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Text__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../component/Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _getTicks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getTicks */ \"(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js\");\nvar _excluded = [\n \"viewBox\"\n], _excluded2 = [\n \"viewBox\"\n], _excluded3 = [\n \"ticks\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Cartesian Axis\n */ \n\n\n\n\n\n\n\n\n\n\n\n/** The orientation of the axis in correspondence to the chart */ /** A unit to be appended to a value */ /** The formatter function of tick */ var CartesianAxis = /*#__PURE__*/ function(_Component) {\n _inherits(CartesianAxis, _Component);\n function CartesianAxis(props) {\n var _this;\n _classCallCheck(this, CartesianAxis);\n _this = _callSuper(this, CartesianAxis, [\n props\n ]);\n _this.state = {\n fontSize: \"\",\n letterSpacing: \"\"\n };\n return _this;\n }\n _createClass(CartesianAxis, [\n {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, nextState) {\n var viewBox = _ref.viewBox, restProps = _objectWithoutProperties(_ref, _excluded);\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props, viewBoxOld = _this$props.viewBox, restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n return !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(viewBox, viewBoxOld) || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(restProps, restPropsOld) || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_4__.shallowEqual)(nextState, this.state);\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var htmlLayer = this.layerReference;\n if (!htmlLayer) return;\n var tick = htmlLayer.getElementsByClassName(\"recharts-cartesian-axis-tick-value\")[0];\n if (tick) {\n this.setState({\n fontSize: window.getComputedStyle(tick).fontSize,\n letterSpacing: window.getComputedStyle(tick).letterSpacing\n });\n }\n }\n },\n {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props, x = _this$props2.x, y = _this$props2.y, width = _this$props2.width, height = _this$props2.height, orientation = _this$props2.orientation, tickSize = _this$props2.tickSize, mirror = _this$props2.mirror, tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(data.tickCoord) ? data.tickCoord : data.coordinate;\n switch(orientation){\n case \"top\":\n x1 = x2 = data.coordinate;\n y2 = y + +!mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n case \"left\":\n y1 = y2 = data.coordinate;\n x2 = x + +!mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n case \"right\":\n y1 = y2 = data.coordinate;\n x2 = x + +mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n default:\n x1 = x2 = data.coordinate;\n y2 = y + +mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n },\n {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props, orientation = _this$props3.orientation, mirror = _this$props3.mirror;\n var textAnchor;\n switch(orientation){\n case \"left\":\n textAnchor = mirror ? \"start\" : \"end\";\n break;\n case \"right\":\n textAnchor = mirror ? \"end\" : \"start\";\n break;\n default:\n textAnchor = \"middle\";\n break;\n }\n return textAnchor;\n }\n },\n {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props, orientation = _this$props4.orientation, mirror = _this$props4.mirror;\n var verticalAnchor = \"end\";\n switch(orientation){\n case \"left\":\n case \"right\":\n verticalAnchor = \"middle\";\n break;\n case \"top\":\n verticalAnchor = mirror ? \"start\" : \"end\";\n break;\n default:\n verticalAnchor = mirror ? \"end\" : \"start\";\n break;\n }\n return verticalAnchor;\n }\n },\n {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props, x = _this$props5.x, y = _this$props5.y, width = _this$props5.width, height = _this$props5.height, orientation = _this$props5.orientation, mirror = _this$props5.mirror, axisLine = _this$props5.axisLine;\n var props = _objectSpread(_objectSpread(_objectSpread({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false)), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(axisLine, false)), {}, {\n fill: \"none\"\n });\n if (orientation === \"top\" || orientation === \"bottom\") {\n var needHeight = +(orientation === \"top\" && !mirror || orientation === \"bottom\" && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = +(orientation === \"left\" && !mirror || orientation === \"right\" && mirror);\n props = _objectSpread(_objectSpread({}, props), {}, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, props, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-cartesian-axis-line\", lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(axisLine, \"className\"))\n }));\n }\n },\n {\n key: \"renderTicks\",\n value: /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @param {string} fontSize Fontsize to consider for tick spacing\n * @param {string} letterSpacing Letterspacing to consider for tick spacing\n * @return {ReactComponent} renderedTicks\n */ function renderTicks(ticks, fontSize, letterSpacing) {\n var _this2 = this;\n var _this$props6 = this.props, tickLine = _this$props6.tickLine, stroke = _this$props6.stroke, tick = _this$props6.tick, tickFormatter = _this$props6.tickFormatter, unit = _this$props6.unit;\n var finalTicks = (0,_getTicks__WEBPACK_IMPORTED_MODULE_7__.getTicks)(_objectSpread(_objectSpread({}, this.props), {}, {\n ticks: ticks\n }), fontSize, letterSpacing);\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(this.props, false);\n var customTickProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(tick, false);\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: \"none\"\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(tickLine, false));\n var items = finalTicks.map(function(entry, i) {\n var _this2$getTickLineCoo = _this2.getTickLineCoord(entry), lineCoord = _this2$getTickLineCoo.line, tickCoord = _this2$getTickLineCoo.tick;\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps), {}, {\n stroke: \"none\",\n fill: stroke\n }, customTickProps), tickCoord), {}, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length,\n tickFormatter: tickFormatter\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_9__.adaptEventsOfChild)(_this2.props, entry, i)), tickLine && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-cartesian-axis-tick-line\", lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(tickLine, \"className\"))\n })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || \"\")));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props7 = this.props, axisLine = _this$props7.axisLine, width = _this$props7.width, height = _this$props7.height, ticksGenerator = _this$props7.ticksGenerator, className = _this$props7.className, hide = _this$props7.hide;\n if (hide) {\n return null;\n }\n var _this$props8 = this.props, ticks = _this$props8.ticks, noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n var finalTicks = ticks;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-cartesian-axis\", className),\n ref: function ref(_ref2) {\n _this3.layerReference = _ref2;\n }\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), _component_Label__WEBPACK_IMPORTED_MODULE_10__.Label.renderCallByParent(this.props));\n }\n }\n ], [\n {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Text__WEBPACK_IMPORTED_MODULE_11__.Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n return tickItem;\n }\n }\n ]);\n return CartesianAxis;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n_defineProperty(CartesianAxis, \"displayName\", \"CartesianAxis\");\n_defineProperty(CartesianAxis, \"defaultProps\", {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: \"bottom\",\n // The ticks\n ticks: [],\n stroke: \"#666\",\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: \"preserveEnd\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9DYXJ0ZXNpYW5BeGlzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7Q0FBVSxFQUN6QkMsYUFBYTtJQUFDO0NBQVUsRUFDeEJDLGFBQWE7SUFBQztDQUFRO0FBQ3hCLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9GLFNBQVMsQ0FBQ1csY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFC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LDJEQUFvQixDQUFDd0csU0FBUztvQkFDOUNDLFdBQVcsV0FBVyxHQUFFekcseURBQWtCLENBQUN3RyxRQUFRMUk7Z0JBQ3JELE9BQU8sSUFBSW9DLHdEQUFVQSxDQUFDc0csU0FBUztvQkFDN0JDLFdBQVdELE9BQU8xSTtnQkFDcEIsT0FBTztvQkFDTDJJLFdBQVcsV0FBVyxHQUFFekcsMERBQW1CLENBQUNPLGtEQUFJQSxFQUFFbEYsU0FBUyxDQUFDLEdBQUd5QyxPQUFPO3dCQUNwRXdHLFdBQVc7b0JBQ2IsSUFBSTlFO2dCQUNOO2dCQUNBLE9BQU9pSDtZQUNUO1FBQ0Y7S0FBRTtJQUNGLE9BQU81RjtBQUNULEVBQUVaLDRDQUFTQSxFQUFFO0FBQ2JuRCxnQkFBZ0IrRCxlQUFlLGVBQWU7QUFDOUMvRCxnQkFBZ0IrRCxlQUFlLGdCQUFnQjtJQUM3Q3lCLEdBQUc7SUFDSEMsR0FBRztJQUNIQyxPQUFPO0lBQ1BDLFFBQVE7SUFDUm5CLFNBQVM7UUFDUGdCLEdBQUc7UUFDSEMsR0FBRztRQUNIQyxPQUFPO1FBQ1BDLFFBQVE7SUFDVjtJQUNBLDBCQUEwQjtJQUMxQkMsYUFBYTtJQUNiLFlBQVk7SUFDWjhCLE9BQU8sRUFBRTtJQUNUSSxRQUFRO0lBQ1JELFVBQVU7SUFDVlYsVUFBVTtJQUNWbkMsTUFBTTtJQUNOYyxRQUFRO0lBQ1JnRSxZQUFZO0lBQ1osOEJBQThCO0lBQzlCakUsVUFBVTtJQUNWRSxZQUFZO0lBQ1pnRSxVQUFVO0FBQ1oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vQ2FydGVzaWFuQXhpcy5qcz82MDI4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJ2aWV3Qm94XCJdLFxuICBfZXhjbHVkZWQyID0gW1widmlld0JveFwiXSxcbiAgX2V4Y2x1ZGVkMyA9IFtcInRpY2tzXCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBDYXJ0ZXNpYW4gQXhpc1xuICovXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsIH0gZnJvbSAnLi4vdXRpbC9TaGFsbG93RXF1YWwnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4uL2NvbXBvbmVudC9UZXh0JztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi4vY29tcG9uZW50L0xhYmVsJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgYWRhcHRFdmVudHNPZkNoaWxkIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBnZXRUaWNrcyB9IGZyb20gJy4vZ2V0VGlja3MnO1xuXG4vKiogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBheGlzIGluIGNvcnJlc3BvbmRlbmNlIHRvIHRoZSBjaGFydCAqL1xuXG4vKiogQSB1bml0IHRvIGJlIGFwcGVuZGVkIHRvIGEgdmFsdWUgKi9cblxuLyoqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24gb2YgdGljayAqL1xuXG5leHBvcnQgdmFyIENhcnRlc2lhbkF4aXMgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKENhcnRlc2lhbkF4aXMsIF9Db21wb25lbnQpO1xuICBmdW5jdGlvbiBDYXJ0ZXNpYW5BeGlzKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYXJ0ZXNpYW5BeGlzKTtcbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQ2FydGVzaWFuQXhpcywgW3Byb3BzXSk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBmb250U2l6ZTogJycsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiAnJ1xuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhDYXJ0ZXNpYW5BeGlzLCBbe1xuICAgIGtleTogXCJzaG91bGRDb21wb25lbnRVcGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKF9yZWYsIG5leHRTdGF0ZSkge1xuICAgICAgdmFyIHZpZXdCb3ggPSBfcmVmLnZpZXdCb3gsXG4gICAgICAgIHJlc3RQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmLCBfZXhjbHVkZWQpO1xuICAgICAgLy8gcHJvcHMudmlld0JveCBpcyBzb21ldGltZXMgZ2VuZXJhdGVkIGV2ZXJ5IHRpbWUgLVxuICAgICAgLy8gY2hlY2sgdGhhdCBzcGVjaWFsbHkgYXMgb2JqZWN0IGVxdWFsaXR5IGlzIGxpa2VseSB0byBmYWlsXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICB2aWV3Qm94T2xkID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgcmVzdFByb3BzT2xkID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzLCBfZXhjbHVkZWQyKTtcbiAgICAgIHJldHVybiAhc2hhbGxvd0VxdWFsKHZpZXdCb3gsIHZpZXdCb3hPbGQpIHx8ICFzaGFsbG93RXF1YWwocmVzdFByb3BzLCByZXN0UHJvcHNPbGQpIHx8ICFzaGFsbG93RXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgaHRtbExheWVyID0gdGhpcy5sYXllclJlZmVyZW5jZTtcbiAgICAgIGlmICghaHRtbExheWVyKSByZXR1cm47XG4gICAgICB2YXIgdGljayA9IGh0bWxMYXllci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrLXZhbHVlJylbMF07XG4gICAgICBpZiAodGljaykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBmb250U2l6ZTogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGljaykuZm9udFNpemUsXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzogd2luZG93LmdldENvbXB1dGVkU3R5bGUodGljaykubGV0dGVyU3BhY2luZ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIGNvb3JkaW5hdGVzIG9mIGVuZHBvaW50cyBpbiB0aWNrc1xuICAgICAqIEBwYXJhbSAge09iamVjdH0gZGF0YSBUaGUgZGF0YSBvZiBhIHNpbXBsZSB0aWNrXG4gICAgICogQHJldHVybiB7T2JqZWN0fSAoeDEsIHkxKTogVGhlIGNvb3JkaW5hdGUgb2YgZW5kcG9pbnQgY2xvc2UgdG8gdGljayB0ZXh0XG4gICAgICogICh4MiwgeTIpOiBUaGUgY29vcmRpbmF0ZSBvZiBlbmRwb2ludCBjbG9zZSB0byBheGlzXG4gICAgICovXG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0VGlja0xpbmVDb29yZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUaWNrTGluZUNvb3JkKGRhdGEpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICB4ID0gX3RoaXMkcHJvcHMyLngsXG4gICAgICAgIHkgPSBfdGhpcyRwcm9wczIueSxcbiAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczIud2lkdGgsXG4gICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMi5oZWlnaHQsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHMyLm9yaWVudGF0aW9uLFxuICAgICAgICB0aWNrU2l6ZSA9IF90aGlzJHByb3BzMi50aWNrU2l6ZSxcbiAgICAgICAgbWlycm9yID0gX3RoaXMkcHJvcHMyLm1pcnJvcixcbiAgICAgICAgdGlja01hcmdpbiA9IF90aGlzJHByb3BzMi50aWNrTWFyZ2luO1xuICAgICAgdmFyIHgxLCB4MiwgeTEsIHkyLCB0eCwgdHk7XG4gICAgICB2YXIgc2lnbiA9IG1pcnJvciA/IC0xIDogMTtcbiAgICAgIHZhciBmaW5hbFRpY2tTaXplID0gZGF0YS50aWNrU2l6ZSB8fCB0aWNrU2l6ZTtcbiAgICAgIHZhciB0aWNrQ29vcmQgPSBpc051bWJlcihkYXRhLnRpY2tDb29yZCkgPyBkYXRhLnRpY2tDb29yZCA6IGRhdGEuY29vcmRpbmF0ZTtcbiAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICB4MSA9IHgyID0gZGF0YS5jb29yZGluYXRlO1xuICAgICAgICAgIHkyID0geSArICshbWlycm9yICogaGVpZ2h0O1xuICAgICAgICAgIHkxID0geTIgLSBzaWduICogZmluYWxUaWNrU2l6ZTtcbiAgICAgICAgICB0eSA9IHkxIC0gc2lnbiAqIHRpY2tNYXJnaW47XG4gICAgICAgICAgdHggPSB0aWNrQ29vcmQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHkxID0geTIgPSBkYXRhLmNvb3JkaW5hdGU7XG4gICAgICAgICAgeDIgPSB4ICsgKyFtaXJyb3IgKiB3aWR0aDtcbiAgICAgICAgICB4MSA9IHgyIC0gc2lnbiAqIGZpbmFsVGlja1NpemU7XG4gICAgICAgICAgdHggPSB4MSAtIHNpZ24gKiB0aWNrTWFyZ2luO1xuICAgICAgICAgIHR5ID0gdGlja0Nvb3JkO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgeTEgPSB5MiA9IGRhdGEuY29vcmRpbmF0ZTtcbiAgICAgICAgICB4MiA9IHggKyArbWlycm9yICogd2lkdGg7XG4gICAgICAgICAgeDEgPSB4MiArIHNpZ24gKiBmaW5hbFRpY2tTaXplO1xuICAgICAgICAgIHR4ID0geDEgKyBzaWduICogdGlja01hcmdpbjtcbiAgICAgICAgICB0eSA9IHRpY2tDb29yZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB4MSA9IHgyID0gZGF0YS5jb29yZGluYXRlO1xuICAgICAgICAgIHkyID0geSArICttaXJyb3IgKiBoZWlnaHQ7XG4gICAgICAgICAgeTEgPSB5MiArIHNpZ24gKiBmaW5hbFRpY2tTaXplO1xuICAgICAgICAgIHR5ID0geTEgKyBzaWduICogdGlja01hcmdpbjtcbiAgICAgICAgICB0eCA9IHRpY2tDb29yZDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IHtcbiAgICAgICAgICB4MTogeDEsXG4gICAgICAgICAgeTE6IHkxLFxuICAgICAgICAgIHgyOiB4MixcbiAgICAgICAgICB5MjogeTJcbiAgICAgICAgfSxcbiAgICAgICAgdGljazoge1xuICAgICAgICAgIHg6IHR4LFxuICAgICAgICAgIHk6IHR5XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFRpY2tUZXh0QW5jaG9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRpY2tUZXh0QW5jaG9yKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHMzLm9yaWVudGF0aW9uLFxuICAgICAgICBtaXJyb3IgPSBfdGhpcyRwcm9wczMubWlycm9yO1xuICAgICAgdmFyIHRleHRBbmNob3I7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHRleHRBbmNob3IgPSBtaXJyb3IgPyAnc3RhcnQnIDogJ2VuZCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICB0ZXh0QW5jaG9yID0gbWlycm9yID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRleHRBbmNob3IgPSAnbWlkZGxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0QW5jaG9yO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUaWNrVmVydGljYWxBbmNob3JcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VGlja1ZlcnRpY2FsQW5jaG9yKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIG9yaWVudGF0aW9uID0gX3RoaXMkcHJvcHM0Lm9yaWVudGF0aW9uLFxuICAgICAgICBtaXJyb3IgPSBfdGhpcyRwcm9wczQubWlycm9yO1xuICAgICAgdmFyIHZlcnRpY2FsQW5jaG9yID0gJ2VuZCc7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgdmVydGljYWxBbmNob3IgPSAnbWlkZGxlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICB2ZXJ0aWNhbEFuY2hvciA9IG1pcnJvciA/ICdzdGFydCcgOiAnZW5kJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB2ZXJ0aWNhbEFuY2hvciA9IG1pcnJvciA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXJ0aWNhbEFuY2hvcjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyQXhpc0xpbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQXhpc0xpbmUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgeCA9IF90aGlzJHByb3BzNS54LFxuICAgICAgICB5ID0gX3RoaXMkcHJvcHM1LnksXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHM1LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczUuaGVpZ2h0LFxuICAgICAgICBvcmllbnRhdGlvbiA9IF90aGlzJHByb3BzNS5vcmllbnRhdGlvbixcbiAgICAgICAgbWlycm9yID0gX3RoaXMkcHJvcHM1Lm1pcnJvcixcbiAgICAgICAgYXhpc0xpbmUgPSBfdGhpcyRwcm9wczUuYXhpc0xpbmU7XG4gICAgICB2YXIgcHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZmlsdGVyUHJvcHModGhpcy5wcm9wcywgZmFsc2UpKSwgZmlsdGVyUHJvcHMoYXhpc0xpbmUsIGZhbHNlKSksIHt9LCB7XG4gICAgICAgIGZpbGw6ICdub25lJ1xuICAgICAgfSk7XG4gICAgICBpZiAob3JpZW50YXRpb24gPT09ICd0b3AnIHx8IG9yaWVudGF0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICB2YXIgbmVlZEhlaWdodCA9ICsob3JpZW50YXRpb24gPT09ICd0b3AnICYmICFtaXJyb3IgfHwgb3JpZW50YXRpb24gPT09ICdib3R0b20nICYmIG1pcnJvcik7XG4gICAgICAgIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgICAgeDE6IHgsXG4gICAgICAgICAgeTE6IHkgKyBuZWVkSGVpZ2h0ICogaGVpZ2h0LFxuICAgICAgICAgIHgyOiB4ICsgd2lkdGgsXG4gICAgICAgICAgeTI6IHkgKyBuZWVkSGVpZ2h0ICogaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5lZWRXaWR0aCA9ICsob3JpZW50YXRpb24gPT09ICdsZWZ0JyAmJiAhbWlycm9yIHx8IG9yaWVudGF0aW9uID09PSAncmlnaHQnICYmIG1pcnJvcik7XG4gICAgICAgIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgICAgICAgeDE6IHggKyBuZWVkV2lkdGggKiB3aWR0aCxcbiAgICAgICAgICB5MTogeSxcbiAgICAgICAgICB4MjogeCArIG5lZWRXaWR0aCAqIHdpZHRoLFxuICAgICAgICAgIHkyOiB5ICsgaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwibGluZVwiLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy1saW5lJywgZ2V0KGF4aXNMaW5lLCAnY2xhc3NOYW1lJykpXG4gICAgICB9KSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclRpY2tzXCIsXG4gICAgdmFsdWU6XG4gICAgLyoqXG4gICAgICogcmVuZGVyIHRoZSB0aWNrc1xuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRpY2tzIFRoZSB0aWNrcyB0byBhY3R1YWxseSByZW5kZXIgKG92ZXJyaWRlcyB3aGF0IHdhcyBwYXNzZWQgaW4gcHJvcHMpXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGZvbnRTaXplIEZvbnRzaXplIHRvIGNvbnNpZGVyIGZvciB0aWNrIHNwYWNpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGV0dGVyU3BhY2luZyBMZXR0ZXJzcGFjaW5nIHRvIGNvbnNpZGVyIGZvciB0aWNrIHNwYWNpbmdcbiAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gcmVuZGVyZWRUaWNrc1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbmRlclRpY2tzKHRpY2tzLCBmb250U2l6ZSwgbGV0dGVyU3BhY2luZykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgdGlja0xpbmUgPSBfdGhpcyRwcm9wczYudGlja0xpbmUsXG4gICAgICAgIHN0cm9rZSA9IF90aGlzJHByb3BzNi5zdHJva2UsXG4gICAgICAgIHRpY2sgPSBfdGhpcyRwcm9wczYudGljayxcbiAgICAgICAgdGlja0Zvcm1hdHRlciA9IF90aGlzJHByb3BzNi50aWNrRm9ybWF0dGVyLFxuICAgICAgICB1bml0ID0gX3RoaXMkcHJvcHM2LnVuaXQ7XG4gICAgICB2YXIgZmluYWxUaWNrcyA9IGdldFRpY2tzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5wcm9wcyksIHt9LCB7XG4gICAgICAgIHRpY2tzOiB0aWNrc1xuICAgICAgfSksIGZvbnRTaXplLCBsZXR0ZXJTcGFjaW5nKTtcbiAgICAgIHZhciB0ZXh0QW5jaG9yID0gdGhpcy5nZXRUaWNrVGV4dEFuY2hvcigpO1xuICAgICAgdmFyIHZlcnRpY2FsQW5jaG9yID0gdGhpcy5nZXRUaWNrVmVydGljYWxBbmNob3IoKTtcbiAgICAgIHZhciBheGlzUHJvcHMgPSBmaWx0ZXJQcm9wcyh0aGlzLnByb3BzLCBmYWxzZSk7XG4gICAgICB2YXIgY3VzdG9tVGlja1Byb3BzID0gZmlsdGVyUHJvcHModGljaywgZmFsc2UpO1xuICAgICAgdmFyIHRpY2tMaW5lUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgIGZpbGw6ICdub25lJ1xuICAgICAgfSwgZmlsdGVyUHJvcHModGlja0xpbmUsIGZhbHNlKSk7XG4gICAgICB2YXIgaXRlbXMgPSBmaW5hbFRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgdmFyIF90aGlzMiRnZXRUaWNrTGluZUNvbyA9IF90aGlzMi5nZXRUaWNrTGluZUNvb3JkKGVudHJ5KSxcbiAgICAgICAgICBsaW5lQ29vcmQgPSBfdGhpczIkZ2V0VGlja0xpbmVDb28ubGluZSxcbiAgICAgICAgICB0aWNrQ29vcmQgPSBfdGhpczIkZ2V0VGlja0xpbmVDb28udGljaztcbiAgICAgICAgdmFyIHRpY2tQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHRleHRBbmNob3I6IHRleHRBbmNob3IsXG4gICAgICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsQW5jaG9yXG4gICAgICAgIH0sIGF4aXNQcm9wcyksIHt9LCB7XG4gICAgICAgICAgc3Ryb2tlOiAnbm9uZScsXG4gICAgICAgICAgZmlsbDogc3Ryb2tlXG4gICAgICAgIH0sIGN1c3RvbVRpY2tQcm9wcyksIHRpY2tDb29yZCksIHt9LCB7XG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgcGF5bG9hZDogZW50cnksXG4gICAgICAgICAgdmlzaWJsZVRpY2tzQ291bnQ6IGZpbmFsVGlja3MubGVuZ3RoLFxuICAgICAgICAgIHRpY2tGb3JtYXR0ZXI6IHRpY2tGb3JtYXR0ZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcy10aWNrXCIsXG4gICAgICAgICAga2V5OiBcInRpY2stXCIuY29uY2F0KGVudHJ5LnZhbHVlLCBcIi1cIikuY29uY2F0KGVudHJ5LmNvb3JkaW5hdGUsIFwiLVwiKS5jb25jYXQoZW50cnkudGlja0Nvb3JkKVxuICAgICAgICB9LCBhZGFwdEV2ZW50c09mQ2hpbGQoX3RoaXMyLnByb3BzLCBlbnRyeSwgaSkpLCB0aWNrTGluZSAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIHRpY2tMaW5lUHJvcHMsIGxpbmVDb29yZCwge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtY2FydGVzaWFuLWF4aXMtdGljay1saW5lJywgZ2V0KHRpY2tMaW5lLCAnY2xhc3NOYW1lJykpXG4gICAgICAgIH0pKSwgdGljayAmJiBDYXJ0ZXNpYW5BeGlzLnJlbmRlclRpY2tJdGVtKHRpY2ssIHRpY2tQcm9wcywgXCJcIi5jb25jYXQoaXNGdW5jdGlvbih0aWNrRm9ybWF0dGVyKSA/IHRpY2tGb3JtYXR0ZXIoZW50cnkudmFsdWUsIGkpIDogZW50cnkudmFsdWUpLmNvbmNhdCh1bml0IHx8ICcnKSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2tzXCJcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgIGF4aXNMaW5lID0gX3RoaXMkcHJvcHM3LmF4aXNMaW5lLFxuICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNy53aWR0aCxcbiAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM3LmhlaWdodCxcbiAgICAgICAgdGlja3NHZW5lcmF0b3IgPSBfdGhpcyRwcm9wczcudGlja3NHZW5lcmF0b3IsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNy5jbGFzc05hbWUsXG4gICAgICAgIGhpZGUgPSBfdGhpcyRwcm9wczcuaGlkZTtcbiAgICAgIGlmIChoaWRlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIF90aGlzJHByb3BzOCA9IHRoaXMucHJvcHMsXG4gICAgICAgIHRpY2tzID0gX3RoaXMkcHJvcHM4LnRpY2tzLFxuICAgICAgICBub1RpY2tzUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3RoaXMkcHJvcHM4LCBfZXhjbHVkZWQzKTtcbiAgICAgIHZhciBmaW5hbFRpY2tzID0gdGlja3M7XG4gICAgICBpZiAoaXNGdW5jdGlvbih0aWNrc0dlbmVyYXRvcikpIHtcbiAgICAgICAgZmluYWxUaWNrcyA9IHRpY2tzICYmIHRpY2tzLmxlbmd0aCA+IDAgPyB0aWNrc0dlbmVyYXRvcih0aGlzLnByb3BzKSA6IHRpY2tzR2VuZXJhdG9yKG5vVGlja3NQcm9wcyk7XG4gICAgICB9XG4gICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCB8fCAhZmluYWxUaWNrcyB8fCAhZmluYWxUaWNrcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1jYXJ0ZXNpYW4tYXhpcycsIGNsYXNzTmFtZSksXG4gICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKF9yZWYyKSB7XG4gICAgICAgICAgX3RoaXMzLmxheWVyUmVmZXJlbmNlID0gX3JlZjI7XG4gICAgICAgIH1cbiAgICAgIH0sIGF4aXNMaW5lICYmIHRoaXMucmVuZGVyQXhpc0xpbmUoKSwgdGhpcy5yZW5kZXJUaWNrcyhmaW5hbFRpY2tzLCB0aGlzLnN0YXRlLmZvbnRTaXplLCB0aGlzLnN0YXRlLmxldHRlclNwYWNpbmcpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQodGhpcy5wcm9wcykpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcInJlbmRlclRpY2tJdGVtXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlclRpY2tJdGVtKG9wdGlvbiwgcHJvcHMsIHZhbHVlKSB7XG4gICAgICB2YXIgdGlja0l0ZW07XG4gICAgICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICAgIHRpY2tJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICAgIHRpY2tJdGVtID0gb3B0aW9uKHByb3BzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRpY2tJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1heGlzLXRpY2stdmFsdWVcIlxuICAgICAgICB9KSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRpY2tJdGVtO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gQ2FydGVzaWFuQXhpcztcbn0oQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShDYXJ0ZXNpYW5BeGlzLCBcImRpc3BsYXlOYW1lXCIsICdDYXJ0ZXNpYW5BeGlzJyk7XG5fZGVmaW5lUHJvcGVydHkoQ2FydGVzaWFuQXhpcywgXCJkZWZhdWx0UHJvcHNcIiwge1xuICB4OiAwLFxuICB5OiAwLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICB2aWV3Qm94OiB7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9LFxuICAvLyBUaGUgb3JpZW50YXRpb24gb2YgYXhpc1xuICBvcmllbnRhdGlvbjogJ2JvdHRvbScsXG4gIC8vIFRoZSB0aWNrc1xuICB0aWNrczogW10sXG4gIHN0cm9rZTogJyM2NjYnLFxuICB0aWNrTGluZTogdHJ1ZSxcbiAgYXhpc0xpbmU6IHRydWUsXG4gIHRpY2s6IHRydWUsXG4gIG1pcnJvcjogZmFsc2UsXG4gIG1pblRpY2tHYXA6IDUsXG4gIC8vIFRoZSB3aWR0aCBvciBoZWlnaHQgb2YgdGlja1xuICB0aWNrU2l6ZTogNixcbiAgdGlja01hcmdpbjogMixcbiAgaW50ZXJ2YWw6ICdwcmVzZXJ2ZUVuZCdcbn0pOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJwIiwib2JqIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJOdW1iZXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsImlzRnVuY3Rpb24iLCJnZXQiLCJjbHN4Iiwic2hhbGxvd0VxdWFsIiwiTGF5ZXIiLCJUZXh0IiwiTGFiZWwiLCJpc051bWJlciIsImFkYXB0RXZlbnRzT2ZDaGlsZCIsImZpbHRlclByb3BzIiwiZ2V0VGlja3MiLCJDYXJ0ZXNpYW5BeGlzIiwiX0NvbXBvbmVudCIsIl90aGlzIiwic3RhdGUiLCJmb250U2l6ZSIsImxldHRlclNwYWNpbmciLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJfcmVmIiwibmV4dFN0YXRlIiwidmlld0JveCIsInJlc3RQcm9wcyIsIl90aGlzJHByb3BzIiwidmlld0JveE9sZCIsInJlc3RQcm9wc09sZCIsImNvbXBvbmVudERpZE1vdW50IiwiaHRtbExheWVyIiwibGF5ZXJSZWZlcmVuY2UiLCJ0aWNrIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInNldFN0YXRlIiwid2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFRpY2tMaW5lQ29vcmQiLCJkYXRhIiwiX3RoaXMkcHJvcHMyIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWVudGF0aW9uIiwidGlja1NpemUiLCJtaXJyb3IiLCJ0aWNrTWFyZ2luIiwieDEiLCJ4MiIsInkxIiwieTIiLCJ0eCIsInR5Iiwic2lnbiIsImZpbmFsVGlja1NpemUiLCJ0aWNrQ29vcmQiLCJjb29yZGluYXRlIiwibGluZSIsImdldFRpY2tUZXh0QW5jaG9yIiwiX3RoaXMkcHJvcHMzIiwidGV4dEFuY2hvciIsImdldFRpY2tWZXJ0aWNhbEFuY2hvciIsIl90aGlzJHByb3BzNCIsInZlcnRpY2FsQW5jaG9yIiwicmVuZGVyQXhpc0xpbmUiLCJfdGhpcyRwcm9wczUiLCJheGlzTGluZSIsImZpbGwiLCJuZWVkSGVpZ2h0IiwibmVlZFdpZHRoIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInJlbmRlclRpY2tzIiwidGlja3MiLCJfdGhpczIiLCJfdGhpcyRwcm9wczYiLCJ0aWNrTGluZSIsInN0cm9rZSIsInRpY2tGb3JtYXR0ZXIiLCJ1bml0IiwiZmluYWxUaWNrcyIsImF4aXNQcm9wcyIsImN1c3RvbVRpY2tQcm9wcyIsInRpY2tMaW5lUHJvcHMiLCJpdGVtcyIsIm1hcCIsImVudHJ5IiwiX3RoaXMyJGdldFRpY2tMaW5lQ29vIiwibGluZUNvb3JkIiwidGlja1Byb3BzIiwiaW5kZXgiLCJwYXlsb2FkIiwidmlzaWJsZVRpY2tzQ291bnQiLCJjb25jYXQiLCJyZW5kZXJUaWNrSXRlbSIsInJlbmRlciIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsInRpY2tzR2VuZXJhdG9yIiwiaGlkZSIsIl90aGlzJHByb3BzOCIsIm5vVGlja3NQcm9wcyIsInJlZiIsIl9yZWYyIiwicmVuZGVyQ2FsbEJ5UGFyZW50Iiwib3B0aW9uIiwidGlja0l0ZW0iLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsIm1pblRpY2tHYXAiLCJpbnRlcnZhbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/CartesianGrid.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/CartesianGrid.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CartesianGrid: () => (/* binding */ CartesianGrid)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _getTicks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getTicks */ \"(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js\");\n/* harmony import */ var _CartesianAxis__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CartesianAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\nvar _excluded = [\n \"x1\",\n \"y1\",\n \"x2\",\n \"y2\",\n \"key\"\n], _excluded2 = [\n \"offset\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Cartesian Grid\n */ \n\n\n\n\n\n\n\n\n/**\n * The <CartesianGrid horizontal\n */ var Background = function Background(props) {\n var fill = props.fill;\n if (!fill || fill === \"none\") {\n return null;\n }\n var fillOpacity = props.fillOpacity, x = props.x, y = props.y, width = props.width, height = props.height;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n stroke: \"none\",\n fill: fill,\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n};\nfunction renderLineItem(option, props) {\n var lineItem;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n // @ts-expect-error typescript does not see the props type when cloning an element\n lineItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n lineItem = option(props);\n } else {\n var x1 = props.x1, y1 = props.y1, x2 = props.x2, y2 = props.y2, key = props.key, others = _objectWithoutProperties(props, _excluded);\n var _filterProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, false), __ = _filterProps.offset, restOfFilteredProps = _objectWithoutProperties(_filterProps, _excluded2);\n lineItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, restOfFilteredProps, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n fill: \"none\",\n key: key\n }));\n }\n return lineItem;\n}\nfunction HorizontalGridLines(props) {\n var x = props.x, width = props.width, _props$horizontal = props.horizontal, horizontal = _props$horizontal === void 0 ? true : _props$horizontal, horizontalPoints = props.horizontalPoints;\n if (!horizontal || !horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n var items = horizontalPoints.map(function(entry, i) {\n var lineItemProps = _objectSpread(_objectSpread({}, props), {}, {\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: \"line-\".concat(i),\n index: i\n });\n return renderLineItem(horizontal, lineItemProps);\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-grid-horizontal\"\n }, items);\n}\nfunction VerticalGridLines(props) {\n var y = props.y, height = props.height, _props$vertical = props.vertical, vertical = _props$vertical === void 0 ? true : _props$vertical, verticalPoints = props.verticalPoints;\n if (!vertical || !verticalPoints || !verticalPoints.length) {\n return null;\n }\n var items = verticalPoints.map(function(entry, i) {\n var lineItemProps = _objectSpread(_objectSpread({}, props), {}, {\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: \"line-\".concat(i),\n index: i\n });\n return renderLineItem(vertical, lineItemProps);\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-grid-vertical\"\n }, items);\n}\nfunction HorizontalStripes(props) {\n var horizontalFill = props.horizontalFill, fillOpacity = props.fillOpacity, x = props.x, y = props.y, width = props.width, height = props.height, horizontalPoints = props.horizontalPoints, _props$horizontal2 = props.horizontal, horizontal = _props$horizontal2 === void 0 ? true : _props$horizontal2;\n if (!horizontal || !horizontalFill || !horizontalFill.length) {\n return null;\n }\n // Why =y -y? I was trying to find any difference that this makes, with floating point numbers and edge cases but ... nothing.\n var roundedSortedHorizontalPoints = horizontalPoints.map(function(e) {\n return Math.round(e + y - y);\n }).sort(function(a, b) {\n return a - b;\n });\n // Why is this condition `!==` instead of `<=` ?\n if (y !== roundedSortedHorizontalPoints[0]) {\n roundedSortedHorizontalPoints.unshift(0);\n }\n var items = roundedSortedHorizontalPoints.map(function(entry, i) {\n // Why do we strip only the last stripe if it is invisible, and not all invisible stripes?\n var lastStripe = !roundedSortedHorizontalPoints[i + 1];\n var lineHeight = lastStripe ? y + height - entry : roundedSortedHorizontalPoints[i + 1] - entry;\n if (lineHeight <= 0) {\n return null;\n }\n var colorIndex = i % horizontalFill.length;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n y: entry,\n x: x,\n height: lineHeight,\n width: width,\n stroke: \"none\",\n fill: horizontalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-horizontal\"\n }, items);\n}\nfunction VerticalStripes(props) {\n var _props$vertical2 = props.vertical, vertical = _props$vertical2 === void 0 ? true : _props$vertical2, verticalFill = props.verticalFill, fillOpacity = props.fillOpacity, x = props.x, y = props.y, width = props.width, height = props.height, verticalPoints = props.verticalPoints;\n if (!vertical || !verticalFill || !verticalFill.length) {\n return null;\n }\n var roundedSortedVerticalPoints = verticalPoints.map(function(e) {\n return Math.round(e + x - x);\n }).sort(function(a, b) {\n return a - b;\n });\n if (x !== roundedSortedVerticalPoints[0]) {\n roundedSortedVerticalPoints.unshift(0);\n }\n var items = roundedSortedVerticalPoints.map(function(entry, i) {\n var lastStripe = !roundedSortedVerticalPoints[i + 1];\n var lineWidth = lastStripe ? x + width - entry : roundedSortedVerticalPoints[i + 1] - entry;\n if (lineWidth <= 0) {\n return null;\n }\n var colorIndex = i % verticalFill.length;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n x: entry,\n y: y,\n width: lineWidth,\n height: height,\n stroke: \"none\",\n fill: verticalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-vertical\"\n }, items);\n}\nvar defaultVerticalCoordinatesGenerator = function defaultVerticalCoordinatesGenerator(_ref, syncWithTicks) {\n var xAxis = _ref.xAxis, width = _ref.width, height = _ref.height, offset = _ref.offset;\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_3__.getCoordinatesOfGrid)((0,_getTicks__WEBPACK_IMPORTED_MODULE_4__.getTicks)(_objectSpread(_objectSpread(_objectSpread({}, _CartesianAxis__WEBPACK_IMPORTED_MODULE_5__.CartesianAxis.defaultProps), xAxis), {}, {\n ticks: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_3__.getTicksOfAxis)(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width, syncWithTicks);\n};\nvar defaultHorizontalCoordinatesGenerator = function defaultHorizontalCoordinatesGenerator(_ref2, syncWithTicks) {\n var yAxis = _ref2.yAxis, width = _ref2.width, height = _ref2.height, offset = _ref2.offset;\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_3__.getCoordinatesOfGrid)((0,_getTicks__WEBPACK_IMPORTED_MODULE_4__.getTicks)(_objectSpread(_objectSpread(_objectSpread({}, _CartesianAxis__WEBPACK_IMPORTED_MODULE_5__.CartesianAxis.defaultProps), yAxis), {}, {\n ticks: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_3__.getTicksOfAxis)(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height, syncWithTicks);\n};\nvar defaultProps = {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n stroke: \"#ccc\",\n fill: \"none\",\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: []\n};\nfunction CartesianGrid(props) {\n var _props$stroke, _props$fill, _props$horizontal3, _props$horizontalFill, _props$vertical3, _props$verticalFill;\n var chartWidth = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__.useChartWidth)();\n var chartHeight = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__.useChartHeight)();\n var offset = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__.useOffset)();\n var propsIncludingDefaults = _objectSpread(_objectSpread({}, props), {}, {\n stroke: (_props$stroke = props.stroke) !== null && _props$stroke !== void 0 ? _props$stroke : defaultProps.stroke,\n fill: (_props$fill = props.fill) !== null && _props$fill !== void 0 ? _props$fill : defaultProps.fill,\n horizontal: (_props$horizontal3 = props.horizontal) !== null && _props$horizontal3 !== void 0 ? _props$horizontal3 : defaultProps.horizontal,\n horizontalFill: (_props$horizontalFill = props.horizontalFill) !== null && _props$horizontalFill !== void 0 ? _props$horizontalFill : defaultProps.horizontalFill,\n vertical: (_props$vertical3 = props.vertical) !== null && _props$vertical3 !== void 0 ? _props$vertical3 : defaultProps.vertical,\n verticalFill: (_props$verticalFill = props.verticalFill) !== null && _props$verticalFill !== void 0 ? _props$verticalFill : defaultProps.verticalFill,\n x: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(props.x) ? props.x : offset.left,\n y: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(props.y) ? props.y : offset.top,\n width: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(props.width) ? props.width : offset.width,\n height: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(props.height) ? props.height : offset.height\n });\n var x = propsIncludingDefaults.x, y = propsIncludingDefaults.y, width = propsIncludingDefaults.width, height = propsIncludingDefaults.height, syncWithTicks = propsIncludingDefaults.syncWithTicks, horizontalValues = propsIncludingDefaults.horizontalValues, verticalValues = propsIncludingDefaults.verticalValues;\n // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n var xAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__.useArbitraryXAxis)();\n // @ts-expect-error the scale prop is mixed up - we need to untagle this at some point\n var yAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_6__.useYAxisWithFiniteDomainOrRandom)();\n if (!(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(width) || width <= 0 || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(height) || height <= 0 || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(x) || x !== +x || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(y) || y !== +y) {\n return null;\n }\n /*\n * verticalCoordinatesGenerator and horizontalCoordinatesGenerator are defined\n * outside of the propsIncludingDefaults because they were never part of the original props\n * and they were never passed as a prop down to horizontal/vertical custom elements.\n * If we add these two to propsIncludingDefaults then we are changing public API.\n * Not a bad thing per se but also not necessary.\n */ var verticalCoordinatesGenerator = propsIncludingDefaults.verticalCoordinatesGenerator || defaultVerticalCoordinatesGenerator;\n var horizontalCoordinatesGenerator = propsIncludingDefaults.horizontalCoordinatesGenerator || defaultHorizontalCoordinatesGenerator;\n var horizontalPoints = propsIncludingDefaults.horizontalPoints, verticalPoints = propsIncludingDefaults.verticalPoints;\n // No horizontal points are specified\n if ((!horizontalPoints || !horizontalPoints.length) && lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(horizontalCoordinatesGenerator)) {\n var isHorizontalValues = horizontalValues && horizontalValues.length;\n var generatorResult = horizontalCoordinatesGenerator({\n yAxis: yAxis ? _objectSpread(_objectSpread({}, yAxis), {}, {\n ticks: isHorizontalValues ? horizontalValues : yAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isHorizontalValues ? true : syncWithTicks);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_8__.warn)(Array.isArray(generatorResult), \"horizontalCoordinatesGenerator should return Array but instead it returned [\".concat(_typeof(generatorResult), \"]\"));\n if (Array.isArray(generatorResult)) {\n horizontalPoints = generatorResult;\n }\n }\n // No vertical points are specified\n if ((!verticalPoints || !verticalPoints.length) && lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(verticalCoordinatesGenerator)) {\n var isVerticalValues = verticalValues && verticalValues.length;\n var _generatorResult = verticalCoordinatesGenerator({\n xAxis: xAxis ? _objectSpread(_objectSpread({}, xAxis), {}, {\n ticks: isVerticalValues ? verticalValues : xAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isVerticalValues ? true : syncWithTicks);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_8__.warn)(Array.isArray(_generatorResult), \"verticalCoordinatesGenerator should return Array but instead it returned [\".concat(_typeof(_generatorResult), \"]\"));\n if (Array.isArray(_generatorResult)) {\n verticalPoints = _generatorResult;\n }\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", {\n className: \"recharts-cartesian-grid\"\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Background, {\n fill: propsIncludingDefaults.fill,\n fillOpacity: propsIncludingDefaults.fillOpacity,\n x: propsIncludingDefaults.x,\n y: propsIncludingDefaults.y,\n width: propsIncludingDefaults.width,\n height: propsIncludingDefaults.height\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HorizontalGridLines, _extends({}, propsIncludingDefaults, {\n offset: offset,\n horizontalPoints: horizontalPoints,\n xAxis: xAxis,\n yAxis: yAxis\n })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(VerticalGridLines, _extends({}, propsIncludingDefaults, {\n offset: offset,\n verticalPoints: verticalPoints,\n xAxis: xAxis,\n yAxis: yAxis\n })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HorizontalStripes, _extends({}, propsIncludingDefaults, {\n horizontalPoints: horizontalPoints\n })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(VerticalStripes, _extends({}, propsIncludingDefaults, {\n verticalPoints: verticalPoints\n })));\n}\nCartesianGrid.displayName = \"CartesianGrid\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9DYXJ0ZXNpYW5HcmlkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFNO0lBQU07SUFBTTtJQUFNO0NBQU0sRUFDN0NDLGFBQWE7SUFBQztDQUFTO0FBQ3pCLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9B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QUM1RnZELFFBQVFBO1FBQ1JlLGdCQUFnQkE7UUFDaEJzQixPQUFPQTtRQUNQTyxPQUFPQTtJQUNULEtBQUssV0FBVyxHQUFFakYsMERBQW1CLENBQUNxRCxtQkFBbUJsRSxTQUFTLENBQUMsR0FBR3lHLHdCQUF3QjtRQUM1RmxELGtCQUFrQkE7SUFDcEIsS0FBSyxXQUFXLEdBQUUxQywwREFBbUIsQ0FBQ2tFLGlCQUFpQi9FLFNBQVMsQ0FBQyxHQUFHeUcsd0JBQXdCO1FBQzFGeEMsZ0JBQWdCQTtJQUNsQjtBQUNGO0FBQ0ErQixjQUFjcUIsV0FBVyxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL0NhcnRlc2lhbkdyaWQuanM/M2FkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wieDFcIiwgXCJ5MVwiLCBcIngyXCIsIFwieTJcIiwgXCJrZXlcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJvZmZzZXRcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ2FydGVzaWFuIEdyaWRcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCB7IHdhcm4gfSBmcm9tICcuLi91dGlsL0xvZ1V0aWxzJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29vcmRpbmF0ZXNPZkdyaWQsIGdldFRpY2tzT2ZBeGlzIH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbmltcG9ydCB7IGdldFRpY2tzIH0gZnJvbSAnLi9nZXRUaWNrcyc7XG5pbXBvcnQgeyBDYXJ0ZXNpYW5BeGlzIH0gZnJvbSAnLi9DYXJ0ZXNpYW5BeGlzJztcbmltcG9ydCB7IHVzZUFyYml0cmFyeVhBeGlzLCB1c2VDaGFydEhlaWdodCwgdXNlQ2hhcnRXaWR0aCwgdXNlT2Zmc2V0LCB1c2VZQXhpc1dpdGhGaW5pdGVEb21haW5PclJhbmRvbSB9IGZyb20gJy4uL2NvbnRleHQvY2hhcnRMYXlvdXRDb250ZXh0JztcblxuLyoqXG4gKiBUaGUgPENhcnRlc2lhbkdyaWQgaG9yaXpvbnRhbFxuICovXG5cbnZhciBCYWNrZ3JvdW5kID0gZnVuY3Rpb24gQmFja2dyb3VuZChwcm9wcykge1xuICB2YXIgZmlsbCA9IHByb3BzLmZpbGw7XG4gIGlmICghZmlsbCB8fCBmaWxsID09PSAnbm9uZScpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgZmlsbE9wYWNpdHkgPSBwcm9wcy5maWxsT3BhY2l0eSxcbiAgICB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgIGhlaWdodCA9IHByb3BzLmhlaWdodDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicmVjdFwiLCB7XG4gICAgeDogeCxcbiAgICB5OiB5LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICBzdHJva2U6IFwibm9uZVwiLFxuICAgIGZpbGw6IGZpbGwsXG4gICAgZmlsbE9wYWNpdHk6IGZpbGxPcGFjaXR5LFxuICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZC1iZ1wiXG4gIH0pO1xufTtcbmZ1bmN0aW9uIHJlbmRlckxpbmVJdGVtKG9wdGlvbiwgcHJvcHMpIHtcbiAgdmFyIGxpbmVJdGVtO1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0eXBlc2NyaXB0IGRvZXMgbm90IHNlZSB0aGUgcHJvcHMgdHlwZSB3aGVuIGNsb25pbmcgYW4gZWxlbWVudFxuICAgIGxpbmVJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChvcHRpb24sIHByb3BzKTtcbiAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICBsaW5lSXRlbSA9IG9wdGlvbihwcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHgxID0gcHJvcHMueDEsXG4gICAgICB5MSA9IHByb3BzLnkxLFxuICAgICAgeDIgPSBwcm9wcy54MixcbiAgICAgIHkyID0gcHJvcHMueTIsXG4gICAgICBrZXkgPSBwcm9wcy5rZXksXG4gICAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gICAgdmFyIF9maWx0ZXJQcm9wcyA9IGZpbHRlclByb3BzKG90aGVycywgZmFsc2UpLFxuICAgICAgX18gPSBfZmlsdGVyUHJvcHMub2Zmc2V0LFxuICAgICAgcmVzdE9mRmlsdGVyZWRQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfZmlsdGVyUHJvcHMsIF9leGNsdWRlZDIpO1xuICAgIGxpbmVJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIsIF9leHRlbmRzKHt9LCByZXN0T2ZGaWx0ZXJlZFByb3BzLCB7XG4gICAgICB4MTogeDEsXG4gICAgICB5MTogeTEsXG4gICAgICB4MjogeDIsXG4gICAgICB5MjogeTIsXG4gICAgICBmaWxsOiBcIm5vbmVcIixcbiAgICAgIGtleToga2V5XG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBsaW5lSXRlbTtcbn1cbmZ1bmN0aW9uIEhvcml6b250YWxHcmlkTGluZXMocHJvcHMpIHtcbiAgdmFyIHggPSBwcm9wcy54LFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgX3Byb3BzJGhvcml6b250YWwgPSBwcm9wcy5ob3Jpem9udGFsLFxuICAgIGhvcml6b250YWwgPSBfcHJvcHMkaG9yaXpvbnRhbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wcm9wcyRob3Jpem9udGFsLFxuICAgIGhvcml6b250YWxQb2ludHMgPSBwcm9wcy5ob3Jpem9udGFsUG9pbnRzO1xuICBpZiAoIWhvcml6b250YWwgfHwgIWhvcml6b250YWxQb2ludHMgfHwgIWhvcml6b250YWxQb2ludHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGl0ZW1zID0gaG9yaXpvbnRhbFBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgdmFyIGxpbmVJdGVtUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgIHgxOiB4LFxuICAgICAgeTE6IGVudHJ5LFxuICAgICAgeDI6IHggKyB3aWR0aCxcbiAgICAgIHkyOiBlbnRyeSxcbiAgICAgIGtleTogXCJsaW5lLVwiLmNvbmNhdChpKSxcbiAgICAgIGluZGV4OiBpXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlbmRlckxpbmVJdGVtKGhvcml6b250YWwsIGxpbmVJdGVtUHJvcHMpO1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1ncmlkLWhvcml6b250YWxcIlxuICB9LCBpdGVtcyk7XG59XG5mdW5jdGlvbiBWZXJ0aWNhbEdyaWRMaW5lcyhwcm9wcykge1xuICB2YXIgeSA9IHByb3BzLnksXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIF9wcm9wcyR2ZXJ0aWNhbCA9IHByb3BzLnZlcnRpY2FsLFxuICAgIHZlcnRpY2FsID0gX3Byb3BzJHZlcnRpY2FsID09PSB2b2lkIDAgPyB0cnVlIDogX3Byb3BzJHZlcnRpY2FsLFxuICAgIHZlcnRpY2FsUG9pbnRzID0gcHJvcHMudmVydGljYWxQb2ludHM7XG4gIGlmICghdmVydGljYWwgfHwgIXZlcnRpY2FsUG9pbnRzIHx8ICF2ZXJ0aWNhbFBvaW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgaXRlbXMgPSB2ZXJ0aWNhbFBvaW50cy5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgdmFyIGxpbmVJdGVtUHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgIHgxOiBlbnRyeSxcbiAgICAgIHkxOiB5LFxuICAgICAgeDI6IGVudHJ5LFxuICAgICAgeTI6IHkgKyBoZWlnaHQsXG4gICAgICBrZXk6IFwibGluZS1cIi5jb25jYXQoaSksXG4gICAgICBpbmRleDogaVxuICAgIH0pO1xuICAgIHJldHVybiByZW5kZXJMaW5lSXRlbSh2ZXJ0aWNhbCwgbGluZUl0ZW1Qcm9wcyk7XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtY2FydGVzaWFuLWdyaWQtdmVydGljYWxcIlxuICB9LCBpdGVtcyk7XG59XG5mdW5jdGlvbiBIb3Jpem9udGFsU3RyaXBlcyhwcm9wcykge1xuICB2YXIgaG9yaXpvbnRhbEZpbGwgPSBwcm9wcy5ob3Jpem9udGFsRmlsbCxcbiAgICBmaWxsT3BhY2l0eSA9IHByb3BzLmZpbGxPcGFjaXR5LFxuICAgIHggPSBwcm9wcy54LFxuICAgIHkgPSBwcm9wcy55LFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIGhvcml6b250YWxQb2ludHMgPSBwcm9wcy5ob3Jpem9udGFsUG9pbnRzLFxuICAgIF9wcm9wcyRob3Jpem9udGFsMiA9IHByb3BzLmhvcml6b250YWwsXG4gICAgaG9yaXpvbnRhbCA9IF9wcm9wcyRob3Jpem9udGFsMiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wcm9wcyRob3Jpem9udGFsMjtcbiAgaWYgKCFob3Jpem9udGFsIHx8ICFob3Jpem9udGFsRmlsbCB8fCAhaG9yaXpvbnRhbEZpbGwubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBXaHkgPXkgLXk/IEkgd2FzIHRyeWluZyB0byBmaW5kIGFueSBkaWZmZXJlbmNlIHRoYXQgdGhpcyBtYWtlcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFuZCBlZGdlIGNhc2VzIGJ1dCAuLi4gbm90aGluZy5cbiAgdmFyIHJvdW5kZWRTb3J0ZWRIb3Jpem9udGFsUG9pbnRzID0gaG9yaXpvbnRhbFBvaW50cy5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChlICsgeSAtIHkpO1xuICB9KS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEgLSBiO1xuICB9KTtcbiAgLy8gV2h5IGlzIHRoaXMgY29uZGl0aW9uIGAhPT1gIGluc3RlYWQgb2YgYDw9YCA/XG4gIGlmICh5ICE9PSByb3VuZGVkU29ydGVkSG9yaXpvbnRhbFBvaW50c1swXSkge1xuICAgIHJvdW5kZWRTb3J0ZWRIb3Jpem9udGFsUG9pbnRzLnVuc2hpZnQoMCk7XG4gIH1cbiAgdmFyIGl0ZW1zID0gcm91bmRlZFNvcnRlZEhvcml6b250YWxQb2ludHMubWFwKGZ1bmN0aW9uIChlbnRyeSwgaSkge1xuICAgIC8vIFdoeSBkbyB3ZSBzdHJpcCBvbmx5IHRoZSBsYXN0IHN0cmlwZSBpZiBpdCBpcyBpbnZpc2libGUsIGFuZCBub3QgYWxsIGludmlzaWJsZSBzdHJpcGVzP1xuICAgIHZhciBsYXN0U3RyaXBlID0gIXJvdW5kZWRTb3J0ZWRIb3Jpem9udGFsUG9pbnRzW2kgKyAxXTtcbiAgICB2YXIgbGluZUhlaWdodCA9IGxhc3RTdHJpcGUgPyB5ICsgaGVpZ2h0IC0gZW50cnkgOiByb3VuZGVkU29ydGVkSG9yaXpvbnRhbFBvaW50c1tpICsgMV0gLSBlbnRyeTtcbiAgICBpZiAobGluZUhlaWdodCA8PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNvbG9ySW5kZXggPSBpICUgaG9yaXpvbnRhbEZpbGwubGVuZ3RoO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAga2V5OiBcInJlYWN0LVwiLmNvbmNhdChpKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgLFxuICAgICAgeTogZW50cnksXG4gICAgICB4OiB4LFxuICAgICAgaGVpZ2h0OiBsaW5lSGVpZ2h0LFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgIGZpbGw6IGhvcml6b250YWxGaWxsW2NvbG9ySW5kZXhdLFxuICAgICAgZmlsbE9wYWNpdHk6IGZpbGxPcGFjaXR5LFxuICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1ncmlkLWJnXCJcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwge1xuICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1jYXJ0ZXNpYW4tZ3JpZHN0cmlwZXMtaG9yaXpvbnRhbFwiXG4gIH0sIGl0ZW1zKTtcbn1cbmZ1bmN0aW9uIFZlcnRpY2FsU3RyaXBlcyhwcm9wcykge1xuICB2YXIgX3Byb3BzJHZlcnRpY2FsMiA9IHByb3BzLnZlcnRpY2FsLFxuICAgIHZlcnRpY2FsID0gX3Byb3BzJHZlcnRpY2FsMiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9wcm9wcyR2ZXJ0aWNhbDIsXG4gICAgdmVydGljYWxGaWxsID0gcHJvcHMudmVydGljYWxGaWxsLFxuICAgIGZpbGxPcGFjaXR5ID0gcHJvcHMuZmlsbE9wYWNpdHksXG4gICAgeCA9IHByb3BzLngsXG4gICAgeSA9IHByb3BzLnksXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgdmVydGljYWxQb2ludHMgPSBwcm9wcy52ZXJ0aWNhbFBvaW50cztcbiAgaWYgKCF2ZXJ0aWNhbCB8fCAhdmVydGljYWxGaWxsIHx8ICF2ZXJ0aWNhbEZpbGwubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHJvdW5kZWRTb3J0ZWRWZXJ0aWNhbFBvaW50cyA9IHZlcnRpY2FsUG9pbnRzLm1hcChmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGUgKyB4IC0geCk7XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYSAtIGI7XG4gIH0pO1xuICBpZiAoeCAhPT0gcm91bmRlZFNvcnRlZFZlcnRpY2FsUG9pbnRzWzBdKSB7XG4gICAgcm91bmRlZFNvcnRlZFZlcnRpY2FsUG9pbnRzLnVuc2hpZnQoMCk7XG4gIH1cbiAgdmFyIGl0ZW1zID0gcm91bmRlZFNvcnRlZFZlcnRpY2FsUG9pbnRzLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICB2YXIgbGFzdFN0cmlwZSA9ICFyb3VuZGVkU29ydGVkVmVydGljYWxQb2ludHNbaSArIDFdO1xuICAgIHZhciBsaW5lV2lkdGggPSBsYXN0U3RyaXBlID8geCArIHdpZHRoIC0gZW50cnkgOiByb3VuZGVkU29ydGVkVmVydGljYWxQb2ludHNbaSArIDFdIC0gZW50cnk7XG4gICAgaWYgKGxpbmVXaWR0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNvbG9ySW5kZXggPSBpICUgdmVydGljYWxGaWxsLmxlbmd0aDtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgICAgIGtleTogXCJyZWFjdC1cIi5jb25jYXQoaSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICxcbiAgICAgIHg6IGVudHJ5LFxuICAgICAgeTogeSxcbiAgICAgIHdpZHRoOiBsaW5lV2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHN0cm9rZTogXCJub25lXCIsXG4gICAgICBmaWxsOiB2ZXJ0aWNhbEZpbGxbY29sb3JJbmRleF0sXG4gICAgICBmaWxsT3BhY2l0eTogZmlsbE9wYWNpdHksXG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtY2FydGVzaWFuLWdyaWQtYmdcIlxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZ1wiLCB7XG4gICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWNhcnRlc2lhbi1ncmlkc3RyaXBlcy12ZXJ0aWNhbFwiXG4gIH0sIGl0ZW1zKTtcbn1cbnZhciBkZWZhdWx0VmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvciA9IGZ1bmN0aW9uIGRlZmF1bHRWZXJ0aWNhbENvb3JkaW5hdGVzR2VuZXJhdG9yKF9yZWYsIHN5bmNXaXRoVGlja3MpIHtcbiAgdmFyIHhBeGlzID0gX3JlZi54QXhpcyxcbiAgICB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgb2Zmc2V0ID0gX3JlZi5vZmZzZXQ7XG4gIHJldHVybiBnZXRDb29yZGluYXRlc09mR3JpZChnZXRUaWNrcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgQ2FydGVzaWFuQXhpcy5kZWZhdWx0UHJvcHMpLCB4QXhpcyksIHt9LCB7XG4gICAgdGlja3M6IGdldFRpY2tzT2ZBeGlzKHhBeGlzLCB0cnVlKSxcbiAgICB2aWV3Qm94OiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfVxuICB9KSksIG9mZnNldC5sZWZ0LCBvZmZzZXQubGVmdCArIG9mZnNldC53aWR0aCwgc3luY1dpdGhUaWNrcyk7XG59O1xudmFyIGRlZmF1bHRIb3Jpem9udGFsQ29vcmRpbmF0ZXNHZW5lcmF0b3IgPSBmdW5jdGlvbiBkZWZhdWx0SG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yKF9yZWYyLCBzeW5jV2l0aFRpY2tzKSB7XG4gIHZhciB5QXhpcyA9IF9yZWYyLnlBeGlzLFxuICAgIHdpZHRoID0gX3JlZjIud2lkdGgsXG4gICAgaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0LFxuICAgIG9mZnNldCA9IF9yZWYyLm9mZnNldDtcbiAgcmV0dXJuIGdldENvb3JkaW5hdGVzT2ZHcmlkKGdldFRpY2tzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBDYXJ0ZXNpYW5BeGlzLmRlZmF1bHRQcm9wcyksIHlBeGlzKSwge30sIHtcbiAgICB0aWNrczogZ2V0VGlja3NPZkF4aXMoeUF4aXMsIHRydWUpLFxuICAgIHZpZXdCb3g6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICB9XG4gIH0pKSwgb2Zmc2V0LnRvcCwgb2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQsIHN5bmNXaXRoVGlja3MpO1xufTtcbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIGhvcml6b250YWw6IHRydWUsXG4gIHZlcnRpY2FsOiB0cnVlLFxuICAvLyBUaGUgb3JkaW5hdGVzIG9mIGhvcml6b250YWwgZ3JpZCBsaW5lc1xuICBob3Jpem9udGFsUG9pbnRzOiBbXSxcbiAgLy8gVGhlIGFic2Npc3NhcyBvZiB2ZXJ0aWNhbCBncmlkIGxpbmVzXG4gIHZlcnRpY2FsUG9pbnRzOiBbXSxcbiAgc3Ryb2tlOiAnI2NjYycsXG4gIGZpbGw6ICdub25lJyxcbiAgLy8gVGhlIGZpbGwgb2YgY29sb3JzIG9mIGdyaWQgbGluZXNcbiAgdmVydGljYWxGaWxsOiBbXSxcbiAgaG9yaXpvbnRhbEZpbGw6IFtdXG59O1xuZXhwb3J0IGZ1bmN0aW9uIENhcnRlc2lhbkdyaWQocHJvcHMpIHtcbiAgdmFyIF9wcm9wcyRzdHJva2UsIF9wcm9wcyRmaWxsLCBfcHJvcHMkaG9yaXpvbnRhbDMsIF9wcm9wcyRob3Jpem9udGFsRmlsbCwgX3Byb3BzJHZlcnRpY2FsMywgX3Byb3BzJHZlcnRpY2FsRmlsbDtcbiAgdmFyIGNoYXJ0V2lkdGggPSB1c2VDaGFydFdpZHRoKCk7XG4gIHZhciBjaGFydEhlaWdodCA9IHVzZUNoYXJ0SGVpZ2h0KCk7XG4gIHZhciBvZmZzZXQgPSB1c2VPZmZzZXQoKTtcbiAgdmFyIHByb3BzSW5jbHVkaW5nRGVmYXVsdHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICBzdHJva2U6IChfcHJvcHMkc3Ryb2tlID0gcHJvcHMuc3Ryb2tlKSAhPT0gbnVsbCAmJiBfcHJvcHMkc3Ryb2tlICE9PSB2b2lkIDAgPyBfcHJvcHMkc3Ryb2tlIDogZGVmYXVsdFByb3BzLnN0cm9rZSxcbiAgICBmaWxsOiAoX3Byb3BzJGZpbGwgPSBwcm9wcy5maWxsKSAhPT0gbnVsbCAmJiBfcHJvcHMkZmlsbCAhPT0gdm9pZCAwID8gX3Byb3BzJGZpbGwgOiBkZWZhdWx0UHJvcHMuZmlsbCxcbiAgICBob3Jpem9udGFsOiAoX3Byb3BzJGhvcml6b250YWwzID0gcHJvcHMuaG9yaXpvbnRhbCkgIT09IG51bGwgJiYgX3Byb3BzJGhvcml6b250YWwzICE9PSB2b2lkIDAgPyBfcHJvcHMkaG9yaXpvbnRhbDMgOiBkZWZhdWx0UHJvcHMuaG9yaXpvbnRhbCxcbiAgICBob3Jpem9udGFsRmlsbDogKF9wcm9wcyRob3Jpem9udGFsRmlsbCA9IHByb3BzLmhvcml6b250YWxGaWxsKSAhPT0gbnVsbCAmJiBfcHJvcHMkaG9yaXpvbnRhbEZpbGwgIT09IHZvaWQgMCA/IF9wcm9wcyRob3Jpem9udGFsRmlsbCA6IGRlZmF1bHRQcm9wcy5ob3Jpem9udGFsRmlsbCxcbiAgICB2ZXJ0aWNhbDogKF9wcm9wcyR2ZXJ0aWNhbDMgPSBwcm9wcy52ZXJ0aWNhbCkgIT09IG51bGwgJiYgX3Byb3BzJHZlcnRpY2FsMyAhPT0gdm9pZCAwID8gX3Byb3BzJHZlcnRpY2FsMyA6IGRlZmF1bHRQcm9wcy52ZXJ0aWNhbCxcbiAgICB2ZXJ0aWNhbEZpbGw6IChfcHJvcHMkdmVydGljYWxGaWxsID0gcHJvcHMudmVydGljYWxGaWxsKSAhPT0gbnVsbCAmJiBfcHJvcHMkdmVydGljYWxGaWxsICE9PSB2b2lkIDAgPyBfcHJvcHMkdmVydGljYWxGaWxsIDogZGVmYXVsdFByb3BzLnZlcnRpY2FsRmlsbCxcbiAgICB4OiBpc051bWJlcihwcm9wcy54KSA/IHByb3BzLnggOiBvZmZzZXQubGVmdCxcbiAgICB5OiBpc051bWJlcihwcm9wcy55KSA/IHByb3BzLnkgOiBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBpc051bWJlcihwcm9wcy53aWR0aCkgPyBwcm9wcy53aWR0aCA6IG9mZnNldC53aWR0aCxcbiAgICBoZWlnaHQ6IGlzTnVtYmVyKHByb3BzLmhlaWdodCkgPyBwcm9wcy5oZWlnaHQgOiBvZmZzZXQuaGVpZ2h0XG4gIH0pO1xuICB2YXIgeCA9IHByb3BzSW5jbHVkaW5nRGVmYXVsdHMueCxcbiAgICB5ID0gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy55LFxuICAgIHdpZHRoID0gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLmhlaWdodCxcbiAgICBzeW5jV2l0aFRpY2tzID0gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy5zeW5jV2l0aFRpY2tzLFxuICAgIGhvcml6b250YWxWYWx1ZXMgPSBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLmhvcml6b250YWxWYWx1ZXMsXG4gICAgdmVydGljYWxWYWx1ZXMgPSBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLnZlcnRpY2FsVmFsdWVzO1xuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIHNjYWxlIHByb3AgaXMgbWl4ZWQgdXAgLSB3ZSBuZWVkIHRvIHVudGFnbGUgdGhpcyBhdCBzb21lIHBvaW50XG4gIHZhciB4QXhpcyA9IHVzZUFyYml0cmFyeVhBeGlzKCk7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIHNjYWxlIHByb3AgaXMgbWl4ZWQgdXAgLSB3ZSBuZWVkIHRvIHVudGFnbGUgdGhpcyBhdCBzb21lIHBvaW50XG4gIHZhciB5QXhpcyA9IHVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tKCk7XG4gIGlmICghaXNOdW1iZXIod2lkdGgpIHx8IHdpZHRoIDw9IDAgfHwgIWlzTnVtYmVyKGhlaWdodCkgfHwgaGVpZ2h0IDw9IDAgfHwgIWlzTnVtYmVyKHgpIHx8IHggIT09ICt4IHx8ICFpc051bWJlcih5KSB8fCB5ICE9PSAreSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLypcbiAgICogdmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvciBhbmQgaG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yIGFyZSBkZWZpbmVkXG4gICAqIG91dHNpZGUgb2YgdGhlIHByb3BzSW5jbHVkaW5nRGVmYXVsdHMgYmVjYXVzZSB0aGV5IHdlcmUgbmV2ZXIgcGFydCBvZiB0aGUgb3JpZ2luYWwgcHJvcHNcbiAgICogYW5kIHRoZXkgd2VyZSBuZXZlciBwYXNzZWQgYXMgYSBwcm9wIGRvd24gdG8gaG9yaXpvbnRhbC92ZXJ0aWNhbCBjdXN0b20gZWxlbWVudHMuXG4gICAqIElmIHdlIGFkZCB0aGVzZSB0d28gdG8gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cyB0aGVuIHdlIGFyZSBjaGFuZ2luZyBwdWJsaWMgQVBJLlxuICAgKiBOb3QgYSBiYWQgdGhpbmcgcGVyIHNlIGJ1dCBhbHNvIG5vdCBuZWNlc3NhcnkuXG4gICAqL1xuICB2YXIgdmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvciA9IHByb3BzSW5jbHVkaW5nRGVmYXVsdHMudmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvciB8fCBkZWZhdWx0VmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvcjtcbiAgdmFyIGhvcml6b250YWxDb29yZGluYXRlc0dlbmVyYXRvciA9IHByb3BzSW5jbHVkaW5nRGVmYXVsdHMuaG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yIHx8IGRlZmF1bHRIb3Jpem9udGFsQ29vcmRpbmF0ZXNHZW5lcmF0b3I7XG4gIHZhciBob3Jpem9udGFsUG9pbnRzID0gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy5ob3Jpem9udGFsUG9pbnRzLFxuICAgIHZlcnRpY2FsUG9pbnRzID0gcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy52ZXJ0aWNhbFBvaW50cztcblxuICAvLyBObyBob3Jpem9udGFsIHBvaW50cyBhcmUgc3BlY2lmaWVkXG4gIGlmICgoIWhvcml6b250YWxQb2ludHMgfHwgIWhvcml6b250YWxQb2ludHMubGVuZ3RoKSAmJiBpc0Z1bmN0aW9uKGhvcml6b250YWxDb29yZGluYXRlc0dlbmVyYXRvcikpIHtcbiAgICB2YXIgaXNIb3Jpem9udGFsVmFsdWVzID0gaG9yaXpvbnRhbFZhbHVlcyAmJiBob3Jpem9udGFsVmFsdWVzLmxlbmd0aDtcbiAgICB2YXIgZ2VuZXJhdG9yUmVzdWx0ID0gaG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yKHtcbiAgICAgIHlBeGlzOiB5QXhpcyA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgeUF4aXMpLCB7fSwge1xuICAgICAgICB0aWNrczogaXNIb3Jpem9udGFsVmFsdWVzID8gaG9yaXpvbnRhbFZhbHVlcyA6IHlBeGlzLnRpY2tzXG4gICAgICB9KSA6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiBjaGFydFdpZHRoLFxuICAgICAgaGVpZ2h0OiBjaGFydEhlaWdodCxcbiAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgfSwgaXNIb3Jpem9udGFsVmFsdWVzID8gdHJ1ZSA6IHN5bmNXaXRoVGlja3MpO1xuICAgIHdhcm4oQXJyYXkuaXNBcnJheShnZW5lcmF0b3JSZXN1bHQpLCBcImhvcml6b250YWxDb29yZGluYXRlc0dlbmVyYXRvciBzaG91bGQgcmV0dXJuIEFycmF5IGJ1dCBpbnN0ZWFkIGl0IHJldHVybmVkIFtcIi5jb25jYXQoX3R5cGVvZihnZW5lcmF0b3JSZXN1bHQpLCBcIl1cIikpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGdlbmVyYXRvclJlc3VsdCkpIHtcbiAgICAgIGhvcml6b250YWxQb2ludHMgPSBnZW5lcmF0b3JSZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gTm8gdmVydGljYWwgcG9pbnRzIGFyZSBzcGVjaWZpZWRcbiAgaWYgKCghdmVydGljYWxQb2ludHMgfHwgIXZlcnRpY2FsUG9pbnRzLmxlbmd0aCkgJiYgaXNGdW5jdGlvbih2ZXJ0aWNhbENvb3JkaW5hdGVzR2VuZXJhdG9yKSkge1xuICAgIHZhciBpc1ZlcnRpY2FsVmFsdWVzID0gdmVydGljYWxWYWx1ZXMgJiYgdmVydGljYWxWYWx1ZXMubGVuZ3RoO1xuICAgIHZhciBfZ2VuZXJhdG9yUmVzdWx0ID0gdmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvcih7XG4gICAgICB4QXhpczogeEF4aXMgPyBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHhBeGlzKSwge30sIHtcbiAgICAgICAgdGlja3M6IGlzVmVydGljYWxWYWx1ZXMgPyB2ZXJ0aWNhbFZhbHVlcyA6IHhBeGlzLnRpY2tzXG4gICAgICB9KSA6IHVuZGVmaW5lZCxcbiAgICAgIHdpZHRoOiBjaGFydFdpZHRoLFxuICAgICAgaGVpZ2h0OiBjaGFydEhlaWdodCxcbiAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgfSwgaXNWZXJ0aWNhbFZhbHVlcyA/IHRydWUgOiBzeW5jV2l0aFRpY2tzKTtcbiAgICB3YXJuKEFycmF5LmlzQXJyYXkoX2dlbmVyYXRvclJlc3VsdCksIFwidmVydGljYWxDb29yZGluYXRlc0dlbmVyYXRvciBzaG91bGQgcmV0dXJuIEFycmF5IGJ1dCBpbnN0ZWFkIGl0IHJldHVybmVkIFtcIi5jb25jYXQoX3R5cGVvZihfZ2VuZXJhdG9yUmVzdWx0KSwgXCJdXCIpKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShfZ2VuZXJhdG9yUmVzdWx0KSkge1xuICAgICAgdmVydGljYWxQb2ludHMgPSBfZ2VuZXJhdG9yUmVzdWx0O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIHtcbiAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtY2FydGVzaWFuLWdyaWRcIlxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChCYWNrZ3JvdW5kLCB7XG4gICAgZmlsbDogcHJvcHNJbmNsdWRpbmdEZWZhdWx0cy5maWxsLFxuICAgIGZpbGxPcGFjaXR5OiBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLmZpbGxPcGFjaXR5LFxuICAgIHg6IHByb3BzSW5jbHVkaW5nRGVmYXVsdHMueCxcbiAgICB5OiBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLnksXG4gICAgd2lkdGg6IHByb3BzSW5jbHVkaW5nRGVmYXVsdHMud2lkdGgsXG4gICAgaGVpZ2h0OiBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLmhlaWdodFxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSG9yaXpvbnRhbEdyaWRMaW5lcywgX2V4dGVuZHMoe30sIHByb3BzSW5jbHVkaW5nRGVmYXVsdHMsIHtcbiAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICBob3Jpem9udGFsUG9pbnRzOiBob3Jpem9udGFsUG9pbnRzLFxuICAgIHhBeGlzOiB4QXhpcyxcbiAgICB5QXhpczogeUF4aXNcbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWZXJ0aWNhbEdyaWRMaW5lcywgX2V4dGVuZHMoe30sIHByb3BzSW5jbHVkaW5nRGVmYXVsdHMsIHtcbiAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICB2ZXJ0aWNhbFBvaW50czogdmVydGljYWxQb2ludHMsXG4gICAgeEF4aXM6IHhBeGlzLFxuICAgIHlBeGlzOiB5QXhpc1xuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEhvcml6b250YWxTdHJpcGVzLCBfZXh0ZW5kcyh7fSwgcHJvcHNJbmNsdWRpbmdEZWZhdWx0cywge1xuICAgIGhvcml6b250YWxQb2ludHM6IGhvcml6b250YWxQb2ludHNcbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChWZXJ0aWNhbFN0cmlwZXMsIF9leHRlbmRzKHt9LCBwcm9wc0luY2x1ZGluZ0RlZmF1bHRzLCB7XG4gICAgdmVydGljYWxQb2ludHM6IHZlcnRpY2FsUG9pbnRzXG4gIH0pKSk7XG59XG5DYXJ0ZXNpYW5HcmlkLmRpc3BsYXlOYW1lID0gJ0NhcnRlc2lhbkdyaWQnOyJdLCJuYW1lcyI6WyJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiUmVhY3QiLCJpc0Z1bmN0aW9uIiwid2FybiIsImlzTnVtYmVyIiwiZmlsdGVyUHJvcHMiLCJnZXRDb29yZGluYXRlc09mR3JpZCIsImdldFRpY2tzT2ZBeGlzIiwiZ2V0VGlja3MiLCJDYXJ0ZXNpYW5BeGlzIiwidXNlQXJiaXRyYXJ5WEF4aXMiLCJ1c2VDaGFydEhlaWdodCIsInVzZUNoYXJ0V2lkdGgiLCJ1c2VPZmZzZXQiLCJ1c2VZQXhpc1dpdGhGaW5pdGVEb21haW5PclJhbmRvbSIsIkJhY2tncm91bmQiLCJwcm9wcyIsImZpbGwiLCJmaWxsT3BhY2l0eSIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVFbGVtZW50Iiwic3Ryb2tlIiwiY2xhc3NOYW1lIiwicmVuZGVyTGluZUl0ZW0iLCJvcHRpb24iLCJsaW5lSXRlbSIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50IiwieDEiLCJ5MSIsIngyIiwieTIiLCJvdGhlcnMiLCJfZmlsdGVyUHJvcHMiLCJfXyIsIm9mZnNldCIsInJlc3RPZkZpbHRlcmVkUHJvcHMiLCJIb3Jpem9udGFsR3JpZExpbmVzIiwiX3Byb3BzJGhvcml6b250YWwiLCJob3Jpem9udGFsIiwiaG9yaXpvbnRhbFBvaW50cyIsIml0ZW1zIiwibWFwIiwiZW50cnkiLCJsaW5lSXRlbVByb3BzIiwiY29uY2F0IiwiaW5kZXgiLCJWZXJ0aWNhbEdyaWRMaW5lcyIsIl9wcm9wcyR2ZXJ0aWNhbCIsInZlcnRpY2FsIiwidmVydGljYWxQb2ludHMiLCJIb3Jpem9udGFsU3RyaXBlcyIsImhvcml6b250YWxGaWxsIiwiX3Byb3BzJGhvcml6b250YWwyIiwicm91bmRlZFNvcnRlZEhvcml6b250YWxQb2ludHMiLCJNYXRoIiwicm91bmQiLCJzb3J0IiwiYSIsImIiLCJ1bnNoaWZ0IiwibGFzdFN0cmlwZSIsImxpbmVIZWlnaHQiLCJjb2xvckluZGV4IiwiVmVydGljYWxTdHJpcGVzIiwiX3Byb3BzJHZlcnRpY2FsMiIsInZlcnRpY2FsRmlsbCIsInJvdW5kZWRTb3J0ZWRWZXJ0aWNhbFBvaW50cyIsImxpbmVXaWR0aCIsImRlZmF1bHRWZXJ0aWNhbENvb3JkaW5hdGVzR2VuZXJhdG9yIiwiX3JlZiIsInN5bmNXaXRoVGlja3MiLCJ4QXhpcyIsImRlZmF1bHRQcm9wcyIsInRpY2tzIiwidmlld0JveCIsImxlZnQiLCJkZWZhdWx0SG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yIiwiX3JlZjIiLCJ5QXhpcyIsInRvcCIsIkNhcnRlc2lhbkdyaWQiLCJfcHJvcHMkc3Ryb2tlIiwiX3Byb3BzJGZpbGwiLCJfcHJvcHMkaG9yaXpvbnRhbDMiLCJfcHJvcHMkaG9yaXpvbnRhbEZpbGwiLCJfcHJvcHMkdmVydGljYWwzIiwiX3Byb3BzJHZlcnRpY2FsRmlsbCIsImNoYXJ0V2lkdGgiLCJjaGFydEhlaWdodCIsInByb3BzSW5jbHVkaW5nRGVmYXVsdHMiLCJob3Jpem9udGFsVmFsdWVzIiwidmVydGljYWxWYWx1ZXMiLCJ2ZXJ0aWNhbENvb3JkaW5hdGVzR2VuZXJhdG9yIiwiaG9yaXpvbnRhbENvb3JkaW5hdGVzR2VuZXJhdG9yIiwiaXNIb3Jpem9udGFsVmFsdWVzIiwiZ2VuZXJhdG9yUmVzdWx0IiwidW5kZWZpbmVkIiwiQXJyYXkiLCJpc0FycmF5IiwiaXNWZXJ0aWNhbFZhbHVlcyIsIl9nZW5lcmF0b3JSZXN1bHQiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/CartesianGrid.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ErrorBar.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ErrorBar: () => (/* binding */ ErrorBar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"offset\",\n \"layout\",\n \"width\",\n \"dataKey\",\n \"data\",\n \"dataPointFormatter\",\n \"xAxis\",\n \"yAxis\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Render a group of error bar\n */ \n\n\n\nfunction ErrorBar(props) {\n var offset = props.offset, layout = props.layout, width = props.width, dataKey = props.dataKey, data = props.data, dataPointFormatter = props.dataPointFormatter, xAxis = props.xAxis, yAxis = props.yAxis, others = _objectWithoutProperties(props, _excluded);\n var svgProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, false);\n !!(props.direction === \"x\" && xAxis.type !== \"number\") ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'ErrorBar requires Axis type property to be \"number\".') : 0 : void 0;\n var errorBars = data.map(function(entry) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey), x = _dataPointFormatter.x, y = _dataPointFormatter.y, value = _dataPointFormatter.value, errorVal = _dataPointFormatter.errorVal;\n if (!errorVal) {\n return null;\n }\n var lineCoordinates = [];\n var lowBound, highBound;\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n if (layout === \"vertical\") {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound);\n // the right line of |--|\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n });\n // the middle line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n });\n // the left line of |--|\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === \"horizontal\") {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n var _xMin = xMid - width;\n var _xMax = xMid + width;\n var _yMin = _scale(value - lowBound);\n var _yMax = _scale(value + highBound);\n // the top line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n });\n // the middle line\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n });\n // the bottom line\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_3__.Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(lineCoordinates.map(function(c) {\n return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n }))\n }, svgProps), lineCoordinates.map(function(coordinates) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n }));\n }));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_3__.Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: \"black\",\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: \"horizontal\"\n};\nErrorBar.displayName = \"ErrorBar\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9FcnJvckJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7SUFBVTtJQUFVO0lBQVM7SUFBVztJQUFRO0lBQXNCO0lBQVM7Q0FBUTtBQUN4RyxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFYsU0FBU1EsZUFBZUMsR0FBRyxFQUFFVixDQUFDO0lBQUksT0FBT1csZ0JBQWdCRCxRQUFRRSxzQkFBc0JGLEtBQUtWLE1BQU1hLDRCQUE0QkgsS0FBS1YsTUFBTWM7QUFBb0I7QUFDN0osU0FBU0E7SUFBcUIsTUFBTSxJQUFJQyxVQUFVO0FBQThJO0FBQ2hNLFNBQVNGLDRCQUE0QkcsQ0FBQyxFQUFFQyxNQUFNO0lBQUksSUFBSSxDQUFDRCxHQUFHO0lBQVEsSUFBSSxPQUFPQSxNQUFNLFVBQVUsT0FBT0Usa0JBQWtCRixHQUFHQztJQUFTLElBQUlFLElBQUl2QixPQUFPUyxTQUFTLENBQUNlLFFBQVEsQ0FBQ2IsSUFBSSxDQUFDUyxHQUFHSyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUYsTUFBTSxZQUFZSCxFQUFFTSxXQUFX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QUNFLG1EQUFLQSxFQUFFO1FBQzdDNkMsV0FBVztJQUNiLEdBQUc1QjtBQUNMO0FBQ0FmLFNBQVMrQyxZQUFZLEdBQUc7SUFDdEJDLFFBQVE7SUFDUkMsYUFBYTtJQUNiN0MsT0FBTztJQUNQRixRQUFRO0lBQ1JDLFFBQVE7QUFDVjtBQUNBSCxTQUFTa0QsV0FBVyxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL0Vycm9yQmFyLmpzPzM3MjUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcIm9mZnNldFwiLCBcImxheW91dFwiLCBcIndpZHRoXCIsIFwiZGF0YUtleVwiLCBcImRhdGFcIiwgXCJkYXRhUG9pbnRGb3JtYXR0ZXJcIiwgXCJ4QXhpc1wiLCBcInlBeGlzXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlbmRlciBhIGdyb3VwIG9mIGVycm9yIGJhclxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICd0aW55LWludmFyaWFudCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5leHBvcnQgZnVuY3Rpb24gRXJyb3JCYXIocHJvcHMpIHtcbiAgdmFyIG9mZnNldCA9IHByb3BzLm9mZnNldCxcbiAgICBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBkYXRhS2V5ID0gcHJvcHMuZGF0YUtleSxcbiAgICBkYXRhID0gcHJvcHMuZGF0YSxcbiAgICBkYXRhUG9pbnRGb3JtYXR0ZXIgPSBwcm9wcy5kYXRhUG9pbnRGb3JtYXR0ZXIsXG4gICAgeEF4aXMgPSBwcm9wcy54QXhpcyxcbiAgICB5QXhpcyA9IHByb3BzLnlBeGlzLFxuICAgIG90aGVycyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgdmFyIHN2Z1Byb3BzID0gZmlsdGVyUHJvcHMob3RoZXJzLCBmYWxzZSk7XG4gICEhKHByb3BzLmRpcmVjdGlvbiA9PT0gJ3gnICYmIHhBeGlzLnR5cGUgIT09ICdudW1iZXInKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Vycm9yQmFyIHJlcXVpcmVzIEF4aXMgdHlwZSBwcm9wZXJ0eSB0byBiZSBcIm51bWJlclwiLicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgdmFyIGVycm9yQmFycyA9IGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZhciBfZGF0YVBvaW50Rm9ybWF0dGVyID0gZGF0YVBvaW50Rm9ybWF0dGVyKGVudHJ5LCBkYXRhS2V5KSxcbiAgICAgIHggPSBfZGF0YVBvaW50Rm9ybWF0dGVyLngsXG4gICAgICB5ID0gX2RhdGFQb2ludEZvcm1hdHRlci55LFxuICAgICAgdmFsdWUgPSBfZGF0YVBvaW50Rm9ybWF0dGVyLnZhbHVlLFxuICAgICAgZXJyb3JWYWwgPSBfZGF0YVBvaW50Rm9ybWF0dGVyLmVycm9yVmFsO1xuICAgIGlmICghZXJyb3JWYWwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgbGluZUNvb3JkaW5hdGVzID0gW107XG4gICAgdmFyIGxvd0JvdW5kLCBoaWdoQm91bmQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JWYWwpKSB7XG4gICAgICB2YXIgX2Vycm9yVmFsID0gX3NsaWNlZFRvQXJyYXkoZXJyb3JWYWwsIDIpO1xuICAgICAgbG93Qm91bmQgPSBfZXJyb3JWYWxbMF07XG4gICAgICBoaWdoQm91bmQgPSBfZXJyb3JWYWxbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvd0JvdW5kID0gaGlnaEJvdW5kID0gZXJyb3JWYWw7XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIC8vIGVycm9yIGJhciBmb3IgaG9yaXpvbnRhbCBjaGFydHMsIHRoZSB5IGlzIGZpeGVkLCB4IGlzIGEgcmFuZ2UgdmFsdWVcbiAgICAgIHZhciBzY2FsZSA9IHhBeGlzLnNjYWxlO1xuICAgICAgdmFyIHlNaWQgPSB5ICsgb2Zmc2V0O1xuICAgICAgdmFyIHlNaW4gPSB5TWlkICsgd2lkdGg7XG4gICAgICB2YXIgeU1heCA9IHlNaWQgLSB3aWR0aDtcbiAgICAgIHZhciB4TWluID0gc2NhbGUodmFsdWUgLSBsb3dCb3VuZCk7XG4gICAgICB2YXIgeE1heCA9IHNjYWxlKHZhbHVlICsgaGlnaEJvdW5kKTtcblxuICAgICAgLy8gdGhlIHJpZ2h0IGxpbmUgb2YgfC0tfFxuICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICB4MTogeE1heCxcbiAgICAgICAgeTE6IHlNaW4sXG4gICAgICAgIHgyOiB4TWF4LFxuICAgICAgICB5MjogeU1heFxuICAgICAgfSk7XG4gICAgICAvLyB0aGUgbWlkZGxlIGxpbmUgb2YgfC0tfFxuICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICB4MTogeE1pbixcbiAgICAgICAgeTE6IHlNaWQsXG4gICAgICAgIHgyOiB4TWF4LFxuICAgICAgICB5MjogeU1pZFxuICAgICAgfSk7XG4gICAgICAvLyB0aGUgbGVmdCBsaW5lIG9mIHwtLXxcbiAgICAgIGxpbmVDb29yZGluYXRlcy5wdXNoKHtcbiAgICAgICAgeDE6IHhNaW4sXG4gICAgICAgIHkxOiB5TWluLFxuICAgICAgICB4MjogeE1pbixcbiAgICAgICAgeTI6IHlNYXhcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIC8vIGVycm9yIGJhciBmb3IgaG9yaXpvbnRhbCBjaGFydHMsIHRoZSB4IGlzIGZpeGVkLCB5IGlzIGEgcmFuZ2UgdmFsdWVcbiAgICAgIHZhciBfc2NhbGUgPSB5QXhpcy5zY2FsZTtcbiAgICAgIHZhciB4TWlkID0geCArIG9mZnNldDtcbiAgICAgIHZhciBfeE1pbiA9IHhNaWQgLSB3aWR0aDtcbiAgICAgIHZhciBfeE1heCA9IHhNaWQgKyB3aWR0aDtcbiAgICAgIHZhciBfeU1pbiA9IF9zY2FsZSh2YWx1ZSAtIGxvd0JvdW5kKTtcbiAgICAgIHZhciBfeU1heCA9IF9zY2FsZSh2YWx1ZSArIGhpZ2hCb3VuZCk7XG5cbiAgICAgIC8vIHRoZSB0b3AgbGluZVxuICAgICAgbGluZUNvb3JkaW5hdGVzLnB1c2goe1xuICAgICAgICB4MTogX3hNaW4sXG4gICAgICAgIHkxOiBfeU1heCxcbiAgICAgICAgeDI6IF94TWF4LFxuICAgICAgICB5MjogX3lNYXhcbiAgICAgIH0pO1xuICAgICAgLy8gdGhlIG1pZGRsZSBsaW5lXG4gICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgIHgxOiB4TWlkLFxuICAgICAgICB5MTogX3lNaW4sXG4gICAgICAgIHgyOiB4TWlkLFxuICAgICAgICB5MjogX3lNYXhcbiAgICAgIH0pO1xuICAgICAgLy8gdGhlIGJvdHRvbSBsaW5lXG4gICAgICBsaW5lQ29vcmRpbmF0ZXMucHVzaCh7XG4gICAgICAgIHgxOiBfeE1pbixcbiAgICAgICAgeTE6IF95TWluLFxuICAgICAgICB4MjogX3hNYXgsXG4gICAgICAgIHkyOiBfeU1pblxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwgX2V4dGVuZHMoe1xuICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWVycm9yQmFyXCIsXG4gICAgICBrZXk6IFwiYmFyLVwiLmNvbmNhdChsaW5lQ29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChjLngxLCBcIi1cIikuY29uY2F0KGMueDIsIFwiLVwiKS5jb25jYXQoYy55MSwgXCItXCIpLmNvbmNhdChjLnkyKTtcbiAgICAgIH0pKVxuICAgIH0sIHN2Z1Byb3BzKSwgbGluZUNvb3JkaW5hdGVzLm1hcChmdW5jdGlvbiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIGNvb3JkaW5hdGVzLCB7XG4gICAgICAgIGtleTogXCJsaW5lLVwiLmNvbmNhdChjb29yZGluYXRlcy54MSwgXCItXCIpLmNvbmNhdChjb29yZGluYXRlcy54MiwgXCItXCIpLmNvbmNhdChjb29yZGluYXRlcy55MSwgXCItXCIpLmNvbmNhdChjb29yZGluYXRlcy55MilcbiAgICAgIH0pKTtcbiAgICB9KSk7XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtZXJyb3JCYXJzXCJcbiAgfSwgZXJyb3JCYXJzKTtcbn1cbkVycm9yQmFyLmRlZmF1bHRQcm9wcyA9IHtcbiAgc3Ryb2tlOiAnYmxhY2snLFxuICBzdHJva2VXaWR0aDogMS41LFxuICB3aWR0aDogNSxcbiAgb2Zmc2V0OiAwLFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJ1xufTtcbkVycm9yQmFyLmRpc3BsYXlOYW1lID0gJ0Vycm9yQmFyJzsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsImtleXMiLCJSZWFjdCIsImludmFyaWFudCIsIkxheWVyIiwiZmlsdGVyUHJvcHMiLCJFcnJvckJhciIsInByb3BzIiwib2Zmc2V0IiwibGF5b3V0Iiwid2lkdGgiLCJkYXRhS2V5IiwiZGF0YSIsImRhdGFQb2ludEZvcm1hdHRlciIsInhBeGlzIiwieUF4aXMiLCJvdGhlcnMiLCJzdmdQcm9wcyIsImRpcmVjdGlvbiIsInR5cGUiLCJwcm9jZXNzIiwiZXJyb3JCYXJzIiwibWFwIiwiZW50cnkiLCJfZGF0YVBvaW50Rm9ybWF0dGVyIiwieCIsInkiLCJlcnJvclZhbCIsImxpbmVDb29yZGluYXRlcyIsImxvd0JvdW5kIiwiaGlnaEJvdW5kIiwiX2Vycm9yVmFsIiwic2NhbGUiLCJ5TWlkIiwieU1pbiIsInlNYXgiLCJ4TWluIiwieE1heCIsIngxIiwieTEiLCJ4MiIsInkyIiwiX3NjYWxlIiwieE1pZCIsIl94TWluIiwiX3hNYXgiLCJfeU1pbiIsIl95TWF4IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsImMiLCJjb29yZGluYXRlcyIsImRlZmF1bHRQcm9wcyIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZGlzcGxheU5hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceArea.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceArea: () => (/* binding */ ReferenceArea)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Reference Line\n */ \n\n\n\n\n\n\n\n\n\n\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n var xValue1 = props.x1, xValue2 = props.x2, yValue1 = props.y1, yValue2 = props.y2, xAxis = props.xAxis, yAxis = props.yAxis;\n if (!xAxis || !yAxis) return null;\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scales.x.apply(xValue1, {\n position: \"start\"\n }) : scales.x.rangeMin,\n y: hasY1 ? scales.y.apply(yValue1, {\n position: \"start\"\n }) : scales.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scales.x.apply(xValue2, {\n position: \"end\"\n }) : scales.x.rangeMax,\n y: hasY2 ? scales.y.apply(yValue2, {\n position: \"end\"\n }) : scales.y.rangeMax\n };\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"discard\") && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n return null;\n }\n return (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.rectWithPoints)(p1, p2);\n};\nfunction ReferenceArea(props) {\n var x1 = props.x1, x2 = props.x2, y1 = props.y1, y2 = props.y2, className = props.className, alwaysShow = props.alwaysShow, clipPathId = props.clipPathId;\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_5__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(x1);\n var hasX2 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(x2);\n var hasY1 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(y1);\n var hasY2 = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_6__.isNumOrStr)(y2);\n var shape = props.shape;\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n var rect = getRect(hasX1, hasX2, hasY1, hasY2, props);\n if (!rect && !shape) {\n return null;\n }\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"hidden\") ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_7__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"recharts-reference-area\", className)\n }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(props, true)), rect)), _component_Label__WEBPACK_IMPORTED_MODULE_9__.Label.renderCallByParent(props, rect));\n}\nReferenceArea.displayName = \"ReferenceArea\";\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: \"discard\",\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: \"#ccc\",\n fillOpacity: 0.5,\n stroke: \"none\",\n strokeWidth: 1\n};\nReferenceArea.renderRect = function(option, props) {\n var rect;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n rect = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n rect = option(props);\n } else {\n rect = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Rectangle__WEBPACK_IMPORTED_MODULE_10__.Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n return rect;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VBcmVhLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixDQUFBQSxJQUFJQSxFQUFF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ckVzQixXQUFXO1FBQ2I7SUFDRjtJQUNBLE9BQU9LO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vUmVmZXJlbmNlQXJlYS5qcz9mNTJjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVmZXJlbmNlIExpbmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgY3JlYXRlTGFiZWxlZFNjYWxlcywgcmVjdFdpdGhQb2ludHMgfSBmcm9tICcuLi91dGlsL0NhcnRlc2lhblV0aWxzJztcbmltcG9ydCB7IGlmT3ZlcmZsb3dNYXRjaGVzIH0gZnJvbSAnLi4vdXRpbC9JZk92ZXJmbG93TWF0Y2hlcyc7XG5pbXBvcnQgeyBpc051bU9yU3RyIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vc2hhcGUvUmVjdGFuZ2xlJztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbnZhciBnZXRSZWN0ID0gZnVuY3Rpb24gZ2V0UmVjdChoYXNYMSwgaGFzWDIsIGhhc1kxLCBoYXNZMiwgcHJvcHMpIHtcbiAgdmFyIHhWYWx1ZTEgPSBwcm9wcy54MSxcbiAgICB4VmFsdWUyID0gcHJvcHMueDIsXG4gICAgeVZhbHVlMSA9IHByb3BzLnkxLFxuICAgIHlWYWx1ZTIgPSBwcm9wcy55MixcbiAgICB4QXhpcyA9IHByb3BzLnhBeGlzLFxuICAgIHlBeGlzID0gcHJvcHMueUF4aXM7XG4gIGlmICgheEF4aXMgfHwgIXlBeGlzKSByZXR1cm4gbnVsbDtcbiAgdmFyIHNjYWxlcyA9IGNyZWF0ZUxhYmVsZWRTY2FsZXMoe1xuICAgIHg6IHhBeGlzLnNjYWxlLFxuICAgIHk6IHlBeGlzLnNjYWxlXG4gIH0pO1xuICB2YXIgcDEgPSB7XG4gICAgeDogaGFzWDEgPyBzY2FsZXMueC5hcHBseSh4VmFsdWUxLCB7XG4gICAgICBwb3NpdGlvbjogJ3N0YXJ0J1xuICAgIH0pIDogc2NhbGVzLngucmFuZ2VNaW4sXG4gICAgeTogaGFzWTEgPyBzY2FsZXMueS5hcHBseSh5VmFsdWUxLCB7XG4gICAgICBwb3NpdGlvbjogJ3N0YXJ0J1xuICAgIH0pIDogc2NhbGVzLnkucmFuZ2VNaW5cbiAgfTtcbiAgdmFyIHAyID0ge1xuICAgIHg6IGhhc1gyID8gc2NhbGVzLnguYXBwbHkoeFZhbHVlMiwge1xuICAgICAgcG9zaXRpb246ICdlbmQnXG4gICAgfSkgOiBzY2FsZXMueC5yYW5nZU1heCxcbiAgICB5OiBoYXNZMiA/IHNjYWxlcy55LmFwcGx5KHlWYWx1ZTIsIHtcbiAgICAgIHBvc2l0aW9uOiAnZW5kJ1xuICAgIH0pIDogc2NhbGVzLnkucmFuZ2VNYXhcbiAgfTtcbiAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICghc2NhbGVzLmlzSW5SYW5nZShwMSkgfHwgIXNjYWxlcy5pc0luUmFuZ2UocDIpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiByZWN0V2l0aFBvaW50cyhwMSwgcDIpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBSZWZlcmVuY2VBcmVhKHByb3BzKSB7XG4gIHZhciB4MSA9IHByb3BzLngxLFxuICAgIHgyID0gcHJvcHMueDIsXG4gICAgeTEgPSBwcm9wcy55MSxcbiAgICB5MiA9IHByb3BzLnkyLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBhbHdheXNTaG93ID0gcHJvcHMuYWx3YXlzU2hvdyxcbiAgICBjbGlwUGF0aElkID0gcHJvcHMuY2xpcFBhdGhJZDtcbiAgd2FybihhbHdheXNTaG93ID09PSB1bmRlZmluZWQsICdUaGUgYWx3YXlzU2hvdyBwcm9wIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgaWZPdmVyZmxvdz1cImV4dGVuZERvbWFpblwiIGluc3RlYWQuJyk7XG4gIHZhciBoYXNYMSA9IGlzTnVtT3JTdHIoeDEpO1xuICB2YXIgaGFzWDIgPSBpc051bU9yU3RyKHgyKTtcbiAgdmFyIGhhc1kxID0gaXNOdW1PclN0cih5MSk7XG4gIHZhciBoYXNZMiA9IGlzTnVtT3JTdHIoeTIpO1xuICB2YXIgc2hhcGUgPSBwcm9wcy5zaGFwZTtcbiAgaWYgKCFoYXNYMSAmJiAhaGFzWDIgJiYgIWhhc1kxICYmICFoYXNZMiAmJiAhc2hhcGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgcmVjdCA9IGdldFJlY3QoaGFzWDEsIGhhc1gyLCBoYXNZMSwgaGFzWTIsIHByb3BzKTtcbiAgaWYgKCFyZWN0ICYmICFzaGFwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBjbGlwUGF0aCA9IGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnaGlkZGVuJykgPyBcInVybCgjXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1yZWZlcmVuY2UtYXJlYScsIGNsYXNzTmFtZSlcbiAgfSwgUmVmZXJlbmNlQXJlYS5yZW5kZXJSZWN0KHNoYXBlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIGNsaXBQYXRoOiBjbGlwUGF0aFxuICB9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSkpLCByZWN0KSksIExhYmVsLnJlbmRlckNhbGxCeVBhcmVudChwcm9wcywgcmVjdCkpO1xufVxuUmVmZXJlbmNlQXJlYS5kaXNwbGF5TmFtZSA9ICdSZWZlcmVuY2VBcmVhJztcblJlZmVyZW5jZUFyZWEuZGVmYXVsdFByb3BzID0ge1xuICBpc0Zyb250OiBmYWxzZSxcbiAgaWZPdmVyZmxvdzogJ2Rpc2NhcmQnLFxuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICByOiAxMCxcbiAgZmlsbDogJyNjY2MnLFxuICBmaWxsT3BhY2l0eTogMC41LFxuICBzdHJva2U6ICdub25lJyxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5SZWZlcmVuY2VBcmVhLnJlbmRlclJlY3QgPSBmdW5jdGlvbiAob3B0aW9uLCBwcm9wcykge1xuICB2YXIgcmVjdDtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIHJlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIHJlY3QgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIHJlY3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWN0YW5nbGUsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXJlZmVyZW5jZS1hcmVhLXJlY3RcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gcmVjdDtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIk51bWJlciIsIlJlYWN0IiwiaXNGdW5jdGlvbiIsImNsc3giLCJMYXllciIsIkxhYmVsIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsInJlY3RXaXRoUG9pbnRzIiwiaWZPdmVyZmxvd01hdGNoZXMiLCJpc051bU9yU3RyIiwid2FybiIsIlJlY3RhbmdsZSIsImZpbHRlclByb3BzIiwiZ2V0UmVjdCIsImhhc1gxIiwiaGFzWDIiLCJoYXNZMSIsImhhc1kyIiwicHJvcHMiLCJ4VmFsdWUxIiwieDEiLCJ4VmFsdWUyIiwieDIiLCJ5VmFsdWUxIiwieTEiLCJ5VmFsdWUyIiwieTIiLCJ4QXhpcyIsInlBeGlzIiwic2NhbGVzIiwieCIsInNjYWxlIiwieSIsInAxIiwicG9zaXRpb24iLCJyYW5nZU1pbiIsInAyIiwicmFuZ2VNYXgiLCJpc0luUmFuZ2UiLCJSZWZlcmVuY2VBcmVhIiwiY2xhc3NOYW1lIiwiYWx3YXlzU2hvdyIsImNsaXBQYXRoSWQiLCJ1bmRlZmluZWQiLCJzaGFwZSIsInJlY3QiLCJjbGlwUGF0aCIsImNvbmNhdCIsImNyZWF0ZUVsZW1lbnQiLCJyZW5kZXJSZWN0IiwicmVuZGVyQ2FsbEJ5UGFyZW50IiwiZGlzcGxheU5hbWUiLCJkZWZhdWx0UHJvcHMiLCJpc0Zyb250IiwiaWZPdmVyZmxvdyIsInhBeGlzSWQiLCJ5QXhpc0lkIiwiZmlsbCIsImZpbGxPcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJvcHRpb24iLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceDot.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceDot: () => (/* binding */ ReferenceDot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Reference Dot\n */ \n\n\n\n\n\n\n\n\n\n\nvar getCoordinate = function getCoordinate(props) {\n var x = props.x, y = props.y, xAxis = props.xAxis, yAxis = props.yAxis;\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_3__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"discard\") && !scales.isInRange(result)) {\n return null;\n }\n return result;\n};\nfunction ReferenceDot(props) {\n var x = props.x, y = props.y, r = props.r, alwaysShow = props.alwaysShow, clipPathId = props.clipPathId;\n var isX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(x);\n var isY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(y);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_6__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n if (!isX || !isY) {\n return null;\n }\n var coordinate = getCoordinate(props);\n if (!coordinate) {\n return null;\n }\n var cx = coordinate.x, cy = coordinate.y;\n var shape = props.shape, className = props.className;\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"hidden\") ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var dotProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(props, true)), {}, {\n cx: cx,\n cy: cy\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_8__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"recharts-reference-dot\", className)\n }, ReferenceDot.renderDot(shape, dotProps), _component_Label__WEBPACK_IMPORTED_MODULE_9__.Label.renderCallByParent(props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n}\nReferenceDot.displayName = \"ReferenceDot\";\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: \"discard\",\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: \"#fff\",\n stroke: \"#ccc\",\n fillOpacity: 1,\n strokeWidth: 1\n};\nReferenceDot.renderDot = function(option, props) {\n var dot;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_10__.Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n return dot;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VEb3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3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QyxTQUFTO0lBQ1RDLFlBQVk7SUFDWkMsU0FBUztJQUNUQyxTQUFTO0lBQ1R0RSxHQUFHO0lBQ0h1RSxNQUFNO0lBQ05DLFFBQVE7SUFDUkMsYUFBYTtJQUNiQyxhQUFhO0FBQ2Y7QUFDQTVCLGFBQWFlLFNBQVMsR0FBRyxTQUFVYyxNQUFNLEVBQUV2QyxLQUFLO0lBQzlDLElBQUl3QztJQUNKLElBQUssV0FBVyxHQUFFcEQsMkRBQW9CLENBQUNtRCxTQUFTO1FBQzlDQyxNQUFNLFdBQVcsR0FBRXBELHlEQUFrQixDQUFDbUQsUUFBUXZDO0lBQ2hELE9BQU8sSUFBSVgsd0RBQVVBLENBQUNrRCxTQUFTO1FBQzdCQyxNQUFNRCxPQUFPdkM7SUFDZixPQUFPO1FBQ0x3QyxNQUFNLFdBQVcsR0FBRXBELDBEQUFtQixDQUFDSSw0Q0FBR0EsRUFBRTNDLFNBQVMsQ0FBQyxHQUFHbUQsT0FBTztZQUM5RGlCLElBQUlqQixNQUFNaUIsRUFBRTtZQUNaQyxJQUFJbEIsTUFBTWtCLEVBQUU7WUFDWkUsV0FBVztRQUNiO0lBQ0Y7SUFDQSxPQUFPb0I7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VEb3QuanM/MjhlNyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlZmVyZW5jZSBEb3RcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgRG90IH0gZnJvbSAnLi4vc2hhcGUvRG90JztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi4vY29tcG9uZW50L0xhYmVsJztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBpZk92ZXJmbG93TWF0Y2hlcyB9IGZyb20gJy4uL3V0aWwvSWZPdmVyZmxvd01hdGNoZXMnO1xuaW1wb3J0IHsgY3JlYXRlTGFiZWxlZFNjYWxlcyB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGdldENvb3JkaW5hdGUgPSBmdW5jdGlvbiBnZXRDb29yZGluYXRlKHByb3BzKSB7XG4gIHZhciB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICB4QXhpcyA9IHByb3BzLnhBeGlzLFxuICAgIHlBeGlzID0gcHJvcHMueUF4aXM7XG4gIHZhciBzY2FsZXMgPSBjcmVhdGVMYWJlbGVkU2NhbGVzKHtcbiAgICB4OiB4QXhpcy5zY2FsZSxcbiAgICB5OiB5QXhpcy5zY2FsZVxuICB9KTtcbiAgdmFyIHJlc3VsdCA9IHNjYWxlcy5hcHBseSh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0sIHtcbiAgICBiYW5kQXdhcmU6IHRydWVcbiAgfSk7XG4gIGlmIChpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2Rpc2NhcmQnKSAmJiAhc2NhbGVzLmlzSW5SYW5nZShyZXN1bHQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZnVuY3Rpb24gUmVmZXJlbmNlRG90KHByb3BzKSB7XG4gIHZhciB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICByID0gcHJvcHMucixcbiAgICBhbHdheXNTaG93ID0gcHJvcHMuYWx3YXlzU2hvdyxcbiAgICBjbGlwUGF0aElkID0gcHJvcHMuY2xpcFBhdGhJZDtcbiAgdmFyIGlzWCA9IGlzTnVtT3JTdHIoeCk7XG4gIHZhciBpc1kgPSBpc051bU9yU3RyKHkpO1xuICB3YXJuKGFsd2F5c1Nob3cgPT09IHVuZGVmaW5lZCwgJ1RoZSBhbHdheXNTaG93IHByb3AgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBpZk92ZXJmbG93PVwiZXh0ZW5kRG9tYWluXCIgaW5zdGVhZC4nKTtcbiAgaWYgKCFpc1ggfHwgIWlzWSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBjb29yZGluYXRlID0gZ2V0Q29vcmRpbmF0ZShwcm9wcyk7XG4gIGlmICghY29vcmRpbmF0ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBjeCA9IGNvb3JkaW5hdGUueCxcbiAgICBjeSA9IGNvb3JkaW5hdGUueTtcbiAgdmFyIHNoYXBlID0gcHJvcHMuc2hhcGUsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICB2YXIgY2xpcFBhdGggPSBpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2hpZGRlbicpID8gXCJ1cmwoI1wiLmNvbmNhdChjbGlwUGF0aElkLCBcIilcIikgOiB1bmRlZmluZWQ7XG4gIHZhciBkb3RQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgY2xpcFBhdGg6IGNsaXBQYXRoXG4gIH0sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSksIHt9LCB7XG4gICAgY3g6IGN4LFxuICAgIGN5OiBjeVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1yZWZlcmVuY2UtZG90JywgY2xhc3NOYW1lKVxuICB9LCBSZWZlcmVuY2VEb3QucmVuZGVyRG90KHNoYXBlLCBkb3RQcm9wcyksIExhYmVsLnJlbmRlckNhbGxCeVBhcmVudChwcm9wcywge1xuICAgIHg6IGN4IC0gcixcbiAgICB5OiBjeSAtIHIsXG4gICAgd2lkdGg6IDIgKiByLFxuICAgIGhlaWdodDogMiAqIHJcbiAgfSkpO1xufVxuUmVmZXJlbmNlRG90LmRpc3BsYXlOYW1lID0gJ1JlZmVyZW5jZURvdCc7XG5SZWZlcmVuY2VEb3QuZGVmYXVsdFByb3BzID0ge1xuICBpc0Zyb250OiBmYWxzZSxcbiAgaWZPdmVyZmxvdzogJ2Rpc2NhcmQnLFxuICB4QXhpc0lkOiAwLFxuICB5QXhpc0lkOiAwLFxuICByOiAxMCxcbiAgZmlsbDogJyNmZmYnLFxuICBzdHJva2U6ICcjY2NjJyxcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxXG59O1xuUmVmZXJlbmNlRG90LnJlbmRlckRvdCA9IGZ1bmN0aW9uIChvcHRpb24sIHByb3BzKSB7XG4gIHZhciBkb3Q7XG4gIGlmICggLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICBkb3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIGRvdCA9IG9wdGlvbihwcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgZG90ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRG90LCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgIGN4OiBwcm9wcy5jeCxcbiAgICAgIGN5OiBwcm9wcy5jeSxcbiAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1yZWZlcmVuY2UtZG90LWRvdFwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBkb3Q7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJSZWFjdCIsImlzRnVuY3Rpb24iLCJjbHN4IiwiTGF5ZXIiLCJEb3QiLCJMYWJlbCIsImlzTnVtT3JTdHIiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImNyZWF0ZUxhYmVsZWRTY2FsZXMiLCJ3YXJuIiwiZmlsdGVyUHJvcHMiLCJnZXRDb29yZGluYXRlIiwicHJvcHMiLCJ4IiwieSIsInhBeGlzIiwieUF4aXMiLCJzY2FsZXMiLCJzY2FsZSIsInJlc3VsdCIsImJhbmRBd2FyZSIsImlzSW5SYW5nZSIsIlJlZmVyZW5jZURvdCIsImFsd2F5c1Nob3ciLCJjbGlwUGF0aElkIiwiaXNYIiwiaXNZIiwidW5kZWZpbmVkIiwiY29vcmRpbmF0ZSIsImN4IiwiY3kiLCJzaGFwZSIsImNsYXNzTmFtZSIsImNsaXBQYXRoIiwiY29uY2F0IiwiZG90UHJvcHMiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyRG90IiwicmVuZGVyQ2FsbEJ5UGFyZW50Iiwid2lkdGgiLCJoZWlnaHQiLCJkaXNwbGF5TmFtZSIsImRlZmF1bHRQcm9wcyIsImlzRnJvbnQiLCJpZk92ZXJmbG93IiwieEF4aXNJZCIsInlBeGlzSWQiLCJmaWxsIiwic3Ryb2tlIiwiZmlsbE9wYWNpdHkiLCJzdHJva2VXaWR0aCIsIm9wdGlvbiIsImRvdCIsImlzVmFsaWRFbGVtZW50IiwiY2xvbmVFbGVtZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js":
/*!**************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/ReferenceLine.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReferenceLine: () => (/* binding */ ReferenceLine),\n/* harmony export */ getEndPoints: () => (/* binding */ getEndPoints)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/some */ \"(ssr)/./node_modules/lodash/some.js\");\n/* harmony import */ var lodash_some__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_some__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Label__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../component/Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Reference Line\n */ \n\n\n\n\n\n\n\n\n\n\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n * - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */ var renderLine = function renderLine(option, props) {\n var line;\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(option)) {\n line = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n line = option(props);\n } else {\n line = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n return line;\n};\n// TODO: ScaleHelper\nvar getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n var x = viewBox.x, y = viewBox.y, width = viewBox.width, height = viewBox.height;\n if (isFixedY) {\n var yCoord = props.y;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"discard\") && !scales.y.isInRange(coord)) {\n return null;\n }\n var points = [\n {\n x: x + width,\n y: coord\n },\n {\n x: x,\n y: coord\n }\n ];\n return yAxisOrientation === \"left\" ? points.reverse() : points;\n }\n if (isFixedX) {\n var xCoord = props.x;\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"discard\") && !scales.x.isInRange(_coord)) {\n return null;\n }\n var _points = [\n {\n x: _coord,\n y: y + height\n },\n {\n x: _coord,\n y: y\n }\n ];\n return xAxisOrientation === \"top\" ? _points.reverse() : _points;\n }\n if (isSegment) {\n var segment = props.segment;\n var _points2 = segment.map(function(p) {\n return scales.apply(p, {\n position: position\n });\n });\n if ((0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"discard\") && lodash_some__WEBPACK_IMPORTED_MODULE_2___default()(_points2, function(p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n return _points2;\n }\n return null;\n};\nfunction ReferenceLine(props) {\n var fixedX = props.x, fixedY = props.y, segment = props.segment, xAxisId = props.xAxisId, yAxisId = props.yAxisId, shape = props.shape, className = props.className, alwaysShow = props.alwaysShow;\n var clipPathId = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useClipPathId)();\n var xAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useXAxisOrThrow)(xAxisId);\n var yAxis = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useYAxisOrThrow)(yAxisId);\n var viewBox = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_5__.useViewBox)();\n if (!clipPathId || !viewBox) {\n return null;\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_6__.warn)(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__.createLabeledScales)({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_8__.isNumOrStr)(fixedX);\n var isY = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_8__.isNumOrStr)(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n if (!endPoints) {\n return null;\n }\n var _endPoints = _slicedToArray(endPoints, 2), _endPoints$ = _endPoints[0], x1 = _endPoints$.x, y1 = _endPoints$.y, _endPoints$2 = _endPoints[1], x2 = _endPoints$2.x, y2 = _endPoints$2.y;\n var clipPath = (0,_util_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(props, \"hidden\") ? \"url(#\".concat(clipPathId, \")\") : undefined;\n var lineProps = _objectSpread(_objectSpread({\n clipPath: clipPath\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__.filterProps)(props, true)), {}, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_10__.Layer, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-reference-line\", className)\n }, renderLine(shape, lineProps), _component_Label__WEBPACK_IMPORTED_MODULE_11__.Label.renderCallByParent(props, (0,_util_CartesianUtils__WEBPACK_IMPORTED_MODULE_7__.rectWithCoords)({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n}\nReferenceLine.displayName = \"ReferenceLine\";\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: \"discard\",\n xAxisId: 0,\n yAxisId: 0,\n fill: \"none\",\n stroke: \"#ccc\",\n fillOpacity: 1,\n strokeWidth: 1,\n position: \"middle\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9SZWZlcmVuY2VMaW5lLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYsR0FBR0MsR0FBR0MsQ0FBQyxDQUFDRCxFQUFFO1FBQUcsS0FBS0UsT0FBT2EseUJBQXlCLEdBQUdiLE9BQU9jLGdCQUFnQixDQUFDakIsR0FBR0csT0FBT2EseUJBQXlCLENBQUNkLE1BQU1ILFFBQVFJLE9BQU9ELElBQUlZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUlFLE9BQU9lLGNBQWMsQ0FBQ2xCLEdBQUdDLEdBQUdFLE9BQU9JLHdCQUF3QixDQUFDTCxHQUFHRDtRQUFLO0lBQUk7SUFBRSxPQUFPRDtBQUFHO0FBQ3RiLFNBQVNlLGdCQUFnQkksR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUs7SUFBSUQsTUFBTUUsZUFBZUY7SUFBTSxJQUFJQSxPQUFPRCxLQUFLO1FBQUVoQixPQUFPZSxjQUFjLENBQUNDLEtBQUtDLEtBQUs7WUFBRUMsT0FBT0E7WUFBT2IsWUFBWTtZQUFNZSxjQUFjO1lBQU1DLFVBQVU7UUFBSztJQUFJLE9BQU87UUFBRUwsR0FBRyxDQUFDQyxJQUFJLEdBQUdDO0lBQU87SUFBRSxPQUFPRjtBQUFLO0FBQzNPLFNBQVNHLGVBQWVwQixDQUFDO0lBQUksSUFBSXVCLElBQUlDLGFBQWF4QixHQUFHO0lBQVcsT0FBTyxZQUFZVCxRQUFRZ0MsS0FBS0EsSUFBSUUsT0FBT0Y7QUFBSTtBQUMvRyxTQUFTQyxhQUFheEIsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZUixRQUFRUyxNQUFNLENBQUNBLEdBQUcsT0FBT0E7SUFBRyxJQUFJRixJQUFJRSxDQUFDLENBQUNQLE9BQU9pQyxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTTVCLEdBQUc7UUFBRSxJQUFJeUIsSUFBSXpCLEVBQUU2QixJQUFJLENBQUMzQixHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZUixRQUFRZ0MsSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSUssVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhN0IsSUFBSTBCLFNBQVNJLE1BQUssRUFBRzdCO0FBQUk7QUFDM1QsU0FBUzhCLGVBQWVDLEdBQUcsRUFBRVIsQ0FBQztJQUFJLE9BQU9TLGdCQUFnQkQsUUFBUUUsc0JBQXNCRixLQUFLUixNQUFNVyw0QkFBNEJILEtBQUtSLE1BQU1ZO0FBQW9CO0FBQzdKLFNBQVNBO0lBQXFCLE1BQU0sSUFBSVAsVUFBVTtBQUE4STtBQUNoTSxTQUFTTSw0QkFBNEIxQyxDQUFDLEVBQUU0QyxNQUFNO0lBQUksSUFBSSxDQUFDNUMsR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU82QyxrQkFBa0I3QyxHQUFHNEM7SUFBUyxJQUFJRSxJQUFJckMsT0FBT0wsU0FBUyxDQUFDMkMsUUFBUSxDQUFDWixJQUFJLENBQUNuQyxHQUFHZ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUFJLElBQUlGLE1BQU0sWUFBWTlDLEVBQUVHLFdBQVcsRUFBRTJDLElBQUk5QyxFQUFFRyxXQUFXLENBQUM4QyxJQUFJO0lBQUUsSUFBSUgsTUFBTSxTQUFTQSxNQUFNLE9BQU8sT0FBT0ksTUFBTUMsSUFBSSxDQUFDbkQ7SUFBSSxJQUFJOEMsTUFBTSxlQUFlLDJDQUEyQ00sSUFBSSxDQUFDTixJQUFJLE9BQU9ELGtCQUFrQjdDLEdBQUc0QztBQUFTO0FBQy9aLFNBQVNDLGtCQUFrQk4sR0FBRyxFQUFFYyxHQUFHO0lBQUksSUFBSUEsT0FBTyxRQUFRQSxNQUFNZCxJQUFJcEIsTUFBTSxFQUFFa0MsTUFBTWQsSUFBSXBCLE1BQU07SUFBRSxJQUFLLElBQUlZLElBQUksR0FBR3VCLE9BQU8sSUFBSUosTUFBTUcsTUFBTXRCLElBQUlzQixLQUFLdEIsSUFBS3VCLElBQUksQ0FBQ3ZCLEVBQUUsR0FBR1EsR0FBRyxDQUFDUixFQUFFO0lBQUUsT0FBT3VCO0FBQU07QUFDbEwsU0FBU2Isc0JBQXNCbEMsQ0FBQyxFQUFFZ0QsQ0FBQztJQUFJLElBQUkvQyxJQUFJLFFBQVFELElBQUksT0FBTyxlQUFlLE9BQU9OLFVBQVVNLENBQUMsQ0FBQ04sT0FBT0MsUUFBUSxDQUFDLElBQUlLLENBQUMsQ0FBQyxhQUFhO0lBQUUsSUFBSSxRQUFRQyxHQUFHO1FBQUUsSUFBSUYsR0FBR3dDLEdBQUdmLEdBQUd5QixHQUFHQyxJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLEdBQUcxRCxJQUFJLENBQUM7UUFBRyxJQUFJO1lBQUUsSUFBSStCLElBQUksQ0FBQ3ZCLElBQUlBLEVBQUUyQixJQUFJLENBQUM1QixFQUFDLEVBQUdvRCxJQUFJLEVBQUUsTUFBTUosR0FBRztnQkFBRSxJQUFJOUMsT0FBT0QsT0FBT0EsR0FBRztnQkFBUWtELElBQUksQ0FBQztZQUFHLE9BQU8sTUFBTyxDQUFFQSxDQUFBQSxJQUFJLENBQUNwRCxJQUFJeUIsRUFBRUksSUFBSSxDQUFDM0IsRUFBQyxFQUFHb0QsSUFBSSxLQUFNSCxDQUFBQSxFQUFFMUMsSUFBSSxDQUFDVCxFQUFFcUIsS0FBSyxHQUFHOEIsRUFBRXRDLE1BQU0sS0FBS29DLENBQUFBLEdBQUlHLElBQUksQ0FBQztRQUFJLEVBQUUsT0FBT25ELEdBQUc7WUFBRVAsSUFBSSxDQUFDLEdBQUc4QyxJQUFJdkM7UUFBRyxTQUFVO1lBQUUsSUFBSTtnQkFBRSxJQUFJLENBQUNtRCxLQUFLLFFBQVFsRCxDQUFDLENBQUMsU0FBUyxJQUFLZ0QsQ0FBQUEsSUFBSWhELENBQUMsQ0FBQyxTQUFTLElBQUlDLE9BQU8rQyxPQUFPQSxDQUFBQSxHQUFJO1lBQVEsU0FBVTtnQkFBRSxJQUFJeEQsR0FBRyxNQUFNOEM7WUFBRztRQUFFO1FBQUUsT0FBT1c7SUFBRztBQUFFO0FBQ3poQixTQUFTakIsZ0JBQWdCRCxHQUFHO0lBQUksSUFBSVcsTUFBTVcsT0FBTyxDQUFDdEIsTUFBTSxPQUFPQTtBQUFLO0FBQ3BFLFNBQVN1QjtJQUFhQSxXQUFXckQsT0FBT3NELE1BQU0sR0FBR3RELE9BQU9zRCxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJbEMsSUFBSSxHQUFHQSxJQUFJYixVQUFVQyxNQUFNLEVBQUVZLElBQUs7WUFBRSxJQUFJbUMsU0FBU2hELFNBQVMsQ0FBQ2EsRUFBRTtZQUFFLElBQUssSUFBSUwsT0FBT3dDLE9BQVE7Z0JBQUUsSUFBSXpELE9BQU9MLFNBQVMsQ0FBQytELGNBQWMsQ0FBQ2hDLElBQUksQ0FBQytCLFFBQVF4QyxNQUFNO29CQUFFdUMsTUFBTSxDQUFDdkMsSUFBSSxHQUFHd0MsTUFBTSxDQUFDeEMsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPdUM7SUFBUTtJQUFHLE9BQU9ILFNBQVM5QyxLQUFLLENBQUMsSUFBSSxFQUFFRTtBQUFZO0FBQ2xWOztDQUVDLEdBQ3lCO0FBQ2lCO0FBQ1o7QUFDUDtBQUNtQjtBQUNBO0FBQ21CO0FBQ2Y7QUFDOEI7QUFDckM7QUFDUztBQUMyRDtBQUU1Rzs7Ozs7Q0FLQyxHQUVELElBQUlrRSxhQUFhLFNBQVNBLFdBQVdDLE1BQU0sRUFBRUMsS0FBSztJQUNoRCxJQUFJQztJQUNKLElBQUssV0FBVyxHQUFFbkIsMkRBQW9CLENBQUNpQixTQUFTO1FBQzlDRSxPQUFPLFdBQVcsR0FBRW5CLHlEQUFrQixDQUFDaUIsUUFBUUM7SUFDakQsT0FBTyxJQUFJakIsd0RBQVVBLENBQUNnQixTQUFTO1FBQzdCRSxPQUFPRixPQUFPQztJQUNoQixPQUFPO1FBQ0xDLE9BQU8sV0FBVyxHQUFFbkIsMERBQW1CLENBQUMsUUFBUU4sU0FBUyxDQUFDLEdBQUd3QixPQUFPO1lBQ2xFSyxXQUFXO1FBQ2I7SUFDRjtJQUNBLE9BQU9KO0FBQ1Q7QUFDQSxvQkFBb0I7QUFDYixJQUFJSyxlQUFlLFNBQVNBLGFBQWFDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLGdCQUFnQixFQUFFQyxnQkFBZ0IsRUFBRWQsS0FBSztJQUNqSixJQUFJZSxJQUFJSixRQUFRSSxDQUFDLEVBQ2ZDLElBQUlMLFFBQVFLLENBQUMsRUFDYkMsUUFBUU4sUUFBUU0sS0FBSyxFQUNyQkMsU0FBU1AsUUFBUU8sTUFBTTtJQUN6QixJQUFJVCxVQUFVO1FBQ1osSUFBSVUsU0FBU25CLE1BQU1nQixDQUFDO1FBQ3BCLElBQUlJLFFBQVFiLE9BQU9TLENBQUMsQ0FBQ3RGLEtBQUssQ0FBQ3lGLFFBQVE7WUFDakNQLFVBQVVBO1FBQ1o7UUFDQSxJQUFJeEIsMEVBQWlCQSxDQUFDWSxPQUFPLGNBQWMsQ0FBQ08sT0FBT1MsQ0FBQyxDQUFDSyxTQUFTLENBQUNELFFBQVE7WUFDckUsT0FBTztRQUNUO1FBQ0EsSUFBSUUsU0FBUztZQUFDO2dCQUNaUCxHQUFHQSxJQUFJRTtnQkFDUEQsR0FBR0k7WUFDTDtZQUFHO2dCQUNETCxHQUFHQTtnQkFDSEMsR0FBR0k7WUFDTDtTQUFFO1FBQ0YsT0FBT04scUJBQXFCLFNBQVNRLE9BQU9DLE9BQU8sS0FBS0Q7SUFDMUQ7SUFDQSxJQUFJZCxVQUFVO1FBQ1osSUFBSWdCLFNBQVN4QixNQUFNZSxDQUFDO1FBQ3BCLElBQUlVLFNBQVNsQixPQUFPUSxDQUFDLENBQUNyRixLQUFLLENBQUM4RixRQUFRO1lBQ2xDWixVQUFVQTtRQUNaO1FBQ0EsSUFBSXhCLDBFQUFpQkEsQ0FBQ1ksT0FBTyxjQUFjLENBQUNPLE9BQU9RLENBQUMsQ0FBQ00sU0FBUyxDQUFDSSxTQUFTO1lBQ3RFLE9BQU87UUFDVDtRQUNBLElBQUlDLFVBQVU7WUFBQztnQkFDYlgsR0FBR1U7Z0JBQ0hULEdBQUdBLElBQUlFO1lBQ1Q7WUFBRztnQkFDREgsR0FBR1U7Z0JBQ0hULEdBQUdBO1lBQ0w7U0FBRTtRQUNGLE9BQU9ILHFCQUFxQixRQUFRYSxRQUFRSCxPQUFPLEtBQUtHO0lBQzFEO0lBQ0EsSUFBSWhCLFdBQVc7UUFDYixJQUFJaUIsVUFBVTNCLE1BQU0yQixPQUFPO1FBQzNCLElBQUlDLFdBQVdELFFBQVFFLEdBQUcsQ0FBQyxTQUFVQyxDQUFDO1lBQ3BDLE9BQU92QixPQUFPN0UsS0FBSyxDQUFDb0csR0FBRztnQkFDckJsQixVQUFVQTtZQUNaO1FBQ0Y7UUFDQSxJQUFJeEIsMEVBQWlCQSxDQUFDWSxPQUFPLGNBQWNoQixrREFBSUEsQ0FBQzRDLFVBQVUsU0FBVUUsQ0FBQztZQUNuRSxPQUFPLENBQUN2QixPQUFPYyxTQUFTLENBQUNTO1FBQzNCLElBQUk7WUFDRixPQUFPO1FBQ1Q7UUFDQSxPQUFPRjtJQUNUO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDSyxTQUFTRyxjQUFjL0IsS0FBSztJQUNqQyxJQUFJZ0MsU0FBU2hDLE1BQU1lLENBQUMsRUFDbEJrQixTQUFTakMsTUFBTWdCLENBQUMsRUFDaEJXLFVBQVUzQixNQUFNMkIsT0FBTyxFQUN2Qk8sVUFBVWxDLE1BQU1rQyxPQUFPLEVBQ3ZCQyxVQUFVbkMsTUFBTW1DLE9BQU8sRUFDdkJDLFFBQVFwQyxNQUFNb0MsS0FBSyxFQUNuQi9CLFlBQVlMLE1BQU1LLFNBQVMsRUFDM0JnQyxhQUFhckMsTUFBTXFDLFVBQVU7SUFDL0IsSUFBSUMsYUFBYTVDLDBFQUFhQTtJQUM5QixJQUFJNkMsUUFBUTNDLDRFQUFlQSxDQUFDc0M7SUFDNUIsSUFBSU0sUUFBUTNDLDRFQUFlQSxDQUFDc0M7SUFDNUIsSUFBSXhCLFVBQVVoQix1RUFBVUE7SUFDeEIsSUFBSSxDQUFDMkMsY0FBYyxDQUFDM0IsU0FBUztRQUMzQixPQUFPO0lBQ1Q7SUFDQW5CLG9EQUFJQSxDQUFDNkMsZUFBZUksV0FBVztJQUMvQixJQUFJbEMsU0FBU2pCLHlFQUFtQkEsQ0FBQztRQUMvQnlCLEdBQUd3QixNQUFNRyxLQUFLO1FBQ2QxQixHQUFHd0IsTUFBTUUsS0FBSztJQUNoQjtJQUNBLElBQUlDLE1BQU10RCwyREFBVUEsQ0FBQzJDO0lBQ3JCLElBQUlZLE1BQU12RCwyREFBVUEsQ0FBQzRDO0lBQ3JCLElBQUl2QixZQUFZaUIsV0FBV0EsUUFBUTlGLE1BQU0sS0FBSztJQUM5QyxJQUFJZ0gsWUFBWXZDLGFBQWFDLFFBQVFvQyxLQUFLQyxLQUFLbEMsV0FBV0MsU0FBU1gsTUFBTVksUUFBUSxFQUFFMkIsTUFBTU8sV0FBVyxFQUFFTixNQUFNTSxXQUFXLEVBQUU5QztJQUN6SCxJQUFJLENBQUM2QyxXQUFXO1FBQ2QsT0FBTztJQUNUO0lBQ0EsSUFBSUUsYUFBYS9GLGVBQWU2RixXQUFXLElBQ3pDRyxjQUFjRCxVQUFVLENBQUMsRUFBRSxFQUMzQkUsS0FBS0QsWUFBWWpDLENBQUMsRUFDbEJtQyxLQUFLRixZQUFZaEMsQ0FBQyxFQUNsQm1DLGVBQWVKLFVBQVUsQ0FBQyxFQUFFLEVBQzVCSyxLQUFLRCxhQUFhcEMsQ0FBQyxFQUNuQnNDLEtBQUtGLGFBQWFuQyxDQUFDO0lBQ3JCLElBQUlzQyxXQUFXbEUsMEVBQWlCQSxDQUFDWSxPQUFPLFlBQVksUUFBUXVELE1BQU0sQ0FBQ2pCLFlBQVksT0FBT0c7SUFDdEYsSUFBSWUsWUFBWTdILGNBQWNBLGNBQWM7UUFDMUMySCxVQUFVQTtJQUNaLEdBQUc3RCw2REFBV0EsQ0FBQ08sT0FBTyxRQUFRLENBQUMsR0FBRztRQUNoQ2lELElBQUlBO1FBQ0pDLElBQUlBO1FBQ0pFLElBQUlBO1FBQ0pDLElBQUlBO0lBQ047SUFDQSxPQUFPLFdBQVcsR0FBRXZFLDBEQUFtQixDQUFDSSxvREFBS0EsRUFBRTtRQUM3Q21CLFdBQVdwQixnREFBSUEsQ0FBQywyQkFBMkJvQjtJQUM3QyxHQUFHUCxXQUFXc0MsT0FBT29CLFlBQVlyRSxvREFBS0EsQ0FBQ3NFLGtCQUFrQixDQUFDekQsT0FBT1Qsb0VBQWNBLENBQUM7UUFDOUUwRCxJQUFJQTtRQUNKQyxJQUFJQTtRQUNKRSxJQUFJQTtRQUNKQyxJQUFJQTtJQUNOO0FBQ0Y7QUFDQXRCLGNBQWMyQixXQUFXLEdBQUc7QUFDNUIzQixjQUFjNEIsWUFBWSxHQUFHO0lBQzNCQyxTQUFTO0lBQ1RDLFlBQVk7SUFDWjNCLFNBQVM7SUFDVEMsU0FBUztJQUNUMkIsTUFBTTtJQUNOQyxRQUFRO0lBQ1JDLGFBQWE7SUFDYkMsYUFBYTtJQUNickQsVUFBVTtBQUNaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL1JlZmVyZW5jZUxpbmUuanM/MDYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVmZXJlbmNlIExpbmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBzb21lIGZyb20gJ2xvZGFzaC9zb21lJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuLi9jb21wb25lbnQvTGFiZWwnO1xuaW1wb3J0IHsgaWZPdmVyZmxvd01hdGNoZXMgfSBmcm9tICcuLi91dGlsL0lmT3ZlcmZsb3dNYXRjaGVzJztcbmltcG9ydCB7IGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBjcmVhdGVMYWJlbGVkU2NhbGVzLCByZWN0V2l0aENvb3JkcyB9IGZyb20gJy4uL3V0aWwvQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgdXNlQ2xpcFBhdGhJZCwgdXNlVmlld0JveCwgdXNlWEF4aXNPclRocm93LCB1c2VZQXhpc09yVGhyb3cgfSBmcm9tICcuLi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dCc7XG5cbi8qKlxuICogVGhpcyBleGNsdWRlcyBgdmlld0JveGAgcHJvcCBmcm9tIHN2ZyBmb3IgdHdvIHJlYXNvbnM6XG4gKiAxLiBUaGUgY29tcG9uZW50cyB3YW50cyB2aWV3Qm94IG9mIG9iamVjdCB0eXBlLCBhbmQgc3ZnIHdhbnRzIHN0cmluZ1xuICogICAgLSBzbyB0aGVyZSdzIGEgY29uZmxpY3QsIGFuZCB0aGUgY29tcG9uZW50IHdpbGwgdGhyb3cgaWYgaXQgZ2V0cyBzdHJpbmdcbiAqIDIuIEludGVybmFsbHkgdGhlIGNvbXBvbmVudCBjYWxscyBgZmlsdGVyUHJvcHNgIHdoaWNoIGZpbHRlcnMgdGhlIHZpZXdCb3ggYXdheSBhbnl3YXlcbiAqL1xuXG52YXIgcmVuZGVyTGluZSA9IGZ1bmN0aW9uIHJlbmRlckxpbmUob3B0aW9uLCBwcm9wcykge1xuICB2YXIgbGluZTtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQob3B0aW9uKSkge1xuICAgIGxpbmUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIGxpbmUgPSBvcHRpb24ocHJvcHMpO1xuICB9IGVsc2Uge1xuICAgIGxpbmUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtcmVmZXJlbmNlLWxpbmUtbGluZVwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBsaW5lO1xufTtcbi8vIFRPRE86IFNjYWxlSGVscGVyXG5leHBvcnQgdmFyIGdldEVuZFBvaW50cyA9IGZ1bmN0aW9uIGdldEVuZFBvaW50cyhzY2FsZXMsIGlzRml4ZWRYLCBpc0ZpeGVkWSwgaXNTZWdtZW50LCB2aWV3Qm94LCBwb3NpdGlvbiwgeEF4aXNPcmllbnRhdGlvbiwgeUF4aXNPcmllbnRhdGlvbiwgcHJvcHMpIHtcbiAgdmFyIHggPSB2aWV3Qm94LngsXG4gICAgeSA9IHZpZXdCb3gueSxcbiAgICB3aWR0aCA9IHZpZXdCb3gud2lkdGgsXG4gICAgaGVpZ2h0ID0gdmlld0JveC5oZWlnaHQ7XG4gIGlmIChpc0ZpeGVkWSkge1xuICAgIHZhciB5Q29vcmQgPSBwcm9wcy55O1xuICAgIHZhciBjb29yZCA9IHNjYWxlcy55LmFwcGx5KHlDb29yZCwge1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uXG4gICAgfSk7XG4gICAgaWYgKGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnZGlzY2FyZCcpICYmICFzY2FsZXMueS5pc0luUmFuZ2UoY29vcmQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHBvaW50cyA9IFt7XG4gICAgICB4OiB4ICsgd2lkdGgsXG4gICAgICB5OiBjb29yZFxuICAgIH0sIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiBjb29yZFxuICAgIH1dO1xuICAgIHJldHVybiB5QXhpc09yaWVudGF0aW9uID09PSAnbGVmdCcgPyBwb2ludHMucmV2ZXJzZSgpIDogcG9pbnRzO1xuICB9XG4gIGlmIChpc0ZpeGVkWCkge1xuICAgIHZhciB4Q29vcmQgPSBwcm9wcy54O1xuICAgIHZhciBfY29vcmQgPSBzY2FsZXMueC5hcHBseSh4Q29vcmQsIHtcbiAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgIH0pO1xuICAgIGlmIChpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgJ2Rpc2NhcmQnKSAmJiAhc2NhbGVzLnguaXNJblJhbmdlKF9jb29yZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgX3BvaW50cyA9IFt7XG4gICAgICB4OiBfY29vcmQsXG4gICAgICB5OiB5ICsgaGVpZ2h0XG4gICAgfSwge1xuICAgICAgeDogX2Nvb3JkLFxuICAgICAgeTogeVxuICAgIH1dO1xuICAgIHJldHVybiB4QXhpc09yaWVudGF0aW9uID09PSAndG9wJyA/IF9wb2ludHMucmV2ZXJzZSgpIDogX3BvaW50cztcbiAgfVxuICBpZiAoaXNTZWdtZW50KSB7XG4gICAgdmFyIHNlZ21lbnQgPSBwcm9wcy5zZWdtZW50O1xuICAgIHZhciBfcG9pbnRzMiA9IHNlZ21lbnQubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICByZXR1cm4gc2NhbGVzLmFwcGx5KHAsIHtcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAoaWZPdmVyZmxvd01hdGNoZXMocHJvcHMsICdkaXNjYXJkJykgJiYgc29tZShfcG9pbnRzMiwgZnVuY3Rpb24gKHApIHtcbiAgICAgIHJldHVybiAhc2NhbGVzLmlzSW5SYW5nZShwKTtcbiAgICB9KSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBfcG9pbnRzMjtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5leHBvcnQgZnVuY3Rpb24gUmVmZXJlbmNlTGluZShwcm9wcykge1xuICB2YXIgZml4ZWRYID0gcHJvcHMueCxcbiAgICBmaXhlZFkgPSBwcm9wcy55LFxuICAgIHNlZ21lbnQgPSBwcm9wcy5zZWdtZW50LFxuICAgIHhBeGlzSWQgPSBwcm9wcy54QXhpc0lkLFxuICAgIHlBeGlzSWQgPSBwcm9wcy55QXhpc0lkLFxuICAgIHNoYXBlID0gcHJvcHMuc2hhcGUsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGFsd2F5c1Nob3cgPSBwcm9wcy5hbHdheXNTaG93O1xuICB2YXIgY2xpcFBhdGhJZCA9IHVzZUNsaXBQYXRoSWQoKTtcbiAgdmFyIHhBeGlzID0gdXNlWEF4aXNPclRocm93KHhBeGlzSWQpO1xuICB2YXIgeUF4aXMgPSB1c2VZQXhpc09yVGhyb3coeUF4aXNJZCk7XG4gIHZhciB2aWV3Qm94ID0gdXNlVmlld0JveCgpO1xuICBpZiAoIWNsaXBQYXRoSWQgfHwgIXZpZXdCb3gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB3YXJuKGFsd2F5c1Nob3cgPT09IHVuZGVmaW5lZCwgJ1RoZSBhbHdheXNTaG93IHByb3AgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBpZk92ZXJmbG93PVwiZXh0ZW5kRG9tYWluXCIgaW5zdGVhZC4nKTtcbiAgdmFyIHNjYWxlcyA9IGNyZWF0ZUxhYmVsZWRTY2FsZXMoe1xuICAgIHg6IHhBeGlzLnNjYWxlLFxuICAgIHk6IHlBeGlzLnNjYWxlXG4gIH0pO1xuICB2YXIgaXNYID0gaXNOdW1PclN0cihmaXhlZFgpO1xuICB2YXIgaXNZID0gaXNOdW1PclN0cihmaXhlZFkpO1xuICB2YXIgaXNTZWdtZW50ID0gc2VnbWVudCAmJiBzZWdtZW50Lmxlbmd0aCA9PT0gMjtcbiAgdmFyIGVuZFBvaW50cyA9IGdldEVuZFBvaW50cyhzY2FsZXMsIGlzWCwgaXNZLCBpc1NlZ21lbnQsIHZpZXdCb3gsIHByb3BzLnBvc2l0aW9uLCB4QXhpcy5vcmllbnRhdGlvbiwgeUF4aXMub3JpZW50YXRpb24sIHByb3BzKTtcbiAgaWYgKCFlbmRQb2ludHMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgX2VuZFBvaW50cyA9IF9zbGljZWRUb0FycmF5KGVuZFBvaW50cywgMiksXG4gICAgX2VuZFBvaW50cyQgPSBfZW5kUG9pbnRzWzBdLFxuICAgIHgxID0gX2VuZFBvaW50cyQueCxcbiAgICB5MSA9IF9lbmRQb2ludHMkLnksXG4gICAgX2VuZFBvaW50cyQyID0gX2VuZFBvaW50c1sxXSxcbiAgICB4MiA9IF9lbmRQb2ludHMkMi54LFxuICAgIHkyID0gX2VuZFBvaW50cyQyLnk7XG4gIHZhciBjbGlwUGF0aCA9IGlmT3ZlcmZsb3dNYXRjaGVzKHByb3BzLCAnaGlkZGVuJykgPyBcInVybCgjXCIuY29uY2F0KGNsaXBQYXRoSWQsIFwiKVwiKSA6IHVuZGVmaW5lZDtcbiAgdmFyIGxpbmVQcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgY2xpcFBhdGg6IGNsaXBQYXRoXG4gIH0sIGZpbHRlclByb3BzKHByb3BzLCB0cnVlKSksIHt9LCB7XG4gICAgeDE6IHgxLFxuICAgIHkxOiB5MSxcbiAgICB4MjogeDIsXG4gICAgeTI6IHkyXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlZmVyZW5jZS1saW5lJywgY2xhc3NOYW1lKVxuICB9LCByZW5kZXJMaW5lKHNoYXBlLCBsaW5lUHJvcHMpLCBMYWJlbC5yZW5kZXJDYWxsQnlQYXJlbnQocHJvcHMsIHJlY3RXaXRoQ29vcmRzKHtcbiAgICB4MTogeDEsXG4gICAgeTE6IHkxLFxuICAgIHgyOiB4MixcbiAgICB5MjogeTJcbiAgfSkpKTtcbn1cblJlZmVyZW5jZUxpbmUuZGlzcGxheU5hbWUgPSAnUmVmZXJlbmNlTGluZSc7XG5SZWZlcmVuY2VMaW5lLmRlZmF1bHRQcm9wcyA9IHtcbiAgaXNGcm9udDogZmFsc2UsXG4gIGlmT3ZlcmZsb3c6ICdkaXNjYXJkJyxcbiAgeEF4aXNJZDogMCxcbiAgeUF4aXNJZDogMCxcbiAgZmlsbDogJ25vbmUnLFxuICBzdHJva2U6ICcjY2NjJyxcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIHN0cm9rZVdpZHRoOiAxLFxuICBwb3NpdGlvbjogJ21pZGRsZSdcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsImhhc093blByb3BlcnR5IiwiUmVhY3QiLCJpc0Z1bmN0aW9uIiwic29tZSIsImNsc3giLCJMYXllciIsIkxhYmVsIiwiaWZPdmVyZmxvd01hdGNoZXMiLCJpc051bU9yU3RyIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsInJlY3RXaXRoQ29vcmRzIiwid2FybiIsImZpbHRlclByb3BzIiwidXNlQ2xpcFBhdGhJZCIsInVzZVZpZXdCb3giLCJ1c2VYQXhpc09yVGhyb3ciLCJ1c2VZQXhpc09yVGhyb3ciLCJyZW5kZXJMaW5lIiwib3B0aW9uIiwicHJvcHMiLCJsaW5lIiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiZ2V0RW5kUG9pbnRzIiwic2NhbGVzIiwiaXNGaXhlZFgiLCJpc0ZpeGVkWSIsImlzU2VnbWVudCIsInZpZXdCb3giLCJwb3NpdGlvbiIsInhBeGlzT3JpZW50YXRpb24iLCJ5QXhpc09yaWVudGF0aW9uIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInlDb29yZCIsImNvb3JkIiwiaXNJblJhbmdlIiwicG9pbnRzIiwicmV2ZXJzZSIsInhDb29yZCIsIl9jb29yZCIsIl9wb2ludHMiLCJzZWdtZW50IiwiX3BvaW50czIiLCJtYXAiLCJwIiwiUmVmZXJlbmNlTGluZSIsImZpeGVkWCIsImZpeGVkWSIsInhBeGlzSWQiLCJ5QXhpc0lkIiwic2hhcGUiLCJhbHdheXNTaG93IiwiY2xpcFBhdGhJZCIsInhBeGlzIiwieUF4aXMiLCJ1bmRlZmluZWQiLCJzY2FsZSIsImlzWCIsImlzWSIsImVuZFBvaW50cyIsIm9yaWVudGF0aW9uIiwiX2VuZFBvaW50cyIsIl9lbmRQb2ludHMkIiwieDEiLCJ5MSIsIl9lbmRQb2ludHMkMiIsIngyIiwieTIiLCJjbGlwUGF0aCIsImNvbmNhdCIsImxpbmVQcm9wcyIsInJlbmRlckNhbGxCeVBhcmVudCIsImRpc3BsYXlOYW1lIiwiZGVmYXVsdFByb3BzIiwiaXNGcm9udCIsImlmT3ZlcmZsb3ciLCJmaWxsIiwic3Ryb2tlIiwiZmlsbE9wYWNpdHkiLCJzdHJva2VXaWR0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/XAxis.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ XAxis: () => (/* binding */ XAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\n/* harmony import */ var _CartesianAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CartesianAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview X Axis\n */ \n\n\n\n\n/** Define of XAxis props */ var XAxis = function XAxis(_ref) {\n var xAxisId = _ref.xAxisId;\n var width = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartWidth)();\n var height = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartHeight)();\n var axisOptions = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useXAxisOrThrow)(xAxisId);\n if (axisOptions == null) {\n return null;\n }\n return(/*#__PURE__*/ // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_CartesianAxis__WEBPACK_IMPORTED_MODULE_3__.CartesianAxis, _extends({}, axisOptions, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfAxis)(axis, true);\n }\n })));\n};\nXAxis.displayName = \"XAxis\";\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: \"bottom\",\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: \"category\",\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: \"auto\",\n reversed: false,\n allowDuplicatedCategory: true\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9YQXhpcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0E7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWOztDQUVDLEdBRXlCO0FBQ0Y7QUFDdUU7QUFDL0M7QUFDSTtBQUVwRCwwQkFBMEIsR0FFbkIsSUFBSWUsUUFBUSxTQUFTQSxNQUFNQyxJQUFJO0lBQ3BDLElBQUlDLFVBQVVELEtBQUtDLE9BQU87SUFDMUIsSUFBSUMsUUFBUVAsMEVBQWFBO0lBQ3pCLElBQUlRLFNBQVNULDJFQUFjQTtJQUMzQixJQUFJVSxjQUFjUiw0RUFBZUEsQ0FBQ0s7SUFDbEMsSUFBSUcsZUFBZSxNQUFNO1FBQ3ZCLE9BQU87SUFDVDtJQUNBLE9BQ0UsV0FBVyxHQUNYLHdGQUF3RjtJQUN4RlosMERBQW1CLENBQUNLLHlEQUFhQSxFQUFFbkIsU0FBUyxDQUFDLEdBQUcwQixhQUFhO1FBQzNERSxXQUFXYixnREFBSUEsQ0FBQyxZQUFZYyxNQUFNLENBQUNILFlBQVlJLFFBQVEsRUFBRSxLQUFLRCxNQUFNLENBQUNILFlBQVlJLFFBQVEsR0FBR0osWUFBWUUsU0FBUztRQUNqSEcsU0FBUztZQUNQQyxHQUFHO1lBQ0hDLEdBQUc7WUFDSFQsT0FBT0E7WUFDUEMsUUFBUUE7UUFDVjtRQUNBUyxnQkFBZ0IsU0FBU0EsZUFBZUMsSUFBSTtZQUMxQyxPQUFPZixnRUFBY0EsQ0FBQ2UsTUFBTTtRQUM5QjtJQUNGO0FBRUosRUFBRTtBQUNGZCxNQUFNZSxXQUFXLEdBQUc7QUFDcEJmLE1BQU1nQixZQUFZLEdBQUc7SUFDbkJDLGVBQWU7SUFDZkMsTUFBTTtJQUNOQyxhQUFhO0lBQ2JoQixPQUFPO0lBQ1BDLFFBQVE7SUFDUmdCLFFBQVE7SUFDUmxCLFNBQVM7SUFDVG1CLFdBQVc7SUFDWEMsTUFBTTtJQUNOQyxTQUFTO1FBQ1BDLE1BQU07UUFDTkMsT0FBTztJQUNUO0lBQ0FDLG1CQUFtQjtJQUNuQkMsT0FBTztJQUNQQyxVQUFVO0lBQ1ZDLHlCQUF5QjtBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9YQXhpcy5qcz9lNDBjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFggQXhpc1xuICovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVzZUNoYXJ0SGVpZ2h0LCB1c2VDaGFydFdpZHRoLCB1c2VYQXhpc09yVGhyb3cgfSBmcm9tICcuLi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dCc7XG5pbXBvcnQgeyBDYXJ0ZXNpYW5BeGlzIH0gZnJvbSAnLi9DYXJ0ZXNpYW5BeGlzJztcbmltcG9ydCB7IGdldFRpY2tzT2ZBeGlzIH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcblxuLyoqIERlZmluZSBvZiBYQXhpcyBwcm9wcyAqL1xuXG5leHBvcnQgdmFyIFhBeGlzID0gZnVuY3Rpb24gWEF4aXMoX3JlZikge1xuICB2YXIgeEF4aXNJZCA9IF9yZWYueEF4aXNJZDtcbiAgdmFyIHdpZHRoID0gdXNlQ2hhcnRXaWR0aCgpO1xuICB2YXIgaGVpZ2h0ID0gdXNlQ2hhcnRIZWlnaHQoKTtcbiAgdmFyIGF4aXNPcHRpb25zID0gdXNlWEF4aXNPclRocm93KHhBeGlzSWQpO1xuICBpZiAoYXhpc09wdGlvbnMgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAoXG4gICAgLyojX19QVVJFX18qL1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIGF4aXNPcHRpb25zIHR5cGUgaXMgbm90IGV4YWN0bHkgd2hhdCBDYXJ0ZXNpYW5BeGlzIGlzIGV4cGVjdGluZy5cbiAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENhcnRlc2lhbkF4aXMsIF9leHRlbmRzKHt9LCBheGlzT3B0aW9ucywge1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KFwicmVjaGFydHMtXCIuY29uY2F0KGF4aXNPcHRpb25zLmF4aXNUeXBlLCBcIiBcIikuY29uY2F0KGF4aXNPcHRpb25zLmF4aXNUeXBlKSwgYXhpc09wdGlvbnMuY2xhc3NOYW1lKSxcbiAgICAgIHZpZXdCb3g6IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfSxcbiAgICAgIHRpY2tzR2VuZXJhdG9yOiBmdW5jdGlvbiB0aWNrc0dlbmVyYXRvcihheGlzKSB7XG4gICAgICAgIHJldHVybiBnZXRUaWNrc09mQXhpcyhheGlzLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9KSlcbiAgKTtcbn07XG5YQXhpcy5kaXNwbGF5TmFtZSA9ICdYQXhpcyc7XG5YQXhpcy5kZWZhdWx0UHJvcHMgPSB7XG4gIGFsbG93RGVjaW1hbHM6IHRydWUsXG4gIGhpZGU6IGZhbHNlLFxuICBvcmllbnRhdGlvbjogJ2JvdHRvbScsXG4gIHdpZHRoOiAwLFxuICBoZWlnaHQ6IDMwLFxuICBtaXJyb3I6IGZhbHNlLFxuICB4QXhpc0lkOiAwLFxuICB0aWNrQ291bnQ6IDUsXG4gIHR5cGU6ICdjYXRlZ29yeScsXG4gIHBhZGRpbmc6IHtcbiAgICBsZWZ0OiAwLFxuICAgIHJpZ2h0OiAwXG4gIH0sXG4gIGFsbG93RGF0YU92ZXJmbG93OiBmYWxzZSxcbiAgc2NhbGU6ICdhdXRvJyxcbiAgcmV2ZXJzZWQ6IGZhbHNlLFxuICBhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeTogdHJ1ZVxufTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiUmVhY3QiLCJjbHN4IiwidXNlQ2hhcnRIZWlnaHQiLCJ1c2VDaGFydFdpZHRoIiwidXNlWEF4aXNPclRocm93IiwiQ2FydGVzaWFuQXhpcyIsImdldFRpY2tzT2ZBeGlzIiwiWEF4aXMiLCJfcmVmIiwieEF4aXNJZCIsIndpZHRoIiwiaGVpZ2h0IiwiYXhpc09wdGlvbnMiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29uY2F0IiwiYXhpc1R5cGUiLCJ2aWV3Qm94IiwieCIsInkiLCJ0aWNrc0dlbmVyYXRvciIsImF4aXMiLCJkaXNwbGF5TmFtZSIsImRlZmF1bHRQcm9wcyIsImFsbG93RGVjaW1hbHMiLCJoaWRlIiwib3JpZW50YXRpb24iLCJtaXJyb3IiLCJ0aWNrQ291bnQiLCJ0eXBlIiwicGFkZGluZyIsImxlZnQiLCJyaWdodCIsImFsbG93RGF0YU92ZXJmbG93Iiwic2NhbGUiLCJyZXZlcnNlZCIsImFsbG93RHVwbGljYXRlZENhdGVnb3J5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/YAxis.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ YAxis: () => (/* binding */ YAxis)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\n/* harmony import */ var _CartesianAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./CartesianAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/CartesianAxis.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Y Axis\n */ \n\n\n\n\nvar YAxis = function YAxis(_ref) {\n var yAxisId = _ref.yAxisId;\n var width = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartWidth)();\n var height = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useChartHeight)();\n var axisOptions = (0,_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_2__.useYAxisOrThrow)(yAxisId);\n if (axisOptions == null) {\n return null;\n }\n return(/*#__PURE__*/ // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_CartesianAxis__WEBPACK_IMPORTED_MODULE_3__.CartesianAxis, _extends({}, axisOptions, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: function ticksGenerator(axis) {\n return (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfAxis)(axis, true);\n }\n })));\n};\nYAxis.displayName = \"YAxis\";\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: \"left\",\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: \"number\",\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: \"auto\",\n reversed: false\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9ZQXhpcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0E7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWOztDQUVDLEdBQ3lCO0FBQ0Y7QUFDdUU7QUFDL0M7QUFDSTtBQUM3QyxJQUFJZSxRQUFRLFNBQVNBLE1BQU1DLElBQUk7SUFDcEMsSUFBSUMsVUFBVUQsS0FBS0MsT0FBTztJQUMxQixJQUFJQyxRQUFRUCwwRUFBYUE7SUFDekIsSUFBSVEsU0FBU1QsMkVBQWNBO0lBQzNCLElBQUlVLGNBQWNSLDRFQUFlQSxDQUFDSztJQUNsQyxJQUFJRyxlQUFlLE1BQU07UUFDdkIsT0FBTztJQUNUO0lBQ0EsT0FDRSxXQUFXLEdBQ1gsd0ZBQXdGO0lBQ3hGWiwwREFBbUIsQ0FBQ0sseURBQWFBLEVBQUVuQixTQUFTLENBQUMsR0FBRzBCLGFBQWE7UUFDM0RFLFdBQVdiLGdEQUFJQSxDQUFDLFlBQVljLE1BQU0sQ0FBQ0gsWUFBWUksUUFBUSxFQUFFLEtBQUtELE1BQU0sQ0FBQ0gsWUFBWUksUUFBUSxHQUFHSixZQUFZRSxTQUFTO1FBQ2pIRyxTQUFTO1lBQ1BDLEdBQUc7WUFDSEMsR0FBRztZQUNIVCxPQUFPQTtZQUNQQyxRQUFRQTtRQUNWO1FBQ0FTLGdCQUFnQixTQUFTQSxlQUFlQyxJQUFJO1lBQzFDLE9BQU9mLGdFQUFjQSxDQUFDZSxNQUFNO1FBQzlCO0lBQ0Y7QUFFSixFQUFFO0FBQ0ZkLE1BQU1lLFdBQVcsR0FBRztBQUNwQmYsTUFBTWdCLFlBQVksR0FBRztJQUNuQkMseUJBQXlCO0lBQ3pCQyxlQUFlO0lBQ2ZDLE1BQU07SUFDTkMsYUFBYTtJQUNiakIsT0FBTztJQUNQQyxRQUFRO0lBQ1JpQixRQUFRO0lBQ1JuQixTQUFTO0lBQ1RvQixXQUFXO0lBQ1hDLE1BQU07SUFDTkMsU0FBUztRQUNQQyxLQUFLO1FBQ0xDLFFBQVE7SUFDVjtJQUNBQyxtQkFBbUI7SUFDbkJDLE9BQU87SUFDUEMsVUFBVTtBQUNaIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2FydGVzaWFuL1lBeGlzLmpzP2U1YzkiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgWSBBeGlzXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVzZUNoYXJ0SGVpZ2h0LCB1c2VDaGFydFdpZHRoLCB1c2VZQXhpc09yVGhyb3cgfSBmcm9tICcuLi9jb250ZXh0L2NoYXJ0TGF5b3V0Q29udGV4dCc7XG5pbXBvcnQgeyBDYXJ0ZXNpYW5BeGlzIH0gZnJvbSAnLi9DYXJ0ZXNpYW5BeGlzJztcbmltcG9ydCB7IGdldFRpY2tzT2ZBeGlzIH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbmV4cG9ydCB2YXIgWUF4aXMgPSBmdW5jdGlvbiBZQXhpcyhfcmVmKSB7XG4gIHZhciB5QXhpc0lkID0gX3JlZi55QXhpc0lkO1xuICB2YXIgd2lkdGggPSB1c2VDaGFydFdpZHRoKCk7XG4gIHZhciBoZWlnaHQgPSB1c2VDaGFydEhlaWdodCgpO1xuICB2YXIgYXhpc09wdGlvbnMgPSB1c2VZQXhpc09yVGhyb3coeUF4aXNJZCk7XG4gIGlmIChheGlzT3B0aW9ucyA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIChcbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB0aGUgYXhpc09wdGlvbnMgdHlwZSBpcyBub3QgZXhhY3RseSB3aGF0IENhcnRlc2lhbkF4aXMgaXMgZXhwZWN0aW5nLlxuICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FydGVzaWFuQXhpcywgX2V4dGVuZHMoe30sIGF4aXNPcHRpb25zLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goXCJyZWNoYXJ0cy1cIi5jb25jYXQoYXhpc09wdGlvbnMuYXhpc1R5cGUsIFwiIFwiKS5jb25jYXQoYXhpc09wdGlvbnMuYXhpc1R5cGUpLCBheGlzT3B0aW9ucy5jbGFzc05hbWUpLFxuICAgICAgdmlld0JveDoge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9LFxuICAgICAgdGlja3NHZW5lcmF0b3I6IGZ1bmN0aW9uIHRpY2tzR2VuZXJhdG9yKGF4aXMpIHtcbiAgICAgICAgcmV0dXJuIGdldFRpY2tzT2ZBeGlzKGF4aXMsIHRydWUpO1xuICAgICAgfVxuICAgIH0pKVxuICApO1xufTtcbllBeGlzLmRpc3BsYXlOYW1lID0gJ1lBeGlzJztcbllBeGlzLmRlZmF1bHRQcm9wcyA9IHtcbiAgYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnk6IHRydWUsXG4gIGFsbG93RGVjaW1hbHM6IHRydWUsXG4gIGhpZGU6IGZhbHNlLFxuICBvcmllbnRhdGlvbjogJ2xlZnQnLFxuICB3aWR0aDogNjAsXG4gIGhlaWdodDogMCxcbiAgbWlycm9yOiBmYWxzZSxcbiAgeUF4aXNJZDogMCxcbiAgdGlja0NvdW50OiA1LFxuICB0eXBlOiAnbnVtYmVyJyxcbiAgcGFkZGluZzoge1xuICAgIHRvcDogMCxcbiAgICBib3R0b206IDBcbiAgfSxcbiAgYWxsb3dEYXRhT3ZlcmZsb3c6IGZhbHNlLFxuICBzY2FsZTogJ2F1dG8nLFxuICByZXZlcnNlZDogZmFsc2Vcbn07Il0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIlJlYWN0IiwiY2xzeCIsInVzZUNoYXJ0SGVpZ2h0IiwidXNlQ2hhcnRXaWR0aCIsInVzZVlBeGlzT3JUaHJvdyIsIkNhcnRlc2lhbkF4aXMiLCJnZXRUaWNrc09mQXhpcyIsIllBeGlzIiwiX3JlZiIsInlBeGlzSWQiLCJ3aWR0aCIsImhlaWdodCIsImF4aXNPcHRpb25zIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbmNhdCIsImF4aXNUeXBlIiwidmlld0JveCIsIngiLCJ5IiwidGlja3NHZW5lcmF0b3IiLCJheGlzIiwiZGlzcGxheU5hbWUiLCJkZWZhdWx0UHJvcHMiLCJhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSIsImFsbG93RGVjaW1hbHMiLCJoaWRlIiwib3JpZW50YXRpb24iLCJtaXJyb3IiLCJ0aWNrQ291bnQiLCJ0eXBlIiwicGFkZGluZyIsInRvcCIsImJvdHRvbSIsImFsbG93RGF0YU92ZXJmbG93Iiwic2NhbGUiLCJyZXZlcnNlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/getEquidistantTicks.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getEquidistantTicks: () => (/* binding */ getEquidistantTicks)\n/* harmony export */ });\n/* harmony import */ var _util_TickUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TickUtils */ \"(ssr)/./node_modules/recharts/es6/util/TickUtils.js\");\n/* harmony import */ var _util_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/getEveryNthWithCondition */ \"(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\");\n\n\nfunction getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var initialStart = boundaries.start, end = boundaries.end;\n var index = 0;\n // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n // For now, start from every tick\n var stepsize = 1;\n var start = initialStart;\n var _loop = function _loop() {\n // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n // If it can not, then increase the stepsize by 1, and try again.\n var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n // Break condition - If we have evaluate all the ticks, then we are done.\n if (entry === undefined) {\n return {\n v: (0,_util_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_0__.getEveryNthWithCondition)(ticks, stepsize)\n };\n }\n // Check if the element collides with the next element\n var i = index;\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n var tickCoord = entry.coordinate;\n // We will always show the first tick.\n var isShow = index === 0 || (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, tickCoord, getSize, start, end);\n if (!isShow) {\n // Start all over with a larger stepsize\n index = 0;\n start = initialStart;\n stepsize += 1;\n }\n if (isShow) {\n // If it can be shown, update the start\n start = tickCoord + sign * (getSize() / 2 + minTickGap);\n index += stepsize;\n }\n }, _ret;\n while(stepsize <= result.length){\n _ret = _loop();\n if (_ret) return _ret.v;\n }\n return [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9nZXRFcXVpZGlzdGFudFRpY2tzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUM4QjtBQUNyRSxTQUFTRSxvQkFBb0JDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxXQUFXLEVBQUVDLEtBQUssRUFBRUMsVUFBVTtJQUNsRixJQUFJQyxTQUFTLENBQUNGLFNBQVMsRUFBRSxFQUFFRyxLQUFLO0lBQ2hDLElBQUlDLGVBQWVOLFdBQVdPLEtBQUssRUFDakNDLE1BQU1SLFdBQVdRLEdBQUc7SUFDdEIsSUFBSUMsUUFBUTtJQUNaLCtFQUErRTtJQUMvRSxpQ0FBaUM7SUFDakMsSUFBSUMsV0FBVztJQUNmLElBQUlILFFBQVFEO0lBQ1osSUFBSUssUUFBUSxTQUFTQTtRQUNqQix3RUFBd0U7UUFDeEUsaUVBQWlFO1FBRWpFLElBQUlDLFFBQVFWLFVBQVUsUUFBUUEsVUFBVSxLQUFLLElBQUksS0FBSyxJQUFJQSxLQUFLLENBQUNPLE1BQU07UUFFdEUseUVBQXlFO1FBQ3pFLElBQUlHLFVBQVVDLFdBQVc7WUFDdkIsT0FBTztnQkFDTEMsR0FBR2pCLHdGQUF3QkEsQ0FBQ0ssT0FBT1E7WUFDckM7UUFDRjtRQUVBLHNEQUFzRDtRQUN0RCxJQUFJSyxJQUFJTjtRQUNSLElBQUlPO1FBQ0osSUFBSUMsVUFBVSxTQUFTQTtZQUNyQixJQUFJRCxTQUFTSCxXQUFXO2dCQUN0QkcsT0FBT2YsWUFBWVcsT0FBT0c7WUFDNUI7WUFDQSxPQUFPQztRQUNUO1FBQ0EsSUFBSUUsWUFBWU4sTUFBTU8sVUFBVTtRQUNoQyxzQ0FBc0M7UUFDdEMsSUFBSUMsU0FBU1gsVUFBVSxLQUFLYiwwREFBU0EsQ0FBQ0csTUFBTW1CLFdBQVdELFNBQVNWLE9BQU9DO1FBQ3ZFLElBQUksQ0FBQ1ksUUFBUTtZQUNYLHdDQUF3QztZQUN4Q1gsUUFBUTtZQUNSRixRQUFRRDtZQUNSSSxZQUFZO1FBQ2Q7UUFDQSxJQUFJVSxRQUFRO1lBQ1YsdUNBQXVDO1lBQ3ZDYixRQUFRVyxZQUFZbkIsT0FBUWtCLENBQUFBLFlBQVksSUFBSWQsVUFBUztZQUNyRE0sU0FBU0M7UUFDWDtJQUNGLEdBQ0FXO0lBQ0YsTUFBT1gsWUFBWU4sT0FBT2tCLE1BQU0sQ0FBRTtRQUNoQ0QsT0FBT1Y7UUFDUCxJQUFJVSxNQUFNLE9BQU9BLEtBQUtQLENBQUM7SUFDekI7SUFDQSxPQUFPLEVBQUU7QUFDWCIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9nZXRFcXVpZGlzdGFudFRpY2tzLmpzPzI3YWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWaXNpYmxlIH0gZnJvbSAnLi4vdXRpbC9UaWNrVXRpbHMnO1xuaW1wb3J0IHsgZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIH0gZnJvbSAnLi4vdXRpbC9nZXRFdmVyeU50aFdpdGhDb25kaXRpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVxdWlkaXN0YW50VGlja3Moc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwKSB7XG4gIHZhciByZXN1bHQgPSAodGlja3MgfHwgW10pLnNsaWNlKCk7XG4gIHZhciBpbml0aWFsU3RhcnQgPSBib3VuZGFyaWVzLnN0YXJ0LFxuICAgIGVuZCA9IGJvdW5kYXJpZXMuZW5kO1xuICB2YXIgaW5kZXggPSAwO1xuICAvLyBQcmVtYXR1cmUgb3B0aW1pc2F0aW9uIGlkZWEgMTogRXN0aW1hdGUgYSBsb3dlciBib3VuZCwgYW5kIHN0YXJ0IGZyb20gdGhlcmUuXG4gIC8vIEZvciBub3csIHN0YXJ0IGZyb20gZXZlcnkgdGlja1xuICB2YXIgc3RlcHNpemUgPSAxO1xuICB2YXIgc3RhcnQgPSBpbml0aWFsU3RhcnQ7XG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKCkge1xuICAgICAgLy8gR2l2ZW4gc3RlcHNpemUsIGV2YWx1YXRlIHdoZXRoZXIgZXZlcnkgc3RlcHNpemUtdGggdGljayBjYW4gYmUgc2hvd24uXG4gICAgICAvLyBJZiBpdCBjYW4gbm90LCB0aGVuIGluY3JlYXNlIHRoZSBzdGVwc2l6ZSBieSAxLCBhbmQgdHJ5IGFnYWluLlxuXG4gICAgICB2YXIgZW50cnkgPSB0aWNrcyA9PT0gbnVsbCB8fCB0aWNrcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGlja3NbaW5kZXhdO1xuXG4gICAgICAvLyBCcmVhayBjb25kaXRpb24gLSBJZiB3ZSBoYXZlIGV2YWx1YXRlIGFsbCB0aGUgdGlja3MsIHRoZW4gd2UgYXJlIGRvbmUuXG4gICAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHY6IGdldEV2ZXJ5TnRoV2l0aENvbmRpdGlvbih0aWNrcywgc3RlcHNpemUpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBlbGVtZW50IGNvbGxpZGVzIHdpdGggdGhlIG5leHQgZWxlbWVudFxuICAgICAgdmFyIGkgPSBpbmRleDtcbiAgICAgIHZhciBzaXplO1xuICAgICAgdmFyIGdldFNpemUgPSBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgICBpZiAoc2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2l6ZSA9IGdldFRpY2tTaXplKGVudHJ5LCBpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgIH07XG4gICAgICB2YXIgdGlja0Nvb3JkID0gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgIC8vIFdlIHdpbGwgYWx3YXlzIHNob3cgdGhlIGZpcnN0IHRpY2suXG4gICAgICB2YXIgaXNTaG93ID0gaW5kZXggPT09IDAgfHwgaXNWaXNpYmxlKHNpZ24sIHRpY2tDb29yZCwgZ2V0U2l6ZSwgc3RhcnQsIGVuZCk7XG4gICAgICBpZiAoIWlzU2hvdykge1xuICAgICAgICAvLyBTdGFydCBhbGwgb3ZlciB3aXRoIGEgbGFyZ2VyIHN0ZXBzaXplXG4gICAgICAgIGluZGV4ID0gMDtcbiAgICAgICAgc3RhcnQgPSBpbml0aWFsU3RhcnQ7XG4gICAgICAgIHN0ZXBzaXplICs9IDE7XG4gICAgICB9XG4gICAgICBpZiAoaXNTaG93KSB7XG4gICAgICAgIC8vIElmIGl0IGNhbiBiZSBzaG93biwgdXBkYXRlIHRoZSBzdGFydFxuICAgICAgICBzdGFydCA9IHRpY2tDb29yZCArIHNpZ24gKiAoZ2V0U2l6ZSgpIC8gMiArIG1pblRpY2tHYXApO1xuICAgICAgICBpbmRleCArPSBzdGVwc2l6ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9yZXQ7XG4gIHdoaWxlIChzdGVwc2l6ZSA8PSByZXN1bHQubGVuZ3RoKSB7XG4gICAgX3JldCA9IF9sb29wKCk7XG4gICAgaWYgKF9yZXQpIHJldHVybiBfcmV0LnY7XG4gIH1cbiAgcmV0dXJuIFtdO1xufSJdLCJuYW1lcyI6WyJpc1Zpc2libGUiLCJnZXRFdmVyeU50aFdpdGhDb25kaXRpb24iLCJnZXRFcXVpZGlzdGFudFRpY2tzIiwic2lnbiIsImJvdW5kYXJpZXMiLCJnZXRUaWNrU2l6ZSIsInRpY2tzIiwibWluVGlja0dhcCIsInJlc3VsdCIsInNsaWNlIiwiaW5pdGlhbFN0YXJ0Iiwic3RhcnQiLCJlbmQiLCJpbmRleCIsInN0ZXBzaXplIiwiX2xvb3AiLCJlbnRyeSIsInVuZGVmaW5lZCIsInYiLCJpIiwic2l6ZSIsImdldFNpemUiLCJ0aWNrQ29vcmQiLCJjb29yZGluYXRlIiwiaXNTaG93IiwiX3JldCIsImxlbmd0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/cartesian/getTicks.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTicks: () => (/* binding */ getTicks)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_TickUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TickUtils */ \"(ssr)/./node_modules/recharts/es6/util/TickUtils.js\");\n/* harmony import */ var _getEquidistantTicks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getEquidistantTicks */ \"(ssr)/./node_modules/recharts/es6/cartesian/getEquidistantTicks.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start;\n var end = boundaries.end;\n var _loop = function _loop(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === len - 1) {\n var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for(var i = len - 1; i >= 0; i--){\n _loop(i);\n }\n return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n var result = (ticks || []).slice();\n var len = result.length;\n var start = boundaries.start, end = boundaries.end;\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailSize = getTickSize(tail, len - 1);\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, tail.tickCoord, function() {\n return tailSize;\n }, start, end);\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n isShow: true\n });\n }\n }\n var count = preserveEnd ? len - 1 : len;\n var _loop2 = function _loop2(i) {\n var entry = result[i];\n var size;\n var getSize = function getSize() {\n if (size === undefined) {\n size = getTickSize(entry, i);\n }\n return size;\n };\n if (i === 0) {\n var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n tickCoord: entry.coordinate\n });\n }\n var isShow = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.isVisible)(sign, entry.tickCoord, getSize, start, end);\n if (isShow) {\n start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n isShow: true\n });\n }\n };\n for(var i = 0; i < count; i++){\n _loop2(i);\n }\n return result;\n}\nfunction getTicks(props, fontSize, letterSpacing) {\n var tick = props.tick, ticks = props.ticks, viewBox = props.viewBox, minTickGap = props.minTickGap, orientation = props.orientation, interval = props.interval, tickFormatter = props.tickFormatter, unit = props.unit, angle = props.angle;\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(interval) || _util_Global__WEBPACK_IMPORTED_MODULE_3__.Global.isSsr) {\n return (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getNumberIntervalTicks)(ticks, typeof interval === \"number\" && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(interval) ? interval : 0);\n }\n var candidates = [];\n var sizeKey = orientation === \"top\" || orientation === \"bottom\" ? \"width\" : \"height\";\n var unitSize = unit && sizeKey === \"width\" ? (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(unit, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }) : {\n width: 0,\n height: 0\n };\n var getTickSize = function getTickSize(content, index) {\n var value = lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n // Recharts only supports angles when sizeKey === 'width'\n return sizeKey === \"width\" ? (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getAngledTickWidth)((0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n }), unitSize, angle) : (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_4__.getStringSize)(value, {\n fontSize: fontSize,\n letterSpacing: letterSpacing\n })[sizeKey];\n };\n var sign = ticks.length >= 2 ? (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(ticks[1].coordinate - ticks[0].coordinate) : 1;\n var boundaries = (0,_util_TickUtils__WEBPACK_IMPORTED_MODULE_1__.getTickBoundaries)(viewBox, sign, sizeKey);\n if (interval === \"equidistantPreserveStart\") {\n return (0,_getEquidistantTicks__WEBPACK_IMPORTED_MODULE_5__.getEquidistantTicks)(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n if (interval === \"preserveStart\" || interval === \"preserveStartEnd\") {\n candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === \"preserveStartEnd\");\n } else {\n candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n }\n return candidates.filter(function(entry) {\n return entry.isShow;\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NhcnRlc2lhbi9nZXRUaWNrcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0Qs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VTNDLG1FQUFrQkEsQ0FBQ0wsNkRBQWFBLENBQUNkLE9BQU87WUFDbkVtRCxVQUFVQTtZQUNWQyxlQUFlQTtRQUNqQixJQUFJVyxVQUFVSixTQUFTN0MsNkRBQWFBLENBQUNkLE9BQU87WUFDMUNtRCxVQUFVQTtZQUNWQyxlQUFlQTtRQUNqQixFQUFFLENBQUNVLFFBQVE7SUFDYjtJQUNBLElBQUl4QyxPQUFPRyxNQUFNakMsTUFBTSxJQUFJLElBQUlvQix5REFBUUEsQ0FBQ2EsS0FBSyxDQUFDLEVBQUUsQ0FBQ2EsVUFBVSxHQUFHYixLQUFLLENBQUMsRUFBRSxDQUFDYSxVQUFVLElBQUk7SUFDckYsSUFBSWYsYUFBYU4sa0VBQWlCQSxDQUFDcUMsU0FBU2hDLE1BQU13QztJQUNsRCxJQUFJTixhQUFhLDRCQUE0QjtRQUMzQyxPQUFPcEMseUVBQW1CQSxDQUFDRSxNQUFNQyxZQUFZQyxhQUFhQyxPQUFPQztJQUNuRTtJQUNBLElBQUk4QixhQUFhLG1CQUFtQkEsYUFBYSxvQkFBb0I7UUFDbkVLLGFBQWFwQixjQUFjbkIsTUFBTUMsWUFBWUMsYUFBYUMsT0FBT0MsWUFBWThCLGFBQWE7SUFDNUYsT0FBTztRQUNMSyxhQUFheEMsWUFBWUMsTUFBTUMsWUFBWUMsYUFBYUMsT0FBT0M7SUFDakU7SUFDQSxPQUFPbUMsV0FBVzVFLE1BQU0sQ0FBQyxTQUFVZ0QsS0FBSztRQUN0QyxPQUFPQSxNQUFNTyxNQUFNO0lBQ3JCO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jYXJ0ZXNpYW4vZ2V0VGlja3MuanM/MzhlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCB7IG1hdGhTaWduLCBpc051bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGdldFN0cmluZ1NpemUgfSBmcm9tICcuLi91dGlsL0RPTVV0aWxzJztcbmltcG9ydCB7IEdsb2JhbCB9IGZyb20gJy4uL3V0aWwvR2xvYmFsJztcbmltcG9ydCB7IGlzVmlzaWJsZSwgZ2V0VGlja0JvdW5kYXJpZXMsIGdldE51bWJlckludGVydmFsVGlja3MsIGdldEFuZ2xlZFRpY2tXaWR0aCB9IGZyb20gJy4uL3V0aWwvVGlja1V0aWxzJztcbmltcG9ydCB7IGdldEVxdWlkaXN0YW50VGlja3MgfSBmcm9tICcuL2dldEVxdWlkaXN0YW50VGlja3MnO1xuZnVuY3Rpb24gZ2V0VGlja3NFbmQoc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwKSB7XG4gIHZhciByZXN1bHQgPSAodGlja3MgfHwgW10pLnNsaWNlKCk7XG4gIHZhciBsZW4gPSByZXN1bHQubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBib3VuZGFyaWVzLnN0YXJ0O1xuICB2YXIgZW5kID0gYm91bmRhcmllcy5lbmQ7XG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcbiAgICB2YXIgZW50cnkgPSByZXN1bHRbaV07XG4gICAgdmFyIHNpemU7XG4gICAgdmFyIGdldFNpemUgPSBmdW5jdGlvbiBnZXRTaXplKCkge1xuICAgICAgaWYgKHNpemUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzaXplID0gZ2V0VGlja1NpemUoZW50cnksIGkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNpemU7XG4gICAgfTtcbiAgICBpZiAoaSA9PT0gbGVuIC0gMSkge1xuICAgICAgdmFyIGdhcCA9IHNpZ24gKiAoZW50cnkuY29vcmRpbmF0ZSArIHNpZ24gKiBnZXRTaXplKCkgLyAyIC0gZW5kKTtcbiAgICAgIHJlc3VsdFtpXSA9IGVudHJ5ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIHRpY2tDb29yZDogZ2FwID4gMCA/IGVudHJ5LmNvb3JkaW5hdGUgLSBnYXAgKiBzaWduIDogZW50cnkuY29vcmRpbmF0ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtpXSA9IGVudHJ5ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIHRpY2tDb29yZDogZW50cnkuY29vcmRpbmF0ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBpc1Nob3cgPSBpc1Zpc2libGUoc2lnbiwgZW50cnkudGlja0Nvb3JkLCBnZXRTaXplLCBzdGFydCwgZW5kKTtcbiAgICBpZiAoaXNTaG93KSB7XG4gICAgICBlbmQgPSBlbnRyeS50aWNrQ29vcmQgLSBzaWduICogKGdldFNpemUoKSAvIDIgKyBtaW5UaWNrR2FwKTtcbiAgICAgIHJlc3VsdFtpXSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZW50cnkpLCB7fSwge1xuICAgICAgICBpc1Nob3c6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgX2xvb3AoaSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldFRpY2tzU3RhcnQoc2lnbiwgYm91bmRhcmllcywgZ2V0VGlja1NpemUsIHRpY2tzLCBtaW5UaWNrR2FwLCBwcmVzZXJ2ZUVuZCkge1xuICB2YXIgcmVzdWx0ID0gKHRpY2tzIHx8IFtdKS5zbGljZSgpO1xuICB2YXIgbGVuID0gcmVzdWx0Lmxlbmd0aDtcbiAgdmFyIHN0YXJ0ID0gYm91bmRhcmllcy5zdGFydCxcbiAgICBlbmQgPSBib3VuZGFyaWVzLmVuZDtcbiAgaWYgKHByZXNlcnZlRW5kKSB7XG4gICAgLy8gVHJ5IHRvIGd1YXJhbnRlZSB0aGUgdGFpbCB0byBiZSBkaXNwbGF5ZWRcbiAgICB2YXIgdGFpbCA9IHRpY2tzW2xlbiAtIDFdO1xuICAgIHZhciB0YWlsU2l6ZSA9IGdldFRpY2tTaXplKHRhaWwsIGxlbiAtIDEpO1xuICAgIHZhciB0YWlsR2FwID0gc2lnbiAqICh0YWlsLmNvb3JkaW5hdGUgKyBzaWduICogdGFpbFNpemUgLyAyIC0gZW5kKTtcbiAgICByZXN1bHRbbGVuIC0gMV0gPSB0YWlsID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0YWlsKSwge30sIHtcbiAgICAgIHRpY2tDb29yZDogdGFpbEdhcCA+IDAgPyB0YWlsLmNvb3JkaW5hdGUgLSB0YWlsR2FwICogc2lnbiA6IHRhaWwuY29vcmRpbmF0ZVxuICAgIH0pO1xuICAgIHZhciBpc1RhaWxTaG93ID0gaXNWaXNpYmxlKHNpZ24sIHRhaWwudGlja0Nvb3JkLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGFpbFNpemU7XG4gICAgfSwgc3RhcnQsIGVuZCk7XG4gICAgaWYgKGlzVGFpbFNob3cpIHtcbiAgICAgIGVuZCA9IHRhaWwudGlja0Nvb3JkIC0gc2lnbiAqICh0YWlsU2l6ZSAvIDIgKyBtaW5UaWNrR2FwKTtcbiAgICAgIHJlc3VsdFtsZW4gLSAxXSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGFpbCksIHt9LCB7XG4gICAgICAgIGlzU2hvdzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHZhciBjb3VudCA9IHByZXNlcnZlRW5kID8gbGVuIC0gMSA6IGxlbjtcbiAgdmFyIF9sb29wMiA9IGZ1bmN0aW9uIF9sb29wMihpKSB7XG4gICAgdmFyIGVudHJ5ID0gcmVzdWx0W2ldO1xuICAgIHZhciBzaXplO1xuICAgIHZhciBnZXRTaXplID0gZnVuY3Rpb24gZ2V0U2l6ZSgpIHtcbiAgICAgIGlmIChzaXplID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2l6ZSA9IGdldFRpY2tTaXplKGVudHJ5LCBpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzaXplO1xuICAgIH07XG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHZhciBnYXAgPSBzaWduICogKGVudHJ5LmNvb3JkaW5hdGUgLSBzaWduICogZ2V0U2l6ZSgpIC8gMiAtIHN0YXJ0KTtcbiAgICAgIHJlc3VsdFtpXSA9IGVudHJ5ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIHRpY2tDb29yZDogZ2FwIDwgMCA/IGVudHJ5LmNvb3JkaW5hdGUgLSBnYXAgKiBzaWduIDogZW50cnkuY29vcmRpbmF0ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtpXSA9IGVudHJ5ID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIHRpY2tDb29yZDogZW50cnkuY29vcmRpbmF0ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciBpc1Nob3cgPSBpc1Zpc2libGUoc2lnbiwgZW50cnkudGlja0Nvb3JkLCBnZXRTaXplLCBzdGFydCwgZW5kKTtcbiAgICBpZiAoaXNTaG93KSB7XG4gICAgICBzdGFydCA9IGVudHJ5LnRpY2tDb29yZCArIHNpZ24gKiAoZ2V0U2l6ZSgpIC8gMiArIG1pblRpY2tHYXApO1xuICAgICAgcmVzdWx0W2ldID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGlzU2hvdzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBfbG9vcDIoaSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaWNrcyhwcm9wcywgZm9udFNpemUsIGxldHRlclNwYWNpbmcpIHtcbiAgdmFyIHRpY2sgPSBwcm9wcy50aWNrLFxuICAgIHRpY2tzID0gcHJvcHMudGlja3MsXG4gICAgdmlld0JveCA9IHByb3BzLnZpZXdCb3gsXG4gICAgbWluVGlja0dhcCA9IHByb3BzLm1pblRpY2tHYXAsXG4gICAgb3JpZW50YXRpb24gPSBwcm9wcy5vcmllbnRhdGlvbixcbiAgICBpbnRlcnZhbCA9IHByb3BzLmludGVydmFsLFxuICAgIHRpY2tGb3JtYXR0ZXIgPSBwcm9wcy50aWNrRm9ybWF0dGVyLFxuICAgIHVuaXQgPSBwcm9wcy51bml0LFxuICAgIGFuZ2xlID0gcHJvcHMuYW5nbGU7XG4gIGlmICghdGlja3MgfHwgIXRpY2tzLmxlbmd0aCB8fCAhdGljaykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoaXNOdW1iZXIoaW50ZXJ2YWwpIHx8IEdsb2JhbC5pc1Nzcikge1xuICAgIHJldHVybiBnZXROdW1iZXJJbnRlcnZhbFRpY2tzKHRpY2tzLCB0eXBlb2YgaW50ZXJ2YWwgPT09ICdudW1iZXInICYmIGlzTnVtYmVyKGludGVydmFsKSA/IGludGVydmFsIDogMCk7XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcbiAgdmFyIHNpemVLZXkgPSBvcmllbnRhdGlvbiA9PT0gJ3RvcCcgfHwgb3JpZW50YXRpb24gPT09ICdib3R0b20nID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICB2YXIgdW5pdFNpemUgPSB1bml0ICYmIHNpemVLZXkgPT09ICd3aWR0aCcgPyBnZXRTdHJpbmdTaXplKHVuaXQsIHtcbiAgICBmb250U2l6ZTogZm9udFNpemUsXG4gICAgbGV0dGVyU3BhY2luZzogbGV0dGVyU3BhY2luZ1xuICB9KSA6IHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcbiAgdmFyIGdldFRpY2tTaXplID0gZnVuY3Rpb24gZ2V0VGlja1NpemUoY29udGVudCwgaW5kZXgpIHtcbiAgICB2YXIgdmFsdWUgPSBpc0Z1bmN0aW9uKHRpY2tGb3JtYXR0ZXIpID8gdGlja0Zvcm1hdHRlcihjb250ZW50LnZhbHVlLCBpbmRleCkgOiBjb250ZW50LnZhbHVlO1xuICAgIC8vIFJlY2hhcnRzIG9ubHkgc3VwcG9ydHMgYW5nbGVzIHdoZW4gc2l6ZUtleSA9PT0gJ3dpZHRoJ1xuICAgIHJldHVybiBzaXplS2V5ID09PSAnd2lkdGgnID8gZ2V0QW5nbGVkVGlja1dpZHRoKGdldFN0cmluZ1NpemUodmFsdWUsIHtcbiAgICAgIGZvbnRTaXplOiBmb250U2l6ZSxcbiAgICAgIGxldHRlclNwYWNpbmc6IGxldHRlclNwYWNpbmdcbiAgICB9KSwgdW5pdFNpemUsIGFuZ2xlKSA6IGdldFN0cmluZ1NpemUodmFsdWUsIHtcbiAgICAgIGZvbnRTaXplOiBmb250U2l6ZSxcbiAgICAgIGxldHRlclNwYWNpbmc6IGxldHRlclNwYWNpbmdcbiAgICB9KVtzaXplS2V5XTtcbiAgfTtcbiAgdmFyIHNpZ24gPSB0aWNrcy5sZW5ndGggPj0gMiA/IG1hdGhTaWduKHRpY2tzWzFdLmNvb3JkaW5hdGUgLSB0aWNrc1swXS5jb29yZGluYXRlKSA6IDE7XG4gIHZhciBib3VuZGFyaWVzID0gZ2V0VGlja0JvdW5kYXJpZXModmlld0JveCwgc2lnbiwgc2l6ZUtleSk7XG4gIGlmIChpbnRlcnZhbCA9PT0gJ2VxdWlkaXN0YW50UHJlc2VydmVTdGFydCcpIHtcbiAgICByZXR1cm4gZ2V0RXF1aWRpc3RhbnRUaWNrcyhzaWduLCBib3VuZGFyaWVzLCBnZXRUaWNrU2l6ZSwgdGlja3MsIG1pblRpY2tHYXApO1xuICB9XG4gIGlmIChpbnRlcnZhbCA9PT0gJ3ByZXNlcnZlU3RhcnQnIHx8IGludGVydmFsID09PSAncHJlc2VydmVTdGFydEVuZCcpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0VGlja3NTdGFydChzaWduLCBib3VuZGFyaWVzLCBnZXRUaWNrU2l6ZSwgdGlja3MsIG1pblRpY2tHYXAsIGludGVydmFsID09PSAncHJlc2VydmVTdGFydEVuZCcpO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRUaWNrc0VuZChzaWduLCBib3VuZGFyaWVzLCBnZXRUaWNrU2l6ZSwgdGlja3MsIG1pblRpY2tHYXApO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGVzLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gZW50cnkuaXNTaG93O1xuICB9KTtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImlzRnVuY3Rpb24iLCJtYXRoU2lnbiIsImlzTnVtYmVyIiwiZ2V0U3RyaW5nU2l6ZSIsIkdsb2JhbCIsImlzVmlzaWJsZSIsImdldFRpY2tCb3VuZGFyaWVzIiwiZ2V0TnVtYmVySW50ZXJ2YWxUaWNrcyIsImdldEFuZ2xlZFRpY2tXaWR0aCIsImdldEVxdWlkaXN0YW50VGlja3MiLCJnZXRUaWNrc0VuZCIsInNpZ24iLCJib3VuZGFyaWVzIiwiZ2V0VGlja1NpemUiLCJ0aWNrcyIsIm1pblRpY2tHYXAiLCJyZXN1bHQiLCJzbGljZSIsImxlbiIsInN0YXJ0IiwiZW5kIiwiX2xvb3AiLCJlbnRyeSIsInNpemUiLCJnZXRTaXplIiwidW5kZWZpbmVkIiwiZ2FwIiwiY29vcmRpbmF0ZSIsInRpY2tDb29yZCIsImlzU2hvdyIsImdldFRpY2tzU3RhcnQiLCJwcmVzZXJ2ZUVuZCIsInRhaWwiLCJ0YWlsU2l6ZSIsInRhaWxHYXAiLCJpc1RhaWxTaG93IiwiY291bnQiLCJfbG9vcDIiLCJnZXRUaWNrcyIsInByb3BzIiwiZm9udFNpemUiLCJsZXR0ZXJTcGFjaW5nIiwidGljayIsInZpZXdCb3giLCJvcmllbnRhdGlvbiIsImludGVydmFsIiwidGlja0Zvcm1hdHRlciIsInVuaXQiLCJhbmdsZSIsImlzU3NyIiwiY2FuZGlkYXRlcyIsInNpemVLZXkiLCJ1bml0U2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwiY29udGVudCIsImluZGV4Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/cartesian/getTicks.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js":
/*!*****************************************************************!*\
!*** ./node_modules/recharts/es6/chart/AccessibilityManager.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AccessibilityManager: () => (/* binding */ AccessibilityManager)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar AccessibilityManager = /*#__PURE__*/ function() {\n function AccessibilityManager() {\n _classCallCheck(this, AccessibilityManager);\n _defineProperty(this, \"activeIndex\", 0);\n _defineProperty(this, \"coordinateList\", []);\n _defineProperty(this, \"layout\", \"horizontal\");\n }\n _createClass(AccessibilityManager, [\n {\n key: \"setDetails\",\n value: function setDetails(_ref) {\n var _ref2;\n var _ref$coordinateList = _ref.coordinateList, coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList, _ref$container = _ref.container, container = _ref$container === void 0 ? null : _ref$container, _ref$layout = _ref.layout, layout = _ref$layout === void 0 ? null : _ref$layout, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? null : _ref$offset, _ref$mouseHandlerCall = _ref.mouseHandlerCallback, mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n this.container = container !== null && container !== void 0 ? container : this.container;\n this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n // Keep activeIndex in the bounds between 0 and the last coordinate index\n this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n }\n },\n {\n key: \"focus\",\n value: function focus() {\n this.spoofMouse();\n }\n },\n {\n key: \"keyboardEvent\",\n value: function keyboardEvent(e) {\n // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n // if there are no tooltips, since that will cause unexpected behavior of users.\n if (this.coordinateList.length === 0) {\n return;\n }\n switch(e.key){\n case \"ArrowRight\":\n {\n if (this.layout !== \"horizontal\") {\n return;\n }\n this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n this.spoofMouse();\n break;\n }\n case \"ArrowLeft\":\n {\n if (this.layout !== \"horizontal\") {\n return;\n }\n this.activeIndex = Math.max(this.activeIndex - 1, 0);\n this.spoofMouse();\n break;\n }\n default:\n {\n break;\n }\n }\n }\n },\n {\n key: \"setIndex\",\n value: function setIndex(newIndex) {\n this.activeIndex = newIndex;\n }\n },\n {\n key: \"spoofMouse\",\n value: function spoofMouse() {\n var _window, _window2;\n if (this.layout !== \"horizontal\") {\n return;\n }\n // This can happen when the tooltips suddenly stop existing as children of the component\n // That update doesn't otherwise fire events, so we have to double check here.\n if (this.coordinateList.length === 0) {\n return;\n }\n var _this$container$getBo = this.container.getBoundingClientRect(), x = _this$container$getBo.x, y = _this$container$getBo.y, height = _this$container$getBo.height;\n var coordinate = this.coordinateList[this.activeIndex].coordinate;\n var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n var pageX = x + coordinate + scrollOffsetX;\n var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n this.mouseHandlerCallback({\n pageX: pageX,\n pageY: pageY\n });\n }\n }\n ]);\n return AccessibilityManager;\n}();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FjY2Vzc2liaWxpdHlNYW5hZ2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0ssZ0JBQWdCQyxRQUFRLEVBQUVDLFdBQVc7SUFBSSxJQUFJLENBQUVELENBQUFBLG9CQUFvQkMsV0FBVSxHQUFJO1FBQUUsTUFBTSxJQUFJQyxVQUFVO0lBQXNDO0FBQUU7QUFDeEosU0FBU0Msa0JBQWtCQyxNQUFNLEVBQUVDLEtBQUs7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUQsTUFBTUUsTUFBTSxFQUFFRCxJQUFLO1FBQUUsSUFBSUUsYUFBYUgsS0FBSyxDQUFDQyxFQUFFO1FBQUVFLFdBQVdDLFVBQVUsR0FBR0QsV0FBV0MsVUFBVSxJQUFJO1FBQU9ELFdBQVdFLFlBQVksR0FBRztRQUFNLElBQUksV0FBV0YsWUFBWUEsV0FBV0csUUFBUSxHQUFHO1FBQU1DLE9BQU9DLGNBQWMsQ0FBQ1QsUUFBUVUsZUFBZU4sV0FBV08sR0FBRyxHQUFHUDtJQUFhO0FBQUU7QUFDNVUsU0FBU1EsYUFBYWYsV0FBVyxFQUFFZ0IsVUFBVSxFQUFFQyxXQUFXO0lBQUksSUFBSUQsWUFBWWQsa0JBQWtCRixZQUFZSCxTQUFTLEVBQUVtQjtJQUFhLElBQUlDLGFBQWFmLGtCQUFrQkYsYUFBYWlCO0lBQWNOLE9BQU9DLGNBQWMsQ0FBQ1osYUFBYSxhQUFhO1FBQUVV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RUFBOEU7Z0JBQzlFLElBQUksSUFBSSxDQUFDSixjQUFjLENBQUM1QixNQUFNLEtBQUssR0FBRztvQkFDcEM7Z0JBQ0Y7Z0JBQ0EsSUFBSWdELHdCQUF3QixJQUFJLENBQUNsQixTQUFTLENBQUNtQixxQkFBcUIsSUFDOURDLElBQUlGLHNCQUFzQkUsQ0FBQyxFQUMzQkMsSUFBSUgsc0JBQXNCRyxDQUFDLEVBQzNCQyxTQUFTSixzQkFBc0JJLE1BQU07Z0JBQ3ZDLElBQUlDLGFBQWEsSUFBSSxDQUFDekIsY0FBYyxDQUFDLElBQUksQ0FBQ1MsV0FBVyxDQUFDLENBQUNnQixVQUFVO2dCQUNqRSxJQUFJQyxnQkFBZ0IsQ0FBQyxDQUFDUixVQUFVUyxNQUFLLE1BQU8sUUFBUVQsWUFBWSxLQUFLLElBQUksS0FBSyxJQUFJQSxRQUFRVSxPQUFPLEtBQUs7Z0JBQ3RHLElBQUlDLGdCQUFnQixDQUFDLENBQUNWLFdBQVdRLE1BQUssTUFBTyxRQUFRUixhQUFhLEtBQUssSUFBSSxLQUFLLElBQUlBLFNBQVNXLE9BQU8sS0FBSztnQkFDekcsSUFBSUMsUUFBUVQsSUFBSUcsYUFBYUM7Z0JBQzdCLElBQUlNLFFBQVFULElBQUksSUFBSSxDQUFDakIsTUFBTSxDQUFDMkIsR0FBRyxHQUFHVCxTQUFTLElBQUlLO2dCQUMvQyxJQUFJLENBQUNyQixvQkFBb0IsQ0FBQztvQkFDeEJ1QixPQUFPQTtvQkFDUEMsT0FBT0E7Z0JBQ1Q7WUFDRjtRQUNGO0tBQUU7SUFDRixPQUFPckM7QUFDVCxJQUFJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2hhcnQvQWNjZXNzaWJpbGl0eU1hbmFnZXIuanM/OTVjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBfdG9Qcm9wZXJ0eUtleShkZXNjcmlwdG9yLmtleSksIGRlc2NyaXB0b3IpOyB9IH1cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnN0cnVjdG9yLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5leHBvcnQgdmFyIEFjY2Vzc2liaWxpdHlNYW5hZ2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQWNjZXNzaWJpbGl0eU1hbmFnZXIoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFjY2Vzc2liaWxpdHlNYW5hZ2VyKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJhY3RpdmVJbmRleFwiLCAwKTtcbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJjb29yZGluYXRlTGlzdFwiLCBbXSk7XG4gICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwibGF5b3V0XCIsICdob3Jpem9udGFsJyk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKEFjY2Vzc2liaWxpdHlNYW5hZ2VyLCBbe1xuICAgIGtleTogXCJzZXREZXRhaWxzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldERldGFpbHMoX3JlZikge1xuICAgICAgdmFyIF9yZWYyO1xuICAgICAgdmFyIF9yZWYkY29vcmRpbmF0ZUxpc3QgPSBfcmVmLmNvb3JkaW5hdGVMaXN0LFxuICAgICAgICBjb29yZGluYXRlTGlzdCA9IF9yZWYkY29vcmRpbmF0ZUxpc3QgPT09IHZvaWQgMCA/IG51bGwgOiBfcmVmJGNvb3JkaW5hdGVMaXN0LFxuICAgICAgICBfcmVmJGNvbnRhaW5lciA9IF9yZWYuY29udGFpbmVyLFxuICAgICAgICBjb250YWluZXIgPSBfcmVmJGNvbnRhaW5lciA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkY29udGFpbmVyLFxuICAgICAgICBfcmVmJGxheW91dCA9IF9yZWYubGF5b3V0LFxuICAgICAgICBsYXlvdXQgPSBfcmVmJGxheW91dCA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkbGF5b3V0LFxuICAgICAgICBfcmVmJG9mZnNldCA9IF9yZWYub2Zmc2V0LFxuICAgICAgICBvZmZzZXQgPSBfcmVmJG9mZnNldCA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkb2Zmc2V0LFxuICAgICAgICBfcmVmJG1vdXNlSGFuZGxlckNhbGwgPSBfcmVmLm1vdXNlSGFuZGxlckNhbGxiYWNrLFxuICAgICAgICBtb3VzZUhhbmRsZXJDYWxsYmFjayA9IF9yZWYkbW91c2VIYW5kbGVyQ2FsbCA9PT0gdm9pZCAwID8gbnVsbCA6IF9yZWYkbW91c2VIYW5kbGVyQ2FsbDtcbiAgICAgIHRoaXMuY29vcmRpbmF0ZUxpc3QgPSAoX3JlZjIgPSBjb29yZGluYXRlTGlzdCAhPT0gbnVsbCAmJiBjb29yZGluYXRlTGlzdCAhPT0gdm9pZCAwID8gY29vcmRpbmF0ZUxpc3QgOiB0aGlzLmNvb3JkaW5hdGVMaXN0KSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiBbXTtcbiAgICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyICE9PSBudWxsICYmIGNvbnRhaW5lciAhPT0gdm9pZCAwID8gY29udGFpbmVyIDogdGhpcy5jb250YWluZXI7XG4gICAgICB0aGlzLmxheW91dCA9IGxheW91dCAhPT0gbnVsbCAmJiBsYXlvdXQgIT09IHZvaWQgMCA/IGxheW91dCA6IHRoaXMubGF5b3V0O1xuICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQgIT09IG51bGwgJiYgb2Zmc2V0ICE9PSB2b2lkIDAgPyBvZmZzZXQgOiB0aGlzLm9mZnNldDtcbiAgICAgIHRoaXMubW91c2VIYW5kbGVyQ2FsbGJhY2sgPSBtb3VzZUhhbmRsZXJDYWxsYmFjayAhPT0gbnVsbCAmJiBtb3VzZUhhbmRsZXJDYWxsYmFjayAhPT0gdm9pZCAwID8gbW91c2VIYW5kbGVyQ2FsbGJhY2sgOiB0aGlzLm1vdXNlSGFuZGxlckNhbGxiYWNrO1xuXG4gICAgICAvLyBLZWVwIGFjdGl2ZUluZGV4IGluIHRoZSBib3VuZHMgYmV0d2VlbiAwIGFuZCB0aGUgbGFzdCBjb29yZGluYXRlIGluZGV4XG4gICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gTWF0aC5taW4oTWF0aC5tYXgodGhpcy5hY3RpdmVJbmRleCwgMCksIHRoaXMuY29vcmRpbmF0ZUxpc3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvY3VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgdGhpcy5zcG9vZk1vdXNlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImtleWJvYXJkRXZlbnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24ga2V5Ym9hcmRFdmVudChlKSB7XG4gICAgICAvLyBUaGUgQWNjZXNzaWJpbGl0eU1hbmFnZXIgcmVsaWVzIG9uIHRoZSBUb29sdGlwIGNvbXBvbmVudC4gV2hlbiB0b29sdGlwcyBzdWRkZW5seSBzdG9wIGV4aXN0aW5nLFxuICAgICAgLy8gaXQgY2FuIGNhdXNlIGVycm9ycy4gV2UgdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2hlY2suIFdlIGRvbid0IHdhbnQgYXJyb3cga2V5cyB0byBiZSBwcm9jZXNzZWRcbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyB0b29sdGlwcywgc2luY2UgdGhhdCB3aWxsIGNhdXNlIHVuZXhwZWN0ZWQgYmVoYXZpb3Igb2YgdXNlcnMuXG4gICAgICBpZiAodGhpcy5jb29yZGluYXRlTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlLmtleSkge1xuICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgIT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gTWF0aC5taW4odGhpcy5hY3RpdmVJbmRleCArIDEsIHRoaXMuY29vcmRpbmF0ZUxpc3QubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICB0aGlzLnNwb29mTW91c2UoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgIT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gTWF0aC5tYXgodGhpcy5hY3RpdmVJbmRleCAtIDEsIDApO1xuICAgICAgICAgICAgdGhpcy5zcG9vZk1vdXNlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRJbmRleFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRJbmRleChuZXdJbmRleCkge1xuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IG5ld0luZGV4O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzcG9vZk1vdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNwb29mTW91c2UoKSB7XG4gICAgICB2YXIgX3dpbmRvdywgX3dpbmRvdzI7XG4gICAgICBpZiAodGhpcy5sYXlvdXQgIT09ICdob3Jpem9udGFsJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSB0b29sdGlwcyBzdWRkZW5seSBzdG9wIGV4aXN0aW5nIGFzIGNoaWxkcmVuIG9mIHRoZSBjb21wb25lbnRcbiAgICAgIC8vIFRoYXQgdXBkYXRlIGRvZXNuJ3Qgb3RoZXJ3aXNlIGZpcmUgZXZlbnRzLCBzbyB3ZSBoYXZlIHRvIGRvdWJsZSBjaGVjayBoZXJlLlxuICAgICAgaWYgKHRoaXMuY29vcmRpbmF0ZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHZhciBfdGhpcyRjb250YWluZXIkZ2V0Qm8gPSB0aGlzLmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgeCA9IF90aGlzJGNvbnRhaW5lciRnZXRCby54LFxuICAgICAgICB5ID0gX3RoaXMkY29udGFpbmVyJGdldEJvLnksXG4gICAgICAgIGhlaWdodCA9IF90aGlzJGNvbnRhaW5lciRnZXRCby5oZWlnaHQ7XG4gICAgICB2YXIgY29vcmRpbmF0ZSA9IHRoaXMuY29vcmRpbmF0ZUxpc3RbdGhpcy5hY3RpdmVJbmRleF0uY29vcmRpbmF0ZTtcbiAgICAgIHZhciBzY3JvbGxPZmZzZXRYID0gKChfd2luZG93ID0gd2luZG93KSA9PT0gbnVsbCB8fCBfd2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93LnNjcm9sbFgpIHx8IDA7XG4gICAgICB2YXIgc2Nyb2xsT2Zmc2V0WSA9ICgoX3dpbmRvdzIgPSB3aW5kb3cpID09PSBudWxsIHx8IF93aW5kb3cyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfd2luZG93Mi5zY3JvbGxZKSB8fCAwO1xuICAgICAgdmFyIHBhZ2VYID0geCArIGNvb3JkaW5hdGUgKyBzY3JvbGxPZmZzZXRYO1xuICAgICAgdmFyIHBhZ2VZID0geSArIHRoaXMub2Zmc2V0LnRvcCArIGhlaWdodCAvIDIgKyBzY3JvbGxPZmZzZXRZO1xuICAgICAgdGhpcy5tb3VzZUhhbmRsZXJDYWxsYmFjayh7XG4gICAgICAgIHBhZ2VYOiBwYWdlWCxcbiAgICAgICAgcGFnZVk6IHBhZ2VZXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEFjY2Vzc2liaWxpdHlNYW5hZ2VyO1xufSgpOyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJsZW5ndGgiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwidCIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInIiLCJlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiQWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJzZXREZXRhaWxzIiwiX3JlZiIsIl9yZWYyIiwiX3JlZiRjb29yZGluYXRlTGlzdCIsImNvb3JkaW5hdGVMaXN0IiwiX3JlZiRjb250YWluZXIiLCJjb250YWluZXIiLCJfcmVmJGxheW91dCIsImxheW91dCIsIl9yZWYkb2Zmc2V0Iiwib2Zmc2V0IiwiX3JlZiRtb3VzZUhhbmRsZXJDYWxsIiwibW91c2VIYW5kbGVyQ2FsbGJhY2siLCJhY3RpdmVJbmRleCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJmb2N1cyIsInNwb29mTW91c2UiLCJrZXlib2FyZEV2ZW50Iiwic2V0SW5kZXgiLCJuZXdJbmRleCIsIl93aW5kb3ciLCJfd2luZG93MiIsIl90aGlzJGNvbnRhaW5lciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIngiLCJ5IiwiaGVpZ2h0IiwiY29vcmRpbmF0ZSIsInNjcm9sbE9mZnNldFgiLCJ3aW5kb3ciLCJzY3JvbGxYIiwic2Nyb2xsT2Zmc2V0WSIsInNjcm9sbFkiLCJwYWdlWCIsInBhZ2VZIiwidG9wIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/AreaChart.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/chart/AreaChart.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AreaChart: () => (/* binding */ AreaChart)\n/* harmony export */ });\n/* harmony import */ var _generateCategoricalChart__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generateCategoricalChart */ \"(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js\");\n/* harmony import */ var _cartesian_Area__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cartesian/Area */ \"(ssr)/./node_modules/recharts/es6/cartesian/Area.js\");\n/* harmony import */ var _cartesian_XAxis__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cartesian/XAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/XAxis.js\");\n/* harmony import */ var _cartesian_YAxis__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/YAxis */ \"(ssr)/./node_modules/recharts/es6/cartesian/YAxis.js\");\n/* harmony import */ var _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/**\n * @fileOverview Area Chart\n */ \n\n\n\n\nvar AreaChart = (0,_generateCategoricalChart__WEBPACK_IMPORTED_MODULE_0__.generateCategoricalChart)({\n chartName: \"AreaChart\",\n GraphicalChild: _cartesian_Area__WEBPACK_IMPORTED_MODULE_1__.Area,\n axisComponents: [\n {\n axisType: \"xAxis\",\n AxisComp: _cartesian_XAxis__WEBPACK_IMPORTED_MODULE_2__.XAxis\n },\n {\n axisType: \"yAxis\",\n AxisComp: _cartesian_YAxis__WEBPACK_IMPORTED_MODULE_3__.YAxis\n }\n ],\n formatAxisMap: _util_CartesianUtils__WEBPACK_IMPORTED_MODULE_4__.formatAxisMap\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FyZWFDaGFydC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7Q0FFQyxHQUNxRTtBQUM3QjtBQUNFO0FBQ0E7QUFDWTtBQUNoRCxJQUFJSyxZQUFZTCxtRkFBd0JBLENBQUM7SUFDOUNNLFdBQVc7SUFDWEMsZ0JBQWdCTixpREFBSUE7SUFDcEJPLGdCQUFnQjtRQUFDO1lBQ2ZDLFVBQVU7WUFDVkMsVUFBVVIsbURBQUtBO1FBQ2pCO1FBQUc7WUFDRE8sVUFBVTtZQUNWQyxVQUFVUCxtREFBS0E7UUFDakI7S0FBRTtJQUNGQyxlQUFlQSwrREFBYUE7QUFDOUIsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L0FyZWFDaGFydC5qcz81NjI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBBcmVhIENoYXJ0XG4gKi9cbmltcG9ydCB7IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB9IGZyb20gJy4vZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0JztcbmltcG9ydCB7IEFyZWEgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vQXJlYSc7XG5pbXBvcnQgeyBYQXhpcyB9IGZyb20gJy4uL2NhcnRlc2lhbi9YQXhpcyc7XG5pbXBvcnQgeyBZQXhpcyB9IGZyb20gJy4uL2NhcnRlc2lhbi9ZQXhpcyc7XG5pbXBvcnQgeyBmb3JtYXRBeGlzTWFwIH0gZnJvbSAnLi4vdXRpbC9DYXJ0ZXNpYW5VdGlscyc7XG5leHBvcnQgdmFyIEFyZWFDaGFydCA9IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCh7XG4gIGNoYXJ0TmFtZTogJ0FyZWFDaGFydCcsXG4gIEdyYXBoaWNhbENoaWxkOiBBcmVhLFxuICBheGlzQ29tcG9uZW50czogW3tcbiAgICBheGlzVHlwZTogJ3hBeGlzJyxcbiAgICBBeGlzQ29tcDogWEF4aXNcbiAgfSwge1xuICAgIGF4aXNUeXBlOiAneUF4aXMnLFxuICAgIEF4aXNDb21wOiBZQXhpc1xuICB9XSxcbiAgZm9ybWF0QXhpc01hcDogZm9ybWF0QXhpc01hcFxufSk7Il0sIm5hbWVzIjpbImdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCIsIkFyZWEiLCJYQXhpcyIsIllBeGlzIiwiZm9ybWF0QXhpc01hcCIsIkFyZWFDaGFydCIsImNoYXJ0TmFtZSIsIkdyYXBoaWNhbENoaWxkIiwiYXhpc0NvbXBvbmVudHMiLCJheGlzVHlwZSIsIkF4aXNDb21wIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/AreaChart.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/chart/generateCategoricalChart.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createDefaultState: () => (/* binding */ createDefaultState),\n/* harmony export */ generateCategoricalChart: () => (/* binding */ generateCategoricalChart),\n/* harmony export */ getAxisMapByAxes: () => (/* binding */ getAxisMapByAxes)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/range */ \"(ssr)/./node_modules/lodash/range.js\");\n/* harmony import */ var lodash_range__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_range__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/throttle */ \"(ssr)/./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _container_Surface__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../container/Surface */ \"(ssr)/./node_modules/recharts/es6/container/Surface.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../component/Tooltip */ \"(ssr)/./node_modules/recharts/es6/component/Tooltip.js\");\n/* harmony import */ var _component_Legend__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../component/Legend */ \"(ssr)/./node_modules/recharts/es6/component/Legend.js\");\n/* harmony import */ var _shape_Dot__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../shape/Dot */ \"(ssr)/./node_modules/recharts/es6/shape/Dot.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../cartesian/Brush */ \"(ssr)/./node_modules/recharts/es6/cartesian/Brush.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\");\n/* harmony import */ var _util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../util/DetectReferenceElementsDomain */ \"(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _util_ShallowEqual__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../util/ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _util_Events__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../util/Events */ \"(ssr)/./node_modules/recharts/es6/util/Events.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _AccessibilityManager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./AccessibilityManager */ \"(ssr)/./node_modules/recharts/es6/chart/AccessibilityManager.js\");\n/* harmony import */ var _util_isDomainSpecifiedByUser__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/isDomainSpecifiedByUser */ \"(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js\");\n/* harmony import */ var _util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../util/ActiveShapeUtils */ \"(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\");\n/* harmony import */ var _component_Cursor__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../component/Cursor */ \"(ssr)/./node_modules/recharts/es6/component/Cursor.js\");\n/* harmony import */ var _context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../context/chartLayoutContext */ \"(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\");\nvar _excluded = [\n \"item\"\n], _excluded2 = [\n \"children\",\n \"className\",\n \"width\",\n \"height\",\n \"style\",\n \"compact\",\n \"title\",\n \"desc\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n// eslint-disable-next-line no-restricted-imports\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ORIENT_MAP = {\n xAxis: [\n \"bottom\",\n \"top\"\n ],\n yAxis: [\n \"left\",\n \"right\"\n ]\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n width: \"100%\",\n height: \"100%\"\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */ function renderAsIs(element) {\n return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n if (layout === \"horizontal\") {\n return rangeObj.x;\n }\n if (layout === \"vertical\") {\n return rangeObj.y;\n }\n if (layout === \"centric\") {\n return rangeObj.angle;\n }\n return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n var entry = tooltipTicks.find(function(tick) {\n return tick && tick.index === activeIndex;\n });\n if (entry) {\n if (layout === \"horizontal\") {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n if (layout === \"vertical\") {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n if (layout === \"centric\") {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.polarToCartesian)(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n angle: _angle,\n radius: _radius\n });\n }\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.polarToCartesian)(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n angle: angle,\n radius: radius\n });\n }\n return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n var graphicalItems = _ref.graphicalItems, dataStartIndex = _ref.dataStartIndex, dataEndIndex = _ref.dataEndIndex;\n var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function(result, child) {\n var itemData = child.props.data;\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n return result;\n }, []);\n if (itemsData.length > 0) {\n return itemsData;\n }\n if (data && data.length && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(dataStartIndex) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n return axisType === \"number\" ? [\n 0,\n \"auto\"\n ] : undefined;\n}\n/**\n * Get the content to be displayed in the tooltip\n * @param {Object} state Current state\n * @param {Array} chartData The data defined in chart\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */ var getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n var graphicalItems = state.graphicalItems, tooltipAxis = state.tooltipAxis;\n var displayedData = getDisplayedData(chartData, state);\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n }\n // get data by activeIndex when the axis don't allow duplicated category\n return graphicalItems.reduce(function(result, child) {\n var _child$props$data;\n /**\n * Fixes: https://github.com/recharts/recharts/issues/3669\n * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n */ var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n if (data && state.dataStartIndex + state.dataEndIndex !== 0) {\n data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n }\n var payload;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n var entries = data === undefined ? displayedData : data;\n payload = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(entries, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n if (!payload) {\n return result;\n }\n return [].concat(_toConsumableArray(result), [\n (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTooltipItem)(child, payload)\n ]);\n }, []);\n};\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param {Object} state current state\n * @param {Array} chartData the data defined in chart\n * @param {String} layout The layout type of chart\n * @param {Object} rangeObj { x, y } coordinates\n * @return {Object} Tooltip data data\n */ var getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n var rangeData = rangeObj || {\n x: state.chartX,\n y: state.chartY\n };\n var pos = calculateTooltipPos(rangeData, layout);\n var ticks = state.orderedTooltipTicks, axis = state.tooltipAxis, tooltipTicks = state.tooltipTicks;\n var activeIndex = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.calculateActiveTickIndex)(pos, ticks, tooltipTicks, axis);\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n return {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n }\n return null;\n};\n/**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n var axes = _ref2.axes, graphicalItems = _ref2.graphicalItems, axisType = _ref2.axisType, axisIdKey = _ref2.axisIdKey, stackGroups = _ref2.stackGroups, dataStartIndex = _ref2.dataStartIndex, dataEndIndex = _ref2.dataEndIndex;\n var layout = props.layout, children = props.children, stackOffset = props.stackOffset;\n var isCategorical = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.isCategoricalAxis)(layout, axisType);\n // Eliminate duplicated axes\n return axes.reduce(function(result, child) {\n var _child$props$domain2;\n var _child$props = child.props, type = _child$props.type, dataKey = _child$props.dataKey, allowDataOverflow = _child$props.allowDataOverflow, allowDuplicatedCategory = _child$props.allowDuplicatedCategory, scale = _child$props.scale, ticks = _child$props.ticks, includeHidden = _child$props.includeHidden;\n var axisId = child.props[axisIdKey];\n if (result[axisId]) {\n return result;\n }\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems.filter(function(item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var domain, duplicateDomain, categoricalDomain;\n /*\n * This is a hack to short-circuit the domain creation here to enhance performance.\n * Usually, the data is used to determine the domain, but when the user specifies\n * a domain upfront (via props), there is no need to calculate the domain start and end,\n * which is very expensive for a larger amount of data.\n * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n * because the axis is supposed to ignore the specified domain that way.\n */ if ((0,_util_isDomainSpecifiedByUser__WEBPACK_IMPORTED_MODULE_12__.isDomainSpecifiedByUser)(child.props.domain, allowDataOverflow, type)) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(child.props.domain, null, allowDataOverflow);\n /* The chart can be categorical and have the domain specified in numbers\n * we still need to calculate the categorical domain\n * TODO: refactor this more\n */ if (isCategorical && (type === \"number\" || scale !== \"auto\")) {\n categoricalDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, \"category\");\n }\n }\n // if the domain is defaulted we need this for `originalDomain` as well\n var defaultDomain = getDefaultDomainByAxisType(type);\n // we didn't create the domain from user's props above, so we need to calculate it\n if (!domain || domain.length === 0) {\n var _child$props$domain;\n var childDomain = (_child$props$domain = child.props.domain) !== null && _child$props$domain !== void 0 ? _child$props$domain : defaultDomain;\n if (dataKey) {\n // has dataKey in <Axis />\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, type);\n if (type === \"category\" && isCategorical) {\n // the field type is category data and this axis is categorical axis\n var duplicate = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.hasDuplicate)(domain);\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain;\n // When category axis has duplicated text, serial numbers are used to generate scale\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseDomainOfCategoryAxis)(childDomain, domain, child).reduce(function(finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [\n entry\n ]);\n }, []);\n }\n } else if (type === \"category\") {\n // the field type is category data and this axis is numerical axis\n if (!allowDuplicatedCategory) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseDomainOfCategoryAxis)(childDomain, domain, child).reduce(function(finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === \"\" || lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [\n entry\n ]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function(entry) {\n return entry !== \"\" && !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(entry);\n });\n }\n } else if (type === \"number\") {\n // the field type is numerical\n var errorBarsDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseErrorBarsOfAxis)(displayedData, graphicalItems.filter(function(item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), dataKey, axisType, layout);\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n if (isCategorical && (type === \"number\" || scale !== \"auto\")) {\n categoricalDomain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfDataByKey)(displayedData, dataKey, \"category\");\n }\n } else if (isCategorical) {\n // the axis is a categorical axis\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === \"number\") {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === \"expand\" ? [\n 0,\n 1\n ] : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfStackGroups)(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfItemsWithSameAxis)(displayedData, graphicalItems.filter(function(item) {\n return item.props[axisIdKey] === axisId && (includeHidden || !item.props.hide);\n }), type, layout, true);\n }\n if (type === \"number\") {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType, ticks);\n if (childDomain) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(childDomain, domain, allowDataOverflow);\n }\n } else if (type === \"category\" && childDomain) {\n var axisDomain = childDomain;\n var isDomainValid = domain.every(function(entry) {\n return axisDomain.indexOf(entry) >= 0;\n });\n if (isDomainValid) {\n domain = axisDomain;\n }\n }\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, child.props), {}, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: (_child$props$domain2 = child.props.domain) !== null && _child$props$domain2 !== void 0 ? _child$props$domain2 : defaultDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }, {});\n};\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n var graphicalItems = _ref3.graphicalItems, Axis = _ref3.Axis, axisType = _ref3.axisType, axisIdKey = _ref3.axisIdKey, stackGroups = _ref3.stackGroups, dataStartIndex = _ref3.dataStartIndex, dataEndIndex = _ref3.dataEndIndex;\n var layout = props.layout, children = props.children;\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorical = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.isCategoricalAxis)(layout, axisType);\n var index = -1;\n // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n return graphicalItems.reduce(function(result, child) {\n var axisId = child.props[axisIdKey];\n var originalDomain = getDefaultDomainByAxisType(\"number\");\n if (!result[axisId]) {\n index++;\n var domain;\n if (isCategorical) {\n domain = lodash_range__WEBPACK_IMPORTED_MODULE_3___default()(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfStackGroups)(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType);\n } else {\n domain = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.parseSpecifiedDomain)(originalDomain, (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getDomainOfItemsWithSameAxis)(displayedData, graphicalItems.filter(function(item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), \"number\", layout), Axis.defaultProps.allowDataOverflow);\n domain = (0,_util_DetectReferenceElementsDomain__WEBPACK_IMPORTED_MODULE_13__.detectReferenceElementsDomain)(children, domain, axisId, axisType);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n axisType: axisType\n }, Axis.defaultProps), {}, {\n hide: true,\n orientation: lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n domain: domain,\n originalDomain: originalDomain,\n isCategorical: isCategorical,\n layout: layout\n })));\n }\n return result;\n }, {});\n};\n/**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {React.ComponentType} [AxisComp] Axis Component\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */ var getAxisMap = function getAxisMap(props, _ref4) {\n var _ref4$axisType = _ref4.axisType, axisType = _ref4$axisType === void 0 ? \"xAxis\" : _ref4$axisType, AxisComp = _ref4.AxisComp, graphicalItems = _ref4.graphicalItems, stackGroups = _ref4.stackGroups, dataStartIndex = _ref4.dataStartIndex, dataEndIndex = _ref4.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\");\n // Get all the instance of Axis\n var axes = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findAllByType)(children, AxisComp);\n var axisMap = {};\n if (axes && axes.length) {\n axisMap = getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n var axis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(axisMap);\n var tooltipTicks = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: lodash_sortBy__WEBPACK_IMPORTED_MODULE_5___default()(tooltipTicks, function(o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(axis, tooltipTicks)\n };\n};\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */ var createDefaultState = function createDefaultState(props) {\n var children = props.children, defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var startIndex = 0;\n var endIndex = 0;\n if (props.data && props.data.length !== 0) {\n endIndex = props.data.length - 1;\n }\n if (brushItem && brushItem.props) {\n if (brushItem.props.startIndex >= 0) {\n startIndex = brushItem.props.startIndex;\n }\n if (brushItem.props.endIndex >= 0) {\n endIndex = brushItem.props.endIndex;\n }\n }\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: Boolean(defaultShowTooltip)\n };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n return graphicalItems.some(function(item) {\n var name = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item && item.type);\n return name && name.indexOf(\"Bar\") >= 0;\n });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n if (layout === \"horizontal\") {\n return {\n numericAxisName: \"yAxis\",\n cateAxisName: \"xAxis\"\n };\n }\n if (layout === \"vertical\") {\n return {\n numericAxisName: \"xAxis\",\n cateAxisName: \"yAxis\"\n };\n }\n if (layout === \"centric\") {\n return {\n numericAxisName: \"radiusAxis\",\n cateAxisName: \"angleAxis\"\n };\n }\n return {\n numericAxisName: \"angleAxis\",\n cateAxisName: \"radiusAxis\"\n };\n};\n/**\n * Calculate the offset of main part in the svg element\n * @param {Object} params.props Latest props\n * @param {Array} params.graphicalItems The instances of item\n * @param {Object} params.xAxisMap The configuration of x-axis\n * @param {Object} params.yAxisMap The configuration of y-axis\n * @param {Object} prevLegendBBox The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */ var calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n var props = _ref5.props, graphicalItems = _ref5.graphicalItems, _ref5$xAxisMap = _ref5.xAxisMap, xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap, _ref5$yAxisMap = _ref5.yAxisMap, yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n var width = props.width, height = props.height, children = props.children;\n var margin = props.margin || {};\n var brushItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var legendItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Legend__WEBPACK_IMPORTED_MODULE_16__.Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function(result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function(result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n if (!entry.mirror && !entry.hide) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(result, \"\".concat(orientation)) + entry.height));\n }\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n var brushBottom = offset.bottom;\n if (brushItem) {\n offset.bottom += brushItem.props.height || _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush.defaultProps.height;\n }\n if (legendItem && prevLegendBBox) {\n // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n offset = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.appendOffsetOfLegend)(offset, graphicalItems, props, prevLegendBBox);\n }\n var offsetWidth = width - offset.left - offset.right;\n var offsetHeight = height - offset.top - offset.bottom;\n return _objectSpread(_objectSpread({\n brushBottom: brushBottom\n }, offset), {}, {\n // never return negative values for height and width\n width: Math.max(offsetWidth, 0),\n height: Math.max(offsetHeight, 0)\n });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n if (axisName === \"xAxis\") {\n return axisObj[axisName].width;\n }\n if (axisName === \"yAxis\") {\n return axisObj[axisName].height;\n }\n // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n return undefined;\n};\nvar generateCategoricalChart = function generateCategoricalChart(_ref6) {\n var _CategoricalChartWrapper;\n var chartName = _ref6.chartName, GraphicalChild = _ref6.GraphicalChild, _ref6$defaultTooltipE = _ref6.defaultTooltipEventType, defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? \"axis\" : _ref6$defaultTooltipE, _ref6$validateTooltip = _ref6.validateTooltipEventTypes, validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? [\n \"axis\"\n ] : _ref6$validateTooltip, axisComponents = _ref6.axisComponents, legendContent = _ref6.legendContent, formatAxisMap = _ref6.formatAxisMap, defaultProps = _ref6.defaultProps;\n var getFormatItems = function getFormatItems(props, currentState) {\n var graphicalItems = currentState.graphicalItems, stackGroups = currentState.stackGroups, offset = currentState.offset, updateId = currentState.updateId, dataStartIndex = currentState.dataStartIndex, dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize, layout = props.layout, barGap = props.barGap, barCategoryGap = props.barCategoryGap, globalMaxBarSize = props.maxBarSize;\n var _getAxisNameByLayout = getAxisNameByLayout(layout), numericAxisName = _getAxisNameByLayout.numericAxisName, cateAxisName = _getAxisNameByLayout.cateAxisName;\n var hasBar = hasGraphicalBarItem(graphicalItems);\n var formattedItems = [];\n graphicalItems.forEach(function(item, index) {\n var displayedData = getDisplayedData(props.data, {\n graphicalItems: [\n item\n ],\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var _item$props = item.props, dataKey = _item$props.dataKey, childMaxBarSize = _item$props.maxBarSize;\n // axisId of the numerical axis\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n // axisId of the categorical axis\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObjInitialValue = {};\n var axisObj = axisComponents.reduce(function(result, entry) {\n var _item$type$displayNam, _item$type;\n // map of axisId to axis for a specific axis type\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n // axisId of axis we are currently computing\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n /**\n * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n * leave it out of the check for now.\n */ !(axisMap && axisMap[id] || entry.axisType === \"zAxis\") ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType, \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : \"\")) : 0 : void 0;\n // the axis we are currently formatting\n var axis = axisMap[id];\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axis)));\n }, axisObjInitialValue);\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getStackedDataOfItem)(item, stackGroups[numericAxisId].stackGroups);\n var itemIsBar = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item.type).indexOf(\"Bar\") >= 0;\n var bandSize = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(cateAxis, cateTicks);\n var barPosition = [];\n var sizeList = hasBar && (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBarSizeList)({\n barSize: barSize,\n stackGroups: stackGroups,\n totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n });\n if (itemIsBar) {\n var _ref7, _getBandSizeOfAxis;\n // If it is bar, calculate the position of bar\n var maxBarSize = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barBandSize = (_ref7 = (_getBandSizeOfAxis = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBandSizeOfAxis)(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n barPosition = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getBarPosition)({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n if (barBandSize !== bandSize) {\n barPosition = barPosition.map(function(pos) {\n return _objectSpread(_objectSpread({}, pos), {}, {\n position: _objectSpread(_objectSpread({}, pos.position), {}, {\n offset: pos.position.offset - barBandSize / 2\n })\n });\n });\n }\n }\n // @ts-expect-error we should stop reading data from ReactElements\n var composedFn = item && item.type && item.type.getComposedData;\n if (composedFn) {\n formattedItems.push({\n props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))), {}, _defineProperty(_defineProperty(_defineProperty({\n key: item.key || \"item-\".concat(index)\n }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n childIndex: (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.parseChildIndex)(item, props.children),\n item: item\n });\n }\n });\n return formattedItems;\n };\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * dataStartIndex: The start index of the data series when a brush is applied\n * dataEndIndex: The end index of the data series when a brush is applied\n * updateId: The update id\n * @param {Object} prevState Prev state\n * @return {Object} state New state to set\n */ var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n var props = _ref8.props, dataStartIndex = _ref8.dataStartIndex, dataEndIndex = _ref8.dataEndIndex, updateId = _ref8.updateId;\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.validateWidthHeight)({\n props: props\n })) {\n return null;\n }\n var children = props.children, layout = props.layout, stackOffset = props.stackOffset, data = props.data, reverseStackOrder = props.reverseStackOrder;\n var _getAxisNameByLayout2 = getAxisNameByLayout(layout), numericAxisName = _getAxisNameByLayout2.numericAxisName, cateAxisName = _getAxisNameByLayout2.cateAxisName;\n var graphicalItems = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findAllByType)(children, GraphicalChild);\n var stackGroups = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getStackGroupsByAxisId)(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function(result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n props: props,\n graphicalItems: graphicalItems\n }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n Object.keys(axisObj).forEach(function(key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace(\"Map\", \"\"), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = tooltipTicksGenerator(cateAxisMap);\n var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread(_objectSpread({\n formattedGraphicalItems: formattedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj), axisObj);\n };\n return _CategoricalChartWrapper = /*#__PURE__*/ function(_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n function CategoricalChartWrapper(_props) {\n var _props$id, _props$throttleDelay;\n var _this;\n _classCallCheck(this, CategoricalChartWrapper);\n _this = _callSuper(this, CategoricalChartWrapper, [\n _props\n ]);\n _defineProperty(_assertThisInitialized(_this), \"eventEmitterSymbol\", Symbol(\"rechartsEventEmitter\"));\n _defineProperty(_assertThisInitialized(_this), \"accessibilityManager\", new _AccessibilityManager__WEBPACK_IMPORTED_MODULE_17__.AccessibilityManager());\n _defineProperty(_assertThisInitialized(_this), \"handleLegendBBoxUpdate\", function(box) {\n if (box) {\n var _this$state = _this.state, dataStartIndex = _this$state.dataStartIndex, dataEndIndex = _this$state.dataEndIndex, updateId = _this$state.updateId;\n _this.setState(_objectSpread({\n legendBBox: box\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _objectSpread(_objectSpread({}, _this.state), {}, {\n legendBBox: box\n }))));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleReceiveSyncEvent\", function(cId, data, emitter) {\n if (_this.props.syncId === cId) {\n if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== \"function\") {\n return;\n }\n _this.applySyncEvent(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleBrushChange\", function(_ref9) {\n var startIndex = _ref9.startIndex, endIndex = _ref9.endIndex;\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n _this.setState(function() {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }, _this.state));\n });\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n });\n /**\n * The handler of mouse entering chart\n * @param {Object} e Event object\n * @return {Null} null\n */ _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function(e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState);\n _this.triggerSyncEvent(_nextState);\n var onMouseEnter = _this.props.onMouseEnter;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseEnter)) {\n onMouseEnter(_nextState, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggeredAfterMouseMove\", function(e) {\n var mouse = _this.getMouseInfo(e);\n var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseMove = _this.props.onMouseMove;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n });\n /**\n * The handler of mouse entering a scatter\n * @param {Object} el The active scatter\n * @return {Object} no return\n */ _defineProperty(_assertThisInitialized(_this), \"handleItemMouseEnter\", function(el) {\n _this.setState(function() {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n });\n /**\n * The handler of mouse leaving a scatter\n * @return {Object} no return\n */ _defineProperty(_assertThisInitialized(_this), \"handleItemMouseLeave\", function() {\n _this.setState(function() {\n return {\n isTooltipActive: false\n };\n });\n });\n /**\n * The handler of mouse moving in chart\n * @param {React.MouseEvent} e Event object\n * @return {void} no return\n */ _defineProperty(_assertThisInitialized(_this), \"handleMouseMove\", function(e) {\n e.persist();\n _this.throttleTriggeredAfterMouseMove(e);\n });\n /**\n * The handler if mouse leaving chart\n * @param {Object} e Event object\n * @return {Null} no return\n */ _defineProperty(_assertThisInitialized(_this), \"handleMouseLeave\", function(e) {\n _this.throttleTriggeredAfterMouseMove.cancel();\n var nextState = {\n isTooltipActive: false\n };\n _this.setState(nextState);\n _this.triggerSyncEvent(nextState);\n var onMouseLeave = _this.props.onMouseLeave;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleOuterEvent\", function(e) {\n var eventName = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getReactEventByType)(e);\n var event = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(_this.props, \"\".concat(eventName));\n if (eventName && lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(event)) {\n var _mouse;\n var mouse;\n if (/.*touch.*/i.test(eventName)) {\n mouse = _this.getMouseInfo(e.changedTouches[0]);\n } else {\n mouse = _this.getMouseInfo(e);\n }\n event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function(e) {\n var mouse = _this.getMouseInfo(e);\n if (mouse) {\n var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n isTooltipActive: true\n });\n _this.setState(_nextState2);\n _this.triggerSyncEvent(_nextState2);\n var onClick = _this.props.onClick;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onClick)) {\n onClick(_nextState2, e);\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseDown\", function(e) {\n var onMouseDown = _this.props.onMouseDown;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseDown)) {\n var _nextState3 = _this.getMouseInfo(e);\n onMouseDown(_nextState3, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleMouseUp\", function(e) {\n var onMouseUp = _this.props.onMouseUp;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(onMouseUp)) {\n var _nextState4 = _this.getMouseInfo(e);\n onMouseUp(_nextState4, e);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchMove\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchStart\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleTouchEnd\", function(e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"triggerSyncEvent\", function(data) {\n if (_this.props.syncId !== undefined) {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.emit(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"applySyncEvent\", function(data) {\n var _this$props = _this.props, layout = _this$props.layout, syncMethod = _this$props.syncMethod;\n var updateId = _this.state.updateId;\n var dataStartIndex = data.dataStartIndex, dataEndIndex = data.dataEndIndex;\n if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }, _this.state)));\n } else if (data.activeTooltipIndex !== undefined) {\n var chartX = data.chartX, chartY = data.chartY;\n var activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state, offset = _this$state2.offset, tooltipTicks = _this$state2.tooltipTicks;\n if (!offset) {\n return;\n }\n if (typeof syncMethod === \"function\") {\n // Call a callback function. If there is an application specific algorithm\n activeTooltipIndex = syncMethod(tooltipTicks, data);\n } else if (syncMethod === \"value\") {\n // Set activeTooltipIndex to the index with the same value as data.activeLabel\n // For loop instead of findIndex because the latter is very slow in some browsers\n activeTooltipIndex = -1; // in case we cannot find the element\n for(var i = 0; i < tooltipTicks.length; i++){\n if (tooltipTicks[i].value === data.activeLabel) {\n activeTooltipIndex = i;\n break;\n }\n }\n }\n var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n });\n // When a categorical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === \"horizontal\" ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === \"horizontal\" ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex\n }));\n } else {\n _this.setState(data);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCursor\", function(element) {\n var _element$props$active;\n var _this$state3 = _this.state, isTooltipActive = _this$state3.isTooltipActive, activeCoordinate = _this$state3.activeCoordinate, activePayload = _this$state3.activePayload, offset = _this$state3.offset, activeTooltipIndex = _this$state3.activeTooltipIndex, tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n var tooltipEventType = _this.getTooltipEventType();\n // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n var layout = _this.props.layout;\n var key = element.key || \"_recharts-cursor\";\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_component_Cursor__WEBPACK_IMPORTED_MODULE_19__.Cursor, {\n key: key,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload,\n activeTooltipIndex: activeTooltipIndex,\n chartName: chartName,\n element: element,\n isActive: isActive,\n layout: layout,\n offset: offset,\n tooltipAxisBandSize: tooltipAxisBandSize,\n tooltipEventType: tooltipEventType\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarAxis\", function(element, displayName, index) {\n var axisType = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(element, \"type.axisType\");\n var axisMap = lodash_get__WEBPACK_IMPORTED_MODULE_4___default()(_this.state, \"\".concat(axisType, \"Map\"));\n var axisOption = axisMap && axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(axisType, axisOption.className),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(axisOption, true)\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderPolarGrid\", function(element) {\n var _element$props = element.props, radialLines = _element$props.radialLines, polarAngles = _element$props.polarAngles, polarRadius = _element$props.polarRadius;\n var _this$state4 = _this.state, radiusAxisMap = _this$state4.radiusAxisMap, angleAxisMap = _this$state4.angleAxisMap;\n var radiusAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(radiusAxisMap);\n var angleAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(angleAxisMap);\n var cx = angleAxis.cx, cy = angleAxis.cy, innerRadius = angleAxis.innerRadius, outerRadius = angleAxis.outerRadius;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n polarAngles: Array.isArray(polarAngles) ? polarAngles : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(angleAxis, true).map(function(entry) {\n return entry.coordinate;\n }),\n polarRadius: Array.isArray(polarRadius) ? polarRadius : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getTicksOfAxis)(radiusAxis, true).map(function(entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || \"polar-grid\",\n radialLines: radialLines\n });\n });\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */ _defineProperty(_assertThisInitialized(_this), \"renderLegend\", function() {\n var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n var _this$props2 = _this.props, children = _this$props2.children, width = _this$props2.width, height = _this$props2.height;\n var margin = _this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var props = (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_20__.getLegendProps)({\n children: children,\n formattedGraphicalItems: formattedGraphicalItems,\n legendWidth: legendWidth,\n legendContent: legendContent\n });\n if (!props) {\n return null;\n }\n var item = props.item, otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n onBBoxUpdate: _this.handleLegendBBoxUpdate\n }));\n });\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */ _defineProperty(_assertThisInitialized(_this), \"renderTooltip\", function() {\n var _tooltipItem$props$ac;\n var _this$props3 = _this.props, children = _this$props3.children, accessibilityLayer = _this$props3.accessibilityLayer;\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n if (!tooltipItem) {\n return null;\n }\n var _this$state5 = _this.state, isTooltipActive = _this$state5.isTooltipActive, activeCoordinate = _this$state5.activeCoordinate, activePayload = _this$state5.activePayload, activeLabel = _this$state5.activeLabel, offset = _this$state5.offset;\n // The user can set isActive on the Tooltip,\n // and we respect the user to enable customisation.\n // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(tooltipItem, {\n viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n x: offset.left,\n y: offset.top\n }),\n active: isActive,\n label: activeLabel,\n payload: isActive ? activePayload : [],\n coordinate: activeCoordinate,\n accessibilityLayer: accessibilityLayer\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderBrush\", function(element) {\n var _this$props4 = _this.props, margin = _this$props4.margin, data = _this$props4.data;\n var _this$state6 = _this.state, offset = _this$state6.offset, dataStartIndex = _this$state6.dataStartIndex, dataEndIndex = _this$state6.dataEndIndex, updateId = _this$state6.updateId;\n // TODO: update brush when children update\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n key: element.key || \"_recharts-brush\",\n onChange: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleBrushChange, element.props.onChange),\n data: data,\n x: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.x) ? element.props.x : offset.left,\n y: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.isNumber)(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderReferenceElement\", function(element, displayName, index) {\n if (!element) {\n return null;\n }\n var _assertThisInitialize = _assertThisInitialized(_this), clipPathId = _assertThisInitialize.clipPathId;\n var _this$state7 = _this.state, xAxisMap = _this$state7.xAxisMap, yAxisMap = _this$state7.yAxisMap, offset = _this$state7.offset;\n var _element$props2 = element.props, xAxisId = _element$props2.xAxisId, yAxisId = _element$props2.yAxisId;\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"renderActivePoints\", function(_ref10) {\n var item = _ref10.item, activePoint = _ref10.activePoint, basePoint = _ref10.basePoint, childIndex = _ref10.childIndex, isRange = _ref10.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props = item.item.props, activeDot = _item$item$props.activeDot, dataKey = _item$item$props.dataKey;\n var dotProps = _objectSpread(_objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.getMainColorOfGraphicItem)(item.item),\n strokeWidth: 2,\n stroke: \"#fff\",\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.filterProps)(activeDot, false)), (0,_util_types__WEBPACK_IMPORTED_MODULE_22__.adaptEventHandlers)(activeDot));\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps));\n if (basePoint) {\n result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n })));\n } else if (isRange) {\n result.push(null);\n }\n return result;\n });\n _defineProperty(_assertThisInitialized(_this), \"renderGraphicChild\", function(element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n if (!item) {\n return null;\n }\n var tooltipEventType = _this.getTooltipEventType();\n var _this$state8 = _this.state, isTooltipActive = _this$state8.isTooltipActive, tooltipAxis = _this$state8.tooltipAxis, activeTooltipIndex = _this$state8.activeTooltipIndex, activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n var _item$props2 = item.props, points = _item$props2.points, isRange = _item$props2.isRange, baseLine = _item$props2.baseLine;\n var _item$item$props2 = item.item.props, activeDot = _item$item$props2.activeDot, hide = _item$item$props2.hide, activeBar = _item$item$props2.activeBar, activeShape = _item$item$props2.activeShape;\n var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n var itemEvents = {};\n if (tooltipEventType !== \"axis\" && tooltipItem && tooltipItem.props.trigger === \"click\") {\n itemEvents = {\n onClick: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseEnter, element.props.onClick)\n };\n } else if (tooltipEventType !== \"axis\") {\n itemEvents = {\n onMouseLeave: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseLeave, element.props.onMouseLeave),\n onMouseEnter: (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_11__.combineEventHandlers)(_this.handleItemMouseEnter, element.props.onMouseEnter)\n };\n }\n var graphicalItem = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n function findWithPayload(entry) {\n // TODO needs to verify dataKey is Function\n return typeof tooltipAxis.dataKey === \"function\" ? tooltipAxis.dataKey(entry.payload) : null;\n }\n if (hasActive) {\n if (activeTooltipIndex >= 0) {\n var activePoint, basePoint;\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // number transform to string\n var specifiedKey = typeof tooltipAxis.dataKey === \"function\" ? findWithPayload : \"payload.\".concat(tooltipAxis.dataKey.toString());\n activePoint = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.findEntryInArray)(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n if (activeShape || activeBar) {\n var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n return [\n /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: activeIndex\n })),\n null,\n null\n ];\n }\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(activePoint)) {\n return [\n graphicalItem\n ].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n } else {\n var _this$getItemByXY;\n /**\n * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n * In which case, this.state.activeTooltipIndex never gets set\n * because the mouse events that trigger that value getting set never get trigged without the axis components.\n *\n * An example usage case is a FunnelChart\n */ var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n graphicalItem: graphicalItem\n }, _ref11$graphicalItem = _ref11.graphicalItem, _ref11$graphicalItem$ = _ref11$graphicalItem.item, xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$, childIndex = _ref11$graphicalItem.childIndex;\n var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n activeIndex: childIndex\n });\n return [\n /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(xyItem, elementProps),\n null,\n null\n ];\n }\n }\n if (isRange) {\n return [\n graphicalItem,\n null,\n null\n ];\n }\n return [\n graphicalItem,\n null\n ];\n });\n _defineProperty(_assertThisInitialized(_this), \"renderCustomized\", function(element, displayName, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element, _objectSpread(_objectSpread({\n key: \"recharts-customized-\".concat(index)\n }, _this.props), _this.state));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderMap\", {\n CartesianGrid: {\n handler: renderAsIs,\n once: true\n },\n ReferenceArea: {\n handler: _this.renderReferenceElement\n },\n ReferenceLine: {\n handler: renderAsIs\n },\n ReferenceDot: {\n handler: _this.renderReferenceElement\n },\n XAxis: {\n handler: renderAsIs\n },\n YAxis: {\n handler: renderAsIs\n },\n Brush: {\n handler: _this.renderBrush,\n once: true\n },\n Bar: {\n handler: _this.renderGraphicChild\n },\n Line: {\n handler: _this.renderGraphicChild\n },\n Area: {\n handler: _this.renderGraphicChild\n },\n Radar: {\n handler: _this.renderGraphicChild\n },\n RadialBar: {\n handler: _this.renderGraphicChild\n },\n Scatter: {\n handler: _this.renderGraphicChild\n },\n Pie: {\n handler: _this.renderGraphicChild\n },\n Funnel: {\n handler: _this.renderGraphicChild\n },\n Tooltip: {\n handler: _this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: _this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: _this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: _this.renderPolarAxis\n },\n Customized: {\n handler: _this.renderCustomized\n }\n });\n _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.uniqueId)(\"recharts\"), \"-clip\");\n // trigger 60fps\n _this.throttleTriggeredAfterMouseMove = lodash_throttle__WEBPACK_IMPORTED_MODULE_6___default()(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n _this.state = {};\n return _this;\n }\n _createClass(CategoricalChartWrapper, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props$margin$le, _this$props$margin$to;\n this.addListener();\n this.accessibilityManager.setDetails({\n container: this.container,\n offset: {\n left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n },\n coordinateList: this.state.tooltipTicks,\n mouseHandlerCallback: this.triggeredAfterMouseMove,\n layout: this.props.layout\n });\n this.displayDefaultTooltip();\n }\n },\n {\n key: \"displayDefaultTooltip\",\n value: function displayDefaultTooltip() {\n var _this$props5 = this.props, children = _this$props5.children, data = _this$props5.data, height = _this$props5.height, layout = _this$props5.layout;\n var tooltipElem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n // If the chart doesn't include a <Tooltip /> element, there's no tooltip to display\n if (!tooltipElem) {\n return;\n }\n var defaultIndex = tooltipElem.props.defaultIndex;\n // Protect against runtime errors\n if (typeof defaultIndex !== \"number\" || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length) {\n return;\n }\n var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n var dependentAxisCoord = (this.state.offset.top + height) / 2;\n var isHorizontal = layout === \"horizontal\";\n var activeCoordinate = isHorizontal ? {\n x: independentAxisCoord,\n y: dependentAxisCoord\n } : {\n y: independentAxisCoord,\n x: dependentAxisCoord\n };\n // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n // element knows its own Y coordinates.\n // If there's a scatter plot, we'll want to grab that element for an interrogation.\n var scatterPlotElement = this.state.formattedGraphicalItems.find(function(_ref12) {\n var item = _ref12.item;\n return item.type.name === \"Scatter\";\n });\n if (scatterPlotElement) {\n activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n }\n var nextState = {\n activeTooltipIndex: defaultIndex,\n isTooltipActive: true,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n };\n this.setState(nextState);\n this.renderCursor(tooltipElem);\n // Make sure that anyone who keyboard-only users who tab to the chart will start their\n // cursors at defaultIndex\n this.accessibilityManager.setIndex(defaultIndex);\n }\n },\n {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (!this.props.accessibilityLayer) {\n return null;\n }\n if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n this.accessibilityManager.setDetails({\n coordinateList: this.state.tooltipTicks\n });\n }\n if (this.props.layout !== prevProps.layout) {\n this.accessibilityManager.setDetails({\n layout: this.props.layout\n });\n }\n if (this.props.margin !== prevProps.margin) {\n var _this$props$margin$le2, _this$props$margin$to2;\n this.accessibilityManager.setDetails({\n offset: {\n left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n }\n });\n }\n // Something has to be returned for getSnapshotBeforeUpdate\n return null;\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // Check to see if the Tooltip updated. If so, re-check default tooltip position\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.isChildrenEqual)([\n (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(prevProps.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip)\n ], [\n (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(this.props.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip)\n ])) {\n this.displayDefaultTooltip();\n }\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeListener();\n this.throttleTriggeredAfterMouseMove.cancel();\n }\n },\n {\n key: \"getTooltipEventType\",\n value: function getTooltipEventType() {\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(this.props.children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n if (tooltipItem && typeof tooltipItem.props.shared === \"boolean\") {\n var eventType = tooltipItem.props.shared ? \"axis\" : \"item\";\n return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n }\n return defaultTooltipEventType;\n }\n },\n {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n var element = this.container;\n var boundingRect = element.getBoundingClientRect();\n var containerOffset = (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_23__.getOffset)(boundingRect);\n var e = {\n chartX: Math.round(event.pageX - containerOffset.left),\n chartY: Math.round(event.pageY - containerOffset.top)\n };\n var scale = boundingRect.width / element.offsetWidth || 1;\n var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n if (!rangeObj) {\n return null;\n }\n var _this$state9 = this.state, xAxisMap = _this$state9.xAxisMap, yAxisMap = _this$state9.yAxisMap;\n var tooltipEventType = this.getTooltipEventType();\n if (tooltipEventType !== \"axis\" && xAxisMap && yAxisMap) {\n var xScale = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(xAxisMap).scale;\n var yScale = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread(_objectSpread({}, e), {}, {\n xValue: xValue,\n yValue: yValue\n });\n }\n var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n if (toolTipData) {\n return _objectSpread(_objectSpread({}, e), toolTipData);\n }\n return null;\n }\n },\n {\n key: \"inRange\",\n value: function inRange(x, y) {\n var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var layout = this.props.layout;\n var scaledX = x / scale, scaledY = y / scale;\n if (layout === \"horizontal\" || layout === \"vertical\") {\n var offset = this.state.offset;\n var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n return isInRange ? {\n x: scaledX,\n y: scaledY\n } : null;\n }\n var _this$state10 = this.state, angleAxisMap = _this$state10.angleAxisMap, radiusAxisMap = _this$state10.radiusAxisMap;\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_10__.getAnyElementOfObject)(angleAxisMap);\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.inRangeOfSector)({\n x: scaledX,\n y: scaledY\n }, angleAxis);\n }\n return null;\n }\n },\n {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipEventType = this.getTooltipEventType();\n var tooltipItem = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _component_Tooltip__WEBPACK_IMPORTED_MODULE_21__.Tooltip);\n var tooltipEvents = {};\n if (tooltipItem && tooltipEventType === \"axis\") {\n if (tooltipItem.props.trigger === \"click\") {\n tooltipEvents = {\n onClick: this.handleClick\n };\n } else {\n tooltipEvents = {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n };\n }\n }\n // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n var outerEvents = (0,_util_types__WEBPACK_IMPORTED_MODULE_22__.adaptEventHandlers)(this.props, this.handleOuterEvent);\n return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n }\n },\n {\n key: \"addListener\",\n value: function addListener() {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.on(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n },\n {\n key: \"removeListener\",\n value: function removeListener() {\n _util_Events__WEBPACK_IMPORTED_MODULE_18__.eventCenter.removeListener(_util_Events__WEBPACK_IMPORTED_MODULE_18__.SYNC_EVENT, this.handleReceiveSyncEvent);\n }\n },\n {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formattedGraphicalItems = this.state.formattedGraphicalItems;\n for(var i = 0, len = formattedGraphicalItems.length; i < len; i++){\n var entry = formattedGraphicalItems[i];\n if (entry.item === item || entry.props.key === item.key || displayName === (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n return null;\n }\n },\n {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset, left = _this$state$offset.left, top = _this$state$offset.top, height = _this$state$offset.height, width = _this$state$offset.width;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n },\n {\n key: \"getXScales\",\n value: function getXScales() {\n var xAxisMap = this.state.xAxisMap;\n return xAxisMap ? Object.entries(xAxisMap).reduce(function(res, _ref13) {\n var _ref14 = _slicedToArray(_ref13, 2), axisId = _ref14[0], axisProps = _ref14[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n },\n {\n key: \"getYScales\",\n value: function getYScales() {\n var yAxisMap = this.state.yAxisMap;\n return yAxisMap ? Object.entries(yAxisMap).reduce(function(res, _ref15) {\n var _ref16 = _slicedToArray(_ref15, 2), axisId = _ref16[0], axisProps = _ref16[1];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n }, {}) : null;\n }\n },\n {\n key: \"getXScaleByAxisId\",\n value: function getXScaleByAxisId(axisId) {\n var _this$state$xAxisMap;\n return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n }\n },\n {\n key: \"getYScaleByAxisId\",\n value: function getYScaleByAxisId(axisId) {\n var _this$state$yAxisMap;\n return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n }\n },\n {\n key: \"getItemByXY\",\n value: function getItemByXY(chartXY) {\n var _this$state11 = this.state, formattedGraphicalItems = _this$state11.formattedGraphicalItems, activeItem = _this$state11.activeItem;\n if (formattedGraphicalItems && formattedGraphicalItems.length) {\n for(var i = 0, len = formattedGraphicalItems.length; i < len; i++){\n var graphicalItem = formattedGraphicalItems[i];\n var props = graphicalItem.props, item = graphicalItem.item;\n var itemDisplayName = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.getDisplayName)(item.type);\n if (itemDisplayName === \"Bar\") {\n var activeBarItem = (props.data || []).find(function(entry) {\n return (0,_shape_Rectangle__WEBPACK_IMPORTED_MODULE_24__.isInRectangle)(chartXY, entry);\n });\n if (activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: activeBarItem\n };\n }\n } else if (itemDisplayName === \"RadialBar\") {\n var _activeBarItem = (props.data || []).find(function(entry) {\n return (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_9__.inRangeOfSector)(chartXY, entry);\n });\n if (_activeBarItem) {\n return {\n graphicalItem: graphicalItem,\n payload: _activeBarItem\n };\n }\n } else if ((0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isFunnel)(graphicalItem, activeItem) || (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isPie)(graphicalItem, activeItem) || (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isScatter)(graphicalItem, activeItem)) {\n var activeIndex = (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.getActiveShapeIndexForTooltip)({\n graphicalItem: graphicalItem,\n activeTooltipItem: activeItem,\n itemData: item.props.data\n });\n var childIndex = item.props.activeIndex === undefined ? activeIndex : item.props.activeIndex;\n return {\n graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n childIndex: childIndex\n }),\n payload: (0,_util_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_25__.isScatter)(graphicalItem, activeItem) ? item.props.data[activeIndex] : graphicalItem.props.data[activeIndex]\n };\n }\n }\n }\n return null;\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.validateWidthHeight)(this)) {\n return null;\n }\n var _this$props6 = this.props, children = _this$props6.children, className = _this$props6.className, width = _this$props6.width, height = _this$props6.height, style = _this$props6.style, compact = _this$props6.compact, title = _this$props6.title, desc = _this$props6.desc, others = _objectWithoutProperties(_this$props6, _excluded2);\n var attrs = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.filterProps)(others, false);\n // The \"compact\" mode is mainly used as the panorama within Brush\n if (compact) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__.ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_27__.Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc\n }), this.renderClipPath(), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.renderByOrder)(children, this.renderMap)));\n }\n if (this.props.accessibilityLayer) {\n var _this$props$tabIndex, _this$props$role;\n // Set tabIndex to 0 by default (can be overwritten)\n attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n // Set role to img by default (can be overwritten)\n attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : \"application\";\n attrs.onKeyDown = function(e) {\n _this2.accessibilityManager.keyboardEvent(e);\n // 'onKeyDown' is not currently a supported prop that can be passed through\n // if it's added, this should be added: this.props.onKeyDown(e);\n };\n attrs.onFocus = function() {\n _this2.accessibilityManager.focus();\n // 'onFocus' is not currently a supported prop that can be passed through\n // if it's added, the focus event should be forwarded to the prop\n };\n }\n var events = this.parseEventsOfWrapper();\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_context_chartLayoutContext__WEBPACK_IMPORTED_MODULE_26__.ChartLayoutContextProvider, {\n state: this.state,\n width: this.props.width,\n height: this.props.height,\n clipPathId: this.clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(\"recharts-wrapper\", className),\n style: _objectSpread({\n position: \"relative\",\n cursor: \"default\",\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this2.container = node;\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_27__.Surface, _extends({}, attrs, {\n width: width,\n height: height,\n title: title,\n desc: desc,\n style: FULL_WIDTH_AND_HEIGHT\n }), this.renderClipPath(), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.renderByOrder)(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n }\n }\n ]);\n return CategoricalChartWrapper;\n }(react__WEBPACK_IMPORTED_MODULE_0__.Component), _defineProperty(_CategoricalChartWrapper, \"displayName\", chartName), _defineProperty(_CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n layout: \"horizontal\",\n stackOffset: \"none\",\n barCategoryGap: \"10%\",\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false,\n syncMethod: \"index\"\n }, defaultProps)), _defineProperty(_CategoricalChartWrapper, \"getDerivedStateFromProps\", function(nextProps, prevState) {\n var dataKey = nextProps.dataKey, data = nextProps.data, children = nextProps.children, width = nextProps.width, height = nextProps.height, layout = nextProps.layout, stackOffset = nextProps.stackOffset, margin = nextProps.margin;\n var dataStartIndex = prevState.dataStartIndex, dataEndIndex = prevState.dataEndIndex;\n if (prevState.updateId === undefined) {\n var defaultState = createDefaultState(nextProps);\n return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n updateId: 0\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, defaultState), {}, {\n updateId: 0\n }), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !(0,_util_ShallowEqual__WEBPACK_IMPORTED_MODULE_28__.shallowEqual)(margin, prevState.prevMargin)) {\n var _defaultState = createDefaultState(nextProps);\n // Fixes https://github.com/recharts/recharts/issues/2143\n var keepFromPrevState = {\n // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n // any flickering\n chartX: prevState.chartX,\n chartY: prevState.chartY,\n // The tooltip should stay active when it was active in the previous render. If this is not\n // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n isTooltipActive: prevState.isTooltipActive\n };\n var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n updateId: prevState.updateId + 1\n });\n var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, newState), prevState)), {}, {\n prevDataKey: dataKey,\n prevData: data,\n prevWidth: width,\n prevHeight: height,\n prevLayout: layout,\n prevStackOffset: stackOffset,\n prevMargin: margin,\n prevChildren: children\n });\n }\n if (!(0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.isChildrenEqual)(children, prevState.prevChildren)) {\n var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n var brush = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_14__.findChildByType)(children, _cartesian_Brush__WEBPACK_IMPORTED_MODULE_15__.Brush);\n var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n // update configuration in children\n var hasGlobalData = !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(data);\n var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n return _objectSpread(_objectSpread({\n updateId: newUpdateId\n }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n props: nextProps\n }, prevState), {}, {\n updateId: newUpdateId,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }), prevState)), {}, {\n prevChildren: children,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n return null;\n }), _defineProperty(_CategoricalChartWrapper, \"renderActiveDot\", function(option, props) {\n var dot;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n dot = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(option, props);\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(option)) {\n dot = option(props);\n } else {\n dot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Dot__WEBPACK_IMPORTED_MODULE_29__.Dot, props);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_30__.Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }), _CategoricalChartWrapper;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NoYXJ0L2dlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztDQUFPLEVBQ3RCQyxhQUFhO0lBQUM7SUFBWTtJQUFhO0lBQVM7SUFBVTtJQUFTO0lBQVc7SUFBUztDQUFPO0FBQ2hHLFNBQVNDLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9GLFNBQVMsQ0FBQ1csY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sZUFBZUMsR0FBRyxFQUFFVCxDQUFDO0lBQUksT0FBT1UsZ0JB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LE1BQU0sV0FBVyxHQUFFN2lCLDBEQUFtQixDQUFDZ0IsNENBQUdBLEVBQUV6RTtRQUM5QztRQUNBLE9BQU8sV0FBVyxHQUFFeUQsMERBQW1CLENBQUNhLG9EQUFLQSxFQUFFO1lBQzdDNFQsV0FBVztZQUNYeGEsS0FBS3NDLE1BQU10QyxHQUFHO1FBQ2hCLEdBQUc0b0I7SUFDTCxJQUFJdFY7QUFDTixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY2hhcnQvZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0LmpzP2YyMGMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9leGNsdWRlZCA9IFtcIml0ZW1cIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwic3R5bGVcIiwgXCJjb21wYWN0XCIsIFwidGl0bGVcIiwgXCJkZXNjXCJdO1xuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIGNsb25lRWxlbWVudCwgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCByYW5nZSBmcm9tICdsb2Rhc2gvcmFuZ2UnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtaW1wb3J0c1xuXG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ3RpbnktaW52YXJpYW50JztcbmltcG9ydCB7IFN1cmZhY2UgfSBmcm9tICcuLi9jb250YWluZXIvU3VyZmFjZSc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL2NvbnRhaW5lci9MYXllcic7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnLi4vY29tcG9uZW50L1Rvb2x0aXAnO1xuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vY29tcG9uZW50L0xlZ2VuZCc7XG5pbXBvcnQgeyBEb3QgfSBmcm9tICcuLi9zaGFwZS9Eb3QnO1xuaW1wb3J0IHsgaXNJblJlY3RhbmdsZSB9IGZyb20gJy4uL3NoYXBlL1JlY3RhbmdsZSc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgZmluZEFsbEJ5VHlwZSwgZmluZENoaWxkQnlUeXBlLCBnZXREaXNwbGF5TmFtZSwgZ2V0UmVhY3RFdmVudEJ5VHlwZSwgaXNDaGlsZHJlbkVxdWFsLCBwYXJzZUNoaWxkSW5kZXgsIHJlbmRlckJ5T3JkZXIsIHZhbGlkYXRlV2lkdGhIZWlnaHQgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgQnJ1c2ggfSBmcm9tICcuLi9jYXJ0ZXNpYW4vQnJ1c2gnO1xuaW1wb3J0IHsgZ2V0T2Zmc2V0IH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyBmaW5kRW50cnlJbkFycmF5LCBnZXRBbnlFbGVtZW50T2ZPYmplY3QsIGhhc0R1cGxpY2F0ZSwgaXNOdW1iZXIsIHVuaXF1ZUlkIH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgYXBwZW5kT2Zmc2V0T2ZMZWdlbmQsIGNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleCwgY29tYmluZUV2ZW50SGFuZGxlcnMsIGdldEJhbmRTaXplT2ZBeGlzLCBnZXRCYXJQb3NpdGlvbiwgZ2V0QmFyU2l6ZUxpc3QsIGdldERvbWFpbk9mRGF0YUJ5S2V5LCBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzLCBnZXREb21haW5PZlN0YWNrR3JvdXBzLCBnZXRMZWdlbmRQcm9wcywgZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSwgZ2V0U3RhY2tlZERhdGFPZkl0ZW0sIGdldFN0YWNrR3JvdXBzQnlBeGlzSWQsIGdldFRpY2tzT2ZBeGlzLCBnZXRUb29sdGlwSXRlbSwgaXNDYXRlZ29yaWNhbEF4aXMsIHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMsIHBhcnNlRXJyb3JCYXJzT2ZBeGlzLCBwYXJzZVNwZWNpZmllZERvbWFpbiB9IGZyb20gJy4uL3V0aWwvQ2hhcnRVdGlscyc7XG5pbXBvcnQgeyBkZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbiB9IGZyb20gJy4uL3V0aWwvRGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4nO1xuaW1wb3J0IHsgaW5SYW5nZU9mU2VjdG9yLCBwb2xhclRvQ2FydGVzaWFuIH0gZnJvbSAnLi4vdXRpbC9Qb2xhclV0aWxzJztcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gJy4uL3V0aWwvU2hhbGxvd0VxdWFsJztcbmltcG9ydCB7IGV2ZW50Q2VudGVyLCBTWU5DX0VWRU5UIH0gZnJvbSAnLi4vdXRpbC9FdmVudHMnO1xuaW1wb3J0IHsgYWRhcHRFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBBY2Nlc3NpYmlsaXR5TWFuYWdlciB9IGZyb20gJy4vQWNjZXNzaWJpbGl0eU1hbmFnZXInO1xuaW1wb3J0IHsgaXNEb21haW5TcGVjaWZpZWRCeVVzZXIgfSBmcm9tICcuLi91dGlsL2lzRG9tYWluU3BlY2lmaWVkQnlVc2VyJztcbmltcG9ydCB7IGdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwLCBpc0Z1bm5lbCwgaXNQaWUsIGlzU2NhdHRlciB9IGZyb20gJy4uL3V0aWwvQWN0aXZlU2hhcGVVdGlscyc7XG5pbXBvcnQgeyBDdXJzb3IgfSBmcm9tICcuLi9jb21wb25lbnQvQ3Vyc29yJztcbmltcG9ydCB7IENoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyIH0gZnJvbSAnLi4vY29udGV4dC9jaGFydExheW91dENvbnRleHQnO1xudmFyIE9SSUVOVF9NQVAgPSB7XG4gIHhBeGlzOiBbJ2JvdHRvbScsICd0b3AnXSxcbiAgeUF4aXM6IFsnbGVmdCcsICdyaWdodCddXG59O1xudmFyIEZVTExfV0lEVEhfQU5EX0hFSUdIVCA9IHtcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiAnMTAwJSdcbn07XG52YXIgb3JpZ2luQ29vcmRpbmF0ZSA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLlxuICpcbiAqIFdoeT8gZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0IGRvZXMgbm90IHJlbmRlciBge2NoaWxkcmVufWAgZGlyZWN0bHk7XG4gKiBpbnN0ZWFkIGl0IHBhc3NlcyB0aGVtIHRocm91Z2ggYHJlbmRlckJ5T3JkZXJgIGZ1bmN0aW9uIHdoaWNoIHJlYWRzIHRoZWlyIGhhbmRsZXJzLlxuICpcbiAqIFNvLCB0aGlzIGlzIGEgaGFuZGxlciB0aGF0IGRvZXMgbm90aGluZy5cbiAqIE9uY2Ugd2UgZ2V0IHJpZCBvZiBgcmVuZGVyQnlPcmRlcmAgYW5kIHN3aXRjaCB0byBKU1ggb25seSwgd2UgY2FuIGdldCByaWQgb2YgdGhpcyBoYW5kbGVyIHRvby5cbiAqXG4gKiBAcGFyYW0ge0pTWH0gZWxlbWVudCBhcyBpcyBpbiBKU1hcbiAqIEByZXR1cm5zIHtKU1h9IHRoZSBzYW1lIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gcmVuZGVyQXNJcyhlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50O1xufVxudmFyIGNhbGN1bGF0ZVRvb2x0aXBQb3MgPSBmdW5jdGlvbiBjYWxjdWxhdGVUb29sdGlwUG9zKHJhbmdlT2JqLCBsYXlvdXQpIHtcbiAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgcmV0dXJuIHJhbmdlT2JqLng7XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHJldHVybiByYW5nZU9iai55O1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgIHJldHVybiByYW5nZU9iai5hbmdsZTtcbiAgfVxuICByZXR1cm4gcmFuZ2VPYmoucmFkaXVzO1xufTtcbnZhciBnZXRBY3RpdmVDb29yZGluYXRlID0gZnVuY3Rpb24gZ2V0QWN0aXZlQ29vcmRpbmF0ZShsYXlvdXQsIHRvb2x0aXBUaWNrcywgYWN0aXZlSW5kZXgsIHJhbmdlT2JqKSB7XG4gIHZhciBlbnRyeSA9IHRvb2x0aXBUaWNrcy5maW5kKGZ1bmN0aW9uICh0aWNrKSB7XG4gICAgcmV0dXJuIHRpY2sgJiYgdGljay5pbmRleCA9PT0gYWN0aXZlSW5kZXg7XG4gIH0pO1xuICBpZiAoZW50cnkpIHtcbiAgICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGVudHJ5LmNvb3JkaW5hdGUsXG4gICAgICAgIHk6IHJhbmdlT2JqLnlcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHJhbmdlT2JqLngsXG4gICAgICAgIHk6IGVudHJ5LmNvb3JkaW5hdGVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChsYXlvdXQgPT09ICdjZW50cmljJykge1xuICAgICAgdmFyIF9hbmdsZSA9IGVudHJ5LmNvb3JkaW5hdGU7XG4gICAgICB2YXIgX3JhZGl1cyA9IHJhbmdlT2JqLnJhZGl1cztcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmFuZ2VPYmopLCBwb2xhclRvQ2FydGVzaWFuKHJhbmdlT2JqLmN4LCByYW5nZU9iai5jeSwgX3JhZGl1cywgX2FuZ2xlKSksIHt9LCB7XG4gICAgICAgIGFuZ2xlOiBfYW5nbGUsXG4gICAgICAgIHJhZGl1czogX3JhZGl1c1xuICAgICAgfSk7XG4gICAgfVxuICAgIHZhciByYWRpdXMgPSBlbnRyeS5jb29yZGluYXRlO1xuICAgIHZhciBhbmdsZSA9IHJhbmdlT2JqLmFuZ2xlO1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmFuZ2VPYmopLCBwb2xhclRvQ2FydGVzaWFuKHJhbmdlT2JqLmN4LCByYW5nZU9iai5jeSwgcmFkaXVzLCBhbmdsZSkpLCB7fSwge1xuICAgICAgYW5nbGU6IGFuZ2xlLFxuICAgICAgcmFkaXVzOiByYWRpdXNcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gb3JpZ2luQ29vcmRpbmF0ZTtcbn07XG52YXIgZ2V0RGlzcGxheWVkRGF0YSA9IGZ1bmN0aW9uIGdldERpc3BsYXllZERhdGEoZGF0YSwgX3JlZikge1xuICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBfcmVmLmdyYXBoaWNhbEl0ZW1zLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZi5kYXRhU3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXggPSBfcmVmLmRhdGFFbmRJbmRleDtcbiAgdmFyIGl0ZW1zRGF0YSA9IChncmFwaGljYWxJdGVtcyAhPT0gbnVsbCAmJiBncmFwaGljYWxJdGVtcyAhPT0gdm9pZCAwID8gZ3JhcGhpY2FsSXRlbXMgOiBbXSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGNoaWxkKSB7XG4gICAgdmFyIGl0ZW1EYXRhID0gY2hpbGQucHJvcHMuZGF0YTtcbiAgICBpZiAoaXRlbURhdGEgJiYgaXRlbURhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBfdG9Db25zdW1hYmxlQXJyYXkoaXRlbURhdGEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW10pO1xuICBpZiAoaXRlbXNEYXRhLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gaXRlbXNEYXRhO1xuICB9XG4gIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoICYmIGlzTnVtYmVyKGRhdGFTdGFydEluZGV4KSAmJiBpc051bWJlcihkYXRhRW5kSW5kZXgpKSB7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2UoZGF0YVN0YXJ0SW5kZXgsIGRhdGFFbmRJbmRleCArIDEpO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZShheGlzVHlwZSkge1xuICByZXR1cm4gYXhpc1R5cGUgPT09ICdudW1iZXInID8gWzAsICdhdXRvJ10gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjb250ZW50IHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgdG9vbHRpcFxuICogQHBhcmFtICB7T2JqZWN0fSBzdGF0ZSAgICAgICAgICBDdXJyZW50IHN0YXRlXG4gKiBAcGFyYW0gIHtBcnJheX0gIGNoYXJ0RGF0YSAgICAgIFRoZSBkYXRhIGRlZmluZWQgaW4gY2hhcnRcbiAqIEBwYXJhbSAge051bWJlcn0gYWN0aXZlSW5kZXggICAgQWN0aXZlIGluZGV4IG9mIGRhdGFcbiAqIEBwYXJhbSAge1N0cmluZ30gYWN0aXZlTGFiZWwgICAgQWN0aXZlIGxhYmVsIG9mIGRhdGFcbiAqIEByZXR1cm4ge0FycmF5fSAgICAgICAgICAgICAgICAgVGhlIGNvbnRlbnQgb2YgdG9vbHRpcFxuICovXG52YXIgZ2V0VG9vbHRpcENvbnRlbnQgPSBmdW5jdGlvbiBnZXRUb29sdGlwQ29udGVudChzdGF0ZSwgY2hhcnREYXRhLCBhY3RpdmVJbmRleCwgYWN0aXZlTGFiZWwpIHtcbiAgdmFyIGdyYXBoaWNhbEl0ZW1zID0gc3RhdGUuZ3JhcGhpY2FsSXRlbXMsXG4gICAgdG9vbHRpcEF4aXMgPSBzdGF0ZS50b29sdGlwQXhpcztcbiAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKGNoYXJ0RGF0YSwgc3RhdGUpO1xuICBpZiAoYWN0aXZlSW5kZXggPCAwIHx8ICFncmFwaGljYWxJdGVtcyB8fCAhZ3JhcGhpY2FsSXRlbXMubGVuZ3RoIHx8IGFjdGl2ZUluZGV4ID49IGRpc3BsYXllZERhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gZ2V0IGRhdGEgYnkgYWN0aXZlSW5kZXggd2hlbiB0aGUgYXhpcyBkb24ndCBhbGxvdyBkdXBsaWNhdGVkIGNhdGVnb3J5XG4gIHJldHVybiBncmFwaGljYWxJdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgX2NoaWxkJHByb3BzJGRhdGE7XG4gICAgLyoqXG4gICAgICogRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9pc3N1ZXMvMzY2OVxuICAgICAqIERlZmF1bHRpbmcgdG8gY2hhcnREYXRhIGJlbG93IHRvIGZpeCBhbiBlZGdlIGNhc2Ugd2hlcmUgdGhlIHRvb2x0aXAgZG9lcyBub3QgaW5jbHVkZSBkYXRhIGZyb20gYWxsIGNoYXJ0c1xuICAgICAqIHdoZW4gYSBzZXBhcmF0ZSBkYXRhc2V0IGlzIHBhc3NlZCB0byBjaGFydCBwcm9wIGRhdGEgYW5kIHNwZWNpZmllZCBvbiBMaW5lL0FyZWEvZXRjIHByb3AgZGF0YVxuICAgICAqL1xuICAgIHZhciBkYXRhID0gKF9jaGlsZCRwcm9wcyRkYXRhID0gY2hpbGQucHJvcHMuZGF0YSkgIT09IG51bGwgJiYgX2NoaWxkJHByb3BzJGRhdGEgIT09IHZvaWQgMCA/IF9jaGlsZCRwcm9wcyRkYXRhIDogY2hhcnREYXRhO1xuICAgIGlmIChkYXRhICYmIHN0YXRlLmRhdGFTdGFydEluZGV4ICsgc3RhdGUuZGF0YUVuZEluZGV4ICE9PSAwKSB7XG4gICAgICBkYXRhID0gZGF0YS5zbGljZShzdGF0ZS5kYXRhU3RhcnRJbmRleCwgc3RhdGUuZGF0YUVuZEluZGV4ICsgMSk7XG4gICAgfVxuICAgIHZhciBwYXlsb2FkO1xuICAgIGlmICh0b29sdGlwQXhpcy5kYXRhS2V5ICYmICF0b29sdGlwQXhpcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSkge1xuICAgICAgLy8gZ3JhcGhpYyBjaGlsZCBoYXMgZGF0YSBwcm9wc1xuICAgICAgdmFyIGVudHJpZXMgPSBkYXRhID09PSB1bmRlZmluZWQgPyBkaXNwbGF5ZWREYXRhIDogZGF0YTtcbiAgICAgIHBheWxvYWQgPSBmaW5kRW50cnlJbkFycmF5KGVudHJpZXMsIHRvb2x0aXBBeGlzLmRhdGFLZXksIGFjdGl2ZUxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IGRhdGEgJiYgZGF0YVthY3RpdmVJbmRleF0gfHwgZGlzcGxheWVkRGF0YVthY3RpdmVJbmRleF07XG4gICAgfVxuICAgIGlmICghcGF5bG9hZCkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkocmVzdWx0KSwgW2dldFRvb2x0aXBJdGVtKGNoaWxkLCBwYXlsb2FkKV0pO1xuICB9LCBbXSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdG9vbHRpcCBkYXRhIGJhc2VkIG9uIGEgbW91c2UgcG9zaXRpb24gKGFzIGEgcGFyYW1ldGVyIG9yIGluIHN0YXRlKVxuICogQHBhcmFtICB7T2JqZWN0fSBzdGF0ZSAgICAgY3VycmVudCBzdGF0ZVxuICogQHBhcmFtICB7QXJyYXl9ICBjaGFydERhdGEgdGhlIGRhdGEgZGVmaW5lZCBpbiBjaGFydFxuICogQHBhcmFtICB7U3RyaW5nfSBsYXlvdXQgICAgIFRoZSBsYXlvdXQgdHlwZSBvZiBjaGFydFxuICogQHBhcmFtICB7T2JqZWN0fSByYW5nZU9iaiAgeyB4LCB5IH0gY29vcmRpbmF0ZXNcbiAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgIFRvb2x0aXAgZGF0YSBkYXRhXG4gKi9cbnZhciBnZXRUb29sdGlwRGF0YSA9IGZ1bmN0aW9uIGdldFRvb2x0aXBEYXRhKHN0YXRlLCBjaGFydERhdGEsIGxheW91dCwgcmFuZ2VPYmopIHtcbiAgdmFyIHJhbmdlRGF0YSA9IHJhbmdlT2JqIHx8IHtcbiAgICB4OiBzdGF0ZS5jaGFydFgsXG4gICAgeTogc3RhdGUuY2hhcnRZXG4gIH07XG4gIHZhciBwb3MgPSBjYWxjdWxhdGVUb29sdGlwUG9zKHJhbmdlRGF0YSwgbGF5b3V0KTtcbiAgdmFyIHRpY2tzID0gc3RhdGUub3JkZXJlZFRvb2x0aXBUaWNrcyxcbiAgICBheGlzID0gc3RhdGUudG9vbHRpcEF4aXMsXG4gICAgdG9vbHRpcFRpY2tzID0gc3RhdGUudG9vbHRpcFRpY2tzO1xuICB2YXIgYWN0aXZlSW5kZXggPSBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgocG9zLCB0aWNrcywgdG9vbHRpcFRpY2tzLCBheGlzKTtcbiAgaWYgKGFjdGl2ZUluZGV4ID49IDAgJiYgdG9vbHRpcFRpY2tzKSB7XG4gICAgdmFyIGFjdGl2ZUxhYmVsID0gdG9vbHRpcFRpY2tzW2FjdGl2ZUluZGV4XSAmJiB0b29sdGlwVGlja3NbYWN0aXZlSW5kZXhdLnZhbHVlO1xuICAgIHZhciBhY3RpdmVQYXlsb2FkID0gZ2V0VG9vbHRpcENvbnRlbnQoc3RhdGUsIGNoYXJ0RGF0YSwgYWN0aXZlSW5kZXgsIGFjdGl2ZUxhYmVsKTtcbiAgICB2YXIgYWN0aXZlQ29vcmRpbmF0ZSA9IGdldEFjdGl2ZUNvb3JkaW5hdGUobGF5b3V0LCB0aWNrcywgYWN0aXZlSW5kZXgsIHJhbmdlRGF0YSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleDogYWN0aXZlSW5kZXgsXG4gICAgICBhY3RpdmVMYWJlbDogYWN0aXZlTGFiZWwsXG4gICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogYWN0aXZlQ29vcmRpbmF0ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29uZmlndXJhdGlvbiBvZiBheGlzIGJ5IHRoZSBvcHRpb25zIG9mIGF4aXMgaW5zdGFuY2VcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSB7QXJyYXl9ICBheGVzICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgYXhlc1xuICogQHBhcmFtICB7QXJyYXl9IGdyYXBoaWNhbEl0ZW1zIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXMsIHhBeGlzIC0geC1heGlzLCB5QXhpcyAtIHktYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBheGlzSWRLZXkgICAgIFRoZSB1bmlxdWUgaWQgb2YgYW4gYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBzdGFja0dyb3VwcyAgIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFTdGFydEluZGV4IFRoZSBzdGFydCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhRW5kSW5kZXggICBUaGUgZW5kIGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHJldHVybiB7T2JqZWN0fSAgICAgIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IHZhciBnZXRBeGlzTWFwQnlBeGVzID0gZnVuY3Rpb24gZ2V0QXhpc01hcEJ5QXhlcyhwcm9wcywgX3JlZjIpIHtcbiAgdmFyIGF4ZXMgPSBfcmVmMi5heGVzLFxuICAgIGdyYXBoaWNhbEl0ZW1zID0gX3JlZjIuZ3JhcGhpY2FsSXRlbXMsXG4gICAgYXhpc1R5cGUgPSBfcmVmMi5heGlzVHlwZSxcbiAgICBheGlzSWRLZXkgPSBfcmVmMi5heGlzSWRLZXksXG4gICAgc3RhY2tHcm91cHMgPSBfcmVmMi5zdGFja0dyb3VwcyxcbiAgICBkYXRhU3RhcnRJbmRleCA9IF9yZWYyLmRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleCA9IF9yZWYyLmRhdGFFbmRJbmRleDtcbiAgdmFyIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHN0YWNrT2Zmc2V0ID0gcHJvcHMuc3RhY2tPZmZzZXQ7XG4gIHZhciBpc0NhdGVnb3JpY2FsID0gaXNDYXRlZ29yaWNhbEF4aXMobGF5b3V0LCBheGlzVHlwZSk7XG5cbiAgLy8gRWxpbWluYXRlIGR1cGxpY2F0ZWQgYXhlc1xuICByZXR1cm4gYXhlcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgX2NoaWxkJHByb3BzJGRvbWFpbjI7XG4gICAgdmFyIF9jaGlsZCRwcm9wcyA9IGNoaWxkLnByb3BzLFxuICAgICAgdHlwZSA9IF9jaGlsZCRwcm9wcy50eXBlLFxuICAgICAgZGF0YUtleSA9IF9jaGlsZCRwcm9wcy5kYXRhS2V5LFxuICAgICAgYWxsb3dEYXRhT3ZlcmZsb3cgPSBfY2hpbGQkcHJvcHMuYWxsb3dEYXRhT3ZlcmZsb3csXG4gICAgICBhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSA9IF9jaGlsZCRwcm9wcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSxcbiAgICAgIHNjYWxlID0gX2NoaWxkJHByb3BzLnNjYWxlLFxuICAgICAgdGlja3MgPSBfY2hpbGQkcHJvcHMudGlja3MsXG4gICAgICBpbmNsdWRlSGlkZGVuID0gX2NoaWxkJHByb3BzLmluY2x1ZGVIaWRkZW47XG4gICAgdmFyIGF4aXNJZCA9IGNoaWxkLnByb3BzW2F4aXNJZEtleV07XG4gICAgaWYgKHJlc3VsdFtheGlzSWRdKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgZGlzcGxheWVkRGF0YSA9IGdldERpc3BsYXllZERhdGEocHJvcHMuZGF0YSwge1xuICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS5wcm9wc1theGlzSWRLZXldID09PSBheGlzSWQ7XG4gICAgICB9KSxcbiAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gICAgfSk7XG4gICAgdmFyIGxlbiA9IGRpc3BsYXllZERhdGEubGVuZ3RoO1xuICAgIHZhciBkb21haW4sIGR1cGxpY2F0ZURvbWFpbiwgY2F0ZWdvcmljYWxEb21haW47XG5cbiAgICAvKlxuICAgICAqIFRoaXMgaXMgYSBoYWNrIHRvIHNob3J0LWNpcmN1aXQgdGhlIGRvbWFpbiBjcmVhdGlvbiBoZXJlIHRvIGVuaGFuY2UgcGVyZm9ybWFuY2UuXG4gICAgICogVXN1YWxseSwgdGhlIGRhdGEgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGRvbWFpbiwgYnV0IHdoZW4gdGhlIHVzZXIgc3BlY2lmaWVzXG4gICAgICogYSBkb21haW4gdXBmcm9udCAodmlhIHByb3BzKSwgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxjdWxhdGUgdGhlIGRvbWFpbiBzdGFydCBhbmQgZW5kLFxuICAgICAqIHdoaWNoIGlzIHZlcnkgZXhwZW5zaXZlIGZvciBhIGxhcmdlciBhbW91bnQgb2YgZGF0YS5cbiAgICAgKiBUaGUgb25seSB0aGluZyB0aGF0IHdvdWxkIHByb2hpYml0IHNob3J0LWNpcmN1aXRpbmcgaXMgd2hlbiB0aGUgdXNlciBkb2Vzbid0IGFsbG93IGRhdGEgb3ZlcmZsb3csXG4gICAgICogYmVjYXVzZSB0aGUgYXhpcyBpcyBzdXBwb3NlZCB0byBpZ25vcmUgdGhlIHNwZWNpZmllZCBkb21haW4gdGhhdCB3YXkuXG4gICAgICovXG4gICAgaWYgKGlzRG9tYWluU3BlY2lmaWVkQnlVc2VyKGNoaWxkLnByb3BzLmRvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3csIHR5cGUpKSB7XG4gICAgICBkb21haW4gPSBwYXJzZVNwZWNpZmllZERvbWFpbihjaGlsZC5wcm9wcy5kb21haW4sIG51bGwsIGFsbG93RGF0YU92ZXJmbG93KTtcbiAgICAgIC8qIFRoZSBjaGFydCBjYW4gYmUgY2F0ZWdvcmljYWwgYW5kIGhhdmUgdGhlIGRvbWFpbiBzcGVjaWZpZWQgaW4gbnVtYmVyc1xuICAgICAgICogd2Ugc3RpbGwgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGNhdGVnb3JpY2FsIGRvbWFpblxuICAgICAgICogVE9ETzogcmVmYWN0b3IgdGhpcyBtb3JlXG4gICAgICAgKi9cbiAgICAgIGlmIChpc0NhdGVnb3JpY2FsICYmICh0eXBlID09PSAnbnVtYmVyJyB8fCBzY2FsZSAhPT0gJ2F1dG8nKSkge1xuICAgICAgICBjYXRlZ29yaWNhbERvbWFpbiA9IGdldERvbWFpbk9mRGF0YUJ5S2V5KGRpc3BsYXllZERhdGEsIGRhdGFLZXksICdjYXRlZ29yeScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlmIHRoZSBkb21haW4gaXMgZGVmYXVsdGVkIHdlIG5lZWQgdGhpcyBmb3IgYG9yaWdpbmFsRG9tYWluYCBhcyB3ZWxsXG4gICAgdmFyIGRlZmF1bHREb21haW4gPSBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZSh0eXBlKTtcblxuICAgIC8vIHdlIGRpZG4ndCBjcmVhdGUgdGhlIGRvbWFpbiBmcm9tIHVzZXIncyBwcm9wcyBhYm92ZSwgc28gd2UgbmVlZCB0byBjYWxjdWxhdGUgaXRcbiAgICBpZiAoIWRvbWFpbiB8fCBkb21haW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICB2YXIgX2NoaWxkJHByb3BzJGRvbWFpbjtcbiAgICAgIHZhciBjaGlsZERvbWFpbiA9IChfY2hpbGQkcHJvcHMkZG9tYWluID0gY2hpbGQucHJvcHMuZG9tYWluKSAhPT0gbnVsbCAmJiBfY2hpbGQkcHJvcHMkZG9tYWluICE9PSB2b2lkIDAgPyBfY2hpbGQkcHJvcHMkZG9tYWluIDogZGVmYXVsdERvbWFpbjtcbiAgICAgIGlmIChkYXRhS2V5KSB7XG4gICAgICAgIC8vIGhhcyBkYXRhS2V5IGluIDxBeGlzIC8+XG4gICAgICAgIGRvbWFpbiA9IGdldERvbWFpbk9mRGF0YUJ5S2V5KGRpc3BsYXllZERhdGEsIGRhdGFLZXksIHR5cGUpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5JyAmJiBpc0NhdGVnb3JpY2FsKSB7XG4gICAgICAgICAgLy8gdGhlIGZpZWxkIHR5cGUgaXMgY2F0ZWdvcnkgZGF0YSBhbmQgdGhpcyBheGlzIGlzIGNhdGVnb3JpY2FsIGF4aXNcbiAgICAgICAgICB2YXIgZHVwbGljYXRlID0gaGFzRHVwbGljYXRlKGRvbWFpbik7XG4gICAgICAgICAgaWYgKGFsbG93RHVwbGljYXRlZENhdGVnb3J5ICYmIGR1cGxpY2F0ZSkge1xuICAgICAgICAgICAgZHVwbGljYXRlRG9tYWluID0gZG9tYWluO1xuICAgICAgICAgICAgLy8gV2hlbiBjYXRlZ29yeSBheGlzIGhhcyBkdXBsaWNhdGVkIHRleHQsIHNlcmlhbCBudW1iZXJzIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHNjYWxlXG4gICAgICAgICAgICBkb21haW4gPSByYW5nZSgwLCBsZW4pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWFsbG93RHVwbGljYXRlZENhdGVnb3J5KSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgZHVwbGljYXRlZCBjYXRlZ29yeVxuICAgICAgICAgICAgZG9tYWluID0gcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyhjaGlsZERvbWFpbiwgZG9tYWluLCBjaGlsZCkucmVkdWNlKGZ1bmN0aW9uIChmaW5hbERvbWFpbiwgZW50cnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbmFsRG9tYWluLmluZGV4T2YoZW50cnkpID49IDAgPyBmaW5hbERvbWFpbiA6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoZmluYWxEb21haW4pLCBbZW50cnldKTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5Jykge1xuICAgICAgICAgIC8vIHRoZSBmaWVsZCB0eXBlIGlzIGNhdGVnb3J5IGRhdGEgYW5kIHRoaXMgYXhpcyBpcyBudW1lcmljYWwgYXhpc1xuICAgICAgICAgIGlmICghYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGRvbWFpbiA9IHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMoY2hpbGREb21haW4sIGRvbWFpbiwgY2hpbGQpLnJlZHVjZShmdW5jdGlvbiAoZmluYWxEb21haW4sIGVudHJ5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaW5hbERvbWFpbi5pbmRleE9mKGVudHJ5KSA+PSAwIHx8IGVudHJ5ID09PSAnJyB8fCBpc05pbChlbnRyeSkgPyBmaW5hbERvbWFpbiA6IFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoZmluYWxEb21haW4pLCBbZW50cnldKTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZWxpbWluYXRlIHVuZGVmaW5lZCBvciBudWxsIG9yIGVtcHR5IHN0cmluZ1xuICAgICAgICAgICAgZG9tYWluID0gZG9tYWluLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5ICE9PSAnJyAmJiAhaXNOaWwoZW50cnkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgLy8gdGhlIGZpZWxkIHR5cGUgaXMgbnVtZXJpY2FsXG4gICAgICAgICAgdmFyIGVycm9yQmFyc0RvbWFpbiA9IHBhcnNlRXJyb3JCYXJzT2ZBeGlzKGRpc3BsYXllZERhdGEsIGdyYXBoaWNhbEl0ZW1zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvcHNbYXhpc0lkS2V5XSA9PT0gYXhpc0lkICYmIChpbmNsdWRlSGlkZGVuIHx8ICFpdGVtLnByb3BzLmhpZGUpO1xuICAgICAgICAgIH0pLCBkYXRhS2V5LCBheGlzVHlwZSwgbGF5b3V0KTtcbiAgICAgICAgICBpZiAoZXJyb3JCYXJzRG9tYWluKSB7XG4gICAgICAgICAgICBkb21haW4gPSBlcnJvckJhcnNEb21haW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0NhdGVnb3JpY2FsICYmICh0eXBlID09PSAnbnVtYmVyJyB8fCBzY2FsZSAhPT0gJ2F1dG8nKSkge1xuICAgICAgICAgIGNhdGVnb3JpY2FsRG9tYWluID0gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGlzcGxheWVkRGF0YSwgZGF0YUtleSwgJ2NhdGVnb3J5Jyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNDYXRlZ29yaWNhbCkge1xuICAgICAgICAvLyB0aGUgYXhpcyBpcyBhIGNhdGVnb3JpY2FsIGF4aXNcbiAgICAgICAgZG9tYWluID0gcmFuZ2UoMCwgbGVuKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhY2tHcm91cHMgJiYgc3RhY2tHcm91cHNbYXhpc0lkXSAmJiBzdGFja0dyb3Vwc1theGlzSWRdLmhhc1N0YWNrICYmIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIC8vIHdoZW4gc3RhY2tPZmZzZXQgaXMgJ2V4cGFuZCcsIHRoZSBkb21haW4gbWF5IGJlIGNhbGN1bGF0ZWQgYXMgWzAsIDEuMDAwMDAwMDAwMDAyXVxuICAgICAgICBkb21haW4gPSBzdGFja09mZnNldCA9PT0gJ2V4cGFuZCcgPyBbMCwgMV0gOiBnZXREb21haW5PZlN0YWNrR3JvdXBzKHN0YWNrR3JvdXBzW2F4aXNJZF0uc3RhY2tHcm91cHMsIGRhdGFTdGFydEluZGV4LCBkYXRhRW5kSW5kZXgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9tYWluID0gZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyhkaXNwbGF5ZWREYXRhLCBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5wcm9wc1theGlzSWRLZXldID09PSBheGlzSWQgJiYgKGluY2x1ZGVIaWRkZW4gfHwgIWl0ZW0ucHJvcHMuaGlkZSk7XG4gICAgICAgIH0pLCB0eXBlLCBsYXlvdXQsIHRydWUpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIC8vIFRvIGRldGVjdCB3ZXRoZXIgdGhlcmUgaXMgYW55IHJlZmVyZW5jZSBsaW5lcyB3aG9zZSBwcm9wcyBhbHdheXNTaG93IGlzIHRydWVcbiAgICAgICAgZG9tYWluID0gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSwgdGlja3MpO1xuICAgICAgICBpZiAoY2hpbGREb21haW4pIHtcbiAgICAgICAgICBkb21haW4gPSBwYXJzZVNwZWNpZmllZERvbWFpbihjaGlsZERvbWFpbiwgZG9tYWluLCBhbGxvd0RhdGFPdmVyZmxvdyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NhdGVnb3J5JyAmJiBjaGlsZERvbWFpbikge1xuICAgICAgICB2YXIgYXhpc0RvbWFpbiA9IGNoaWxkRG9tYWluO1xuICAgICAgICB2YXIgaXNEb21haW5WYWxpZCA9IGRvbWFpbi5ldmVyeShmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICByZXR1cm4gYXhpc0RvbWFpbi5pbmRleE9mKGVudHJ5KSA+PSAwO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzRG9tYWluVmFsaWQpIHtcbiAgICAgICAgICBkb21haW4gPSBheGlzRG9tYWluO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjaGlsZC5wcm9wcyksIHt9LCB7XG4gICAgICBheGlzVHlwZTogYXhpc1R5cGUsXG4gICAgICBkb21haW46IGRvbWFpbixcbiAgICAgIGNhdGVnb3JpY2FsRG9tYWluOiBjYXRlZ29yaWNhbERvbWFpbixcbiAgICAgIGR1cGxpY2F0ZURvbWFpbjogZHVwbGljYXRlRG9tYWluLFxuICAgICAgb3JpZ2luYWxEb21haW46IChfY2hpbGQkcHJvcHMkZG9tYWluMiA9IGNoaWxkLnByb3BzLmRvbWFpbikgIT09IG51bGwgJiYgX2NoaWxkJHByb3BzJGRvbWFpbjIgIT09IHZvaWQgMCA/IF9jaGlsZCRwcm9wcyRkb21haW4yIDogZGVmYXVsdERvbWFpbixcbiAgICAgIGlzQ2F0ZWdvcmljYWw6IGlzQ2F0ZWdvcmljYWwsXG4gICAgICBsYXlvdXQ6IGxheW91dFxuICAgIH0pKSk7XG4gIH0sIHt9KTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIGF4aXMgYnkgdGhlIG9wdGlvbnMgb2YgaXRlbSxcbiAqIHRoaXMga2luZCBvZiBheGlzIGRvZXMgbm90IGRpc3BsYXkgaW4gY2hhcnRcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge0FycmF5fSBncmFwaGljYWxJdGVtcyBUaGUgaW5zdGFuY2VzIG9mIGl0ZW1cbiAqIEBwYXJhbSAge1JlYWN0RWxlbWVudH0gQXhpcyAgICBBeGlzIENvbXBvbmVudFxuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXMsIHhBeGlzIC0geC1heGlzLCB5QXhpcyAtIHktYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBheGlzSWRLZXkgICAgIFRoZSB1bmlxdWUgaWQgb2YgYW4gYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBzdGFja0dyb3VwcyAgIFRoZSBpdGVtcyBncm91cGVkIGJ5IGF4aXNJZCBhbmQgc3RhY2tJZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFTdGFydEluZGV4IFRoZSBzdGFydCBpbmRleCBvZiB0aGUgZGF0YSBzZXJpZXMgd2hlbiBhIGJydXNoIGlzIGFwcGxpZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhRW5kSW5kZXggICBUaGUgZW5kIGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb25cbiAqL1xudmFyIGdldEF4aXNNYXBCeUl0ZW1zID0gZnVuY3Rpb24gZ2V0QXhpc01hcEJ5SXRlbXMocHJvcHMsIF9yZWYzKSB7XG4gIHZhciBncmFwaGljYWxJdGVtcyA9IF9yZWYzLmdyYXBoaWNhbEl0ZW1zLFxuICAgIEF4aXMgPSBfcmVmMy5BeGlzLFxuICAgIGF4aXNUeXBlID0gX3JlZjMuYXhpc1R5cGUsXG4gICAgYXhpc0lkS2V5ID0gX3JlZjMuYXhpc0lkS2V5LFxuICAgIHN0YWNrR3JvdXBzID0gX3JlZjMuc3RhY2tHcm91cHMsXG4gICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmMy5kYXRhU3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXggPSBfcmVmMy5kYXRhRW5kSW5kZXg7XG4gIHZhciBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKHByb3BzLmRhdGEsIHtcbiAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gIH0pO1xuICB2YXIgbGVuID0gZGlzcGxheWVkRGF0YS5sZW5ndGg7XG4gIHZhciBpc0NhdGVnb3JpY2FsID0gaXNDYXRlZ29yaWNhbEF4aXMobGF5b3V0LCBheGlzVHlwZSk7XG4gIHZhciBpbmRleCA9IC0xO1xuXG4gIC8vIFRoZSBkZWZhdWx0IHR5cGUgb2YgeC1heGlzIGlzIGNhdGVnb3J5IGF4aXMsXG4gIC8vIFRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIHgtYXhpcyBpcyB0aGUgc2VyaWFsIG51bWJlcnMgb2YgZGF0YVxuICAvLyBUaGUgZGVmYXVsdCB0eXBlIG9mIHktYXhpcyBpcyBudW1iZXIgYXhpc1xuICAvLyBUaGUgZGVmYXVsdCBjb250ZW50cyBvZiB5LWF4aXMgaXMgdGhlIGRvbWFpbiBvZiBkYXRhXG4gIHJldHVybiBncmFwaGljYWxJdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgY2hpbGQpIHtcbiAgICB2YXIgYXhpc0lkID0gY2hpbGQucHJvcHNbYXhpc0lkS2V5XTtcbiAgICB2YXIgb3JpZ2luYWxEb21haW4gPSBnZXREZWZhdWx0RG9tYWluQnlBeGlzVHlwZSgnbnVtYmVyJyk7XG4gICAgaWYgKCFyZXN1bHRbYXhpc0lkXSkge1xuICAgICAgaW5kZXgrKztcbiAgICAgIHZhciBkb21haW47XG4gICAgICBpZiAoaXNDYXRlZ29yaWNhbCkge1xuICAgICAgICBkb21haW4gPSByYW5nZSgwLCBsZW4pO1xuICAgICAgfSBlbHNlIGlmIChzdGFja0dyb3VwcyAmJiBzdGFja0dyb3Vwc1theGlzSWRdICYmIHN0YWNrR3JvdXBzW2F4aXNJZF0uaGFzU3RhY2spIHtcbiAgICAgICAgZG9tYWluID0gZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyhzdGFja0dyb3Vwc1theGlzSWRdLnN0YWNrR3JvdXBzLCBkYXRhU3RhcnRJbmRleCwgZGF0YUVuZEluZGV4KTtcbiAgICAgICAgZG9tYWluID0gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb21haW4gPSBwYXJzZVNwZWNpZmllZERvbWFpbihvcmlnaW5hbERvbWFpbiwgZ2V0RG9tYWluT2ZJdGVtc1dpdGhTYW1lQXhpcyhkaXNwbGF5ZWREYXRhLCBncmFwaGljYWxJdGVtcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5wcm9wc1theGlzSWRLZXldID09PSBheGlzSWQgJiYgIWl0ZW0ucHJvcHMuaGlkZTtcbiAgICAgICAgfSksICdudW1iZXInLCBsYXlvdXQpLCBBeGlzLmRlZmF1bHRQcm9wcy5hbGxvd0RhdGFPdmVyZmxvdyk7XG4gICAgICAgIGRvbWFpbiA9IGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluKGNoaWxkcmVuLCBkb21haW4sIGF4aXNJZCwgYXhpc1R5cGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYXhpc0lkLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBheGlzVHlwZTogYXhpc1R5cGVcbiAgICAgIH0sIEF4aXMuZGVmYXVsdFByb3BzKSwge30sIHtcbiAgICAgICAgaGlkZTogdHJ1ZSxcbiAgICAgICAgb3JpZW50YXRpb246IGdldChPUklFTlRfTUFQLCBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCIuXCIpLmNvbmNhdChpbmRleCAlIDIpLCBudWxsKSxcbiAgICAgICAgZG9tYWluOiBkb21haW4sXG4gICAgICAgIG9yaWdpbmFsRG9tYWluOiBvcmlnaW5hbERvbWFpbixcbiAgICAgICAgaXNDYXRlZ29yaWNhbDogaXNDYXRlZ29yaWNhbCxcbiAgICAgICAgbGF5b3V0OiBsYXlvdXRcbiAgICAgICAgLy8gc3BlY2lmeSBzY2FsZSB3aGVuIG5vIEF4aXNcbiAgICAgICAgLy8gc2NhbGU6IGlzQ2F0ZWdvcmljYWwgPyAnYmFuZCcgOiAnbGluZWFyJyxcbiAgICAgIH0pKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHt9KTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb25maWd1cmF0aW9uIG9mIGFsbCB4LWF4aXMgb3IgeS1heGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHByb3BzICAgICAgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtICB7U3RyaW5nfSBheGlzVHlwZSAgICAgICBUaGUgdHlwZSBvZiBheGlzXG4gKiBAcGFyYW0gIHtSZWFjdC5Db21wb25lbnRUeXBlfSAgW0F4aXNDb21wXSAgICAgIEF4aXMgQ29tcG9uZW50XG4gKiBAcGFyYW0gIHtBcnJheX0gIGdyYXBoaWNhbEl0ZW1zIFRoZSBpbnN0YW5jZXMgb2YgaXRlbVxuICogQHBhcmFtICB7T2JqZWN0fSBzdGFja0dyb3VwcyAgICBUaGUgaXRlbXMgZ3JvdXBlZCBieSBheGlzSWQgYW5kIHN0YWNrSWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkYXRhU3RhcnRJbmRleCAgVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHBhcmFtIHtOdW1iZXJ9IGRhdGFFbmRJbmRleCAgICBUaGUgZW5kIGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICBDb25maWd1cmF0aW9uXG4gKi9cbnZhciBnZXRBeGlzTWFwID0gZnVuY3Rpb24gZ2V0QXhpc01hcChwcm9wcywgX3JlZjQpIHtcbiAgdmFyIF9yZWY0JGF4aXNUeXBlID0gX3JlZjQuYXhpc1R5cGUsXG4gICAgYXhpc1R5cGUgPSBfcmVmNCRheGlzVHlwZSA9PT0gdm9pZCAwID8gJ3hBeGlzJyA6IF9yZWY0JGF4aXNUeXBlLFxuICAgIEF4aXNDb21wID0gX3JlZjQuQXhpc0NvbXAsXG4gICAgZ3JhcGhpY2FsSXRlbXMgPSBfcmVmNC5ncmFwaGljYWxJdGVtcyxcbiAgICBzdGFja0dyb3VwcyA9IF9yZWY0LnN0YWNrR3JvdXBzLFxuICAgIGRhdGFTdGFydEluZGV4ID0gX3JlZjQuZGF0YVN0YXJ0SW5kZXgsXG4gICAgZGF0YUVuZEluZGV4ID0gX3JlZjQuZGF0YUVuZEluZGV4O1xuICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGF4aXNJZEtleSA9IFwiXCIuY29uY2F0KGF4aXNUeXBlLCBcIklkXCIpO1xuICAvLyBHZXQgYWxsIHRoZSBpbnN0YW5jZSBvZiBBeGlzXG4gIHZhciBheGVzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgQXhpc0NvbXApO1xuICB2YXIgYXhpc01hcCA9IHt9O1xuICBpZiAoYXhlcyAmJiBheGVzLmxlbmd0aCkge1xuICAgIGF4aXNNYXAgPSBnZXRBeGlzTWFwQnlBeGVzKHByb3BzLCB7XG4gICAgICBheGVzOiBheGVzLFxuICAgICAgZ3JhcGhpY2FsSXRlbXM6IGdyYXBoaWNhbEl0ZW1zLFxuICAgICAgYXhpc1R5cGU6IGF4aXNUeXBlLFxuICAgICAgYXhpc0lkS2V5OiBheGlzSWRLZXksXG4gICAgICBzdGFja0dyb3Vwczogc3RhY2tHcm91cHMsXG4gICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGdyYXBoaWNhbEl0ZW1zICYmIGdyYXBoaWNhbEl0ZW1zLmxlbmd0aCkge1xuICAgIGF4aXNNYXAgPSBnZXRBeGlzTWFwQnlJdGVtcyhwcm9wcywge1xuICAgICAgQXhpczogQXhpc0NvbXAsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgICBheGlzVHlwZTogYXhpc1R5cGUsXG4gICAgICBheGlzSWRLZXk6IGF4aXNJZEtleSxcbiAgICAgIHN0YWNrR3JvdXBzOiBzdGFja0dyb3VwcyxcbiAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleDogZGF0YUVuZEluZGV4XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGF4aXNNYXA7XG59O1xudmFyIHRvb2x0aXBUaWNrc0dlbmVyYXRvciA9IGZ1bmN0aW9uIHRvb2x0aXBUaWNrc0dlbmVyYXRvcihheGlzTWFwKSB7XG4gIHZhciBheGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KGF4aXNNYXApO1xuICB2YXIgdG9vbHRpcFRpY2tzID0gZ2V0VGlja3NPZkF4aXMoYXhpcywgZmFsc2UsIHRydWUpO1xuICByZXR1cm4ge1xuICAgIHRvb2x0aXBUaWNrczogdG9vbHRpcFRpY2tzLFxuICAgIG9yZGVyZWRUb29sdGlwVGlja3M6IHNvcnRCeSh0b29sdGlwVGlja3MsIGZ1bmN0aW9uIChvKSB7XG4gICAgICByZXR1cm4gby5jb29yZGluYXRlO1xuICAgIH0pLFxuICAgIHRvb2x0aXBBeGlzOiBheGlzLFxuICAgIHRvb2x0aXBBeGlzQmFuZFNpemU6IGdldEJhbmRTaXplT2ZBeGlzKGF4aXMsIHRvb2x0aXBUaWNrcylcbiAgfTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBkZWZhdWx0LCByZXNldCBzdGF0ZSBmb3IgdGhlIGNhdGVnb3JpY2FsIGNoYXJ0LlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFByb3BzIG9iamVjdCB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZGVmYXVsdCBzdGF0ZVxuICogQHJldHVybiB7T2JqZWN0fSBXaG9sZSBuZXcgc3RhdGVcbiAqL1xuZXhwb3J0IHZhciBjcmVhdGVEZWZhdWx0U3RhdGUgPSBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0U3RhdGUocHJvcHMpIHtcbiAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgZGVmYXVsdFNob3dUb29sdGlwID0gcHJvcHMuZGVmYXVsdFNob3dUb29sdGlwO1xuICB2YXIgYnJ1c2hJdGVtID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBCcnVzaCk7XG4gIHZhciBzdGFydEluZGV4ID0gMDtcbiAgdmFyIGVuZEluZGV4ID0gMDtcbiAgaWYgKHByb3BzLmRhdGEgJiYgcHJvcHMuZGF0YS5sZW5ndGggIT09IDApIHtcbiAgICBlbmRJbmRleCA9IHByb3BzLmRhdGEubGVuZ3RoIC0gMTtcbiAgfVxuICBpZiAoYnJ1c2hJdGVtICYmIGJydXNoSXRlbS5wcm9wcykge1xuICAgIGlmIChicnVzaEl0ZW0ucHJvcHMuc3RhcnRJbmRleCA+PSAwKSB7XG4gICAgICBzdGFydEluZGV4ID0gYnJ1c2hJdGVtLnByb3BzLnN0YXJ0SW5kZXg7XG4gICAgfVxuICAgIGlmIChicnVzaEl0ZW0ucHJvcHMuZW5kSW5kZXggPj0gMCkge1xuICAgICAgZW5kSW5kZXggPSBicnVzaEl0ZW0ucHJvcHMuZW5kSW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY2hhcnRYOiAwLFxuICAgIGNoYXJ0WTogMCxcbiAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICBkYXRhRW5kSW5kZXg6IGVuZEluZGV4LFxuICAgIGFjdGl2ZVRvb2x0aXBJbmRleDogLTEsXG4gICAgaXNUb29sdGlwQWN0aXZlOiBCb29sZWFuKGRlZmF1bHRTaG93VG9vbHRpcClcbiAgfTtcbn07XG52YXIgaGFzR3JhcGhpY2FsQmFySXRlbSA9IGZ1bmN0aW9uIGhhc0dyYXBoaWNhbEJhckl0ZW0oZ3JhcGhpY2FsSXRlbXMpIHtcbiAgaWYgKCFncmFwaGljYWxJdGVtcyB8fCAhZ3JhcGhpY2FsSXRlbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBncmFwaGljYWxJdGVtcy5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5TmFtZShpdGVtICYmIGl0ZW0udHlwZSk7XG4gICAgcmV0dXJuIG5hbWUgJiYgbmFtZS5pbmRleE9mKCdCYXInKSA+PSAwO1xuICB9KTtcbn07XG52YXIgZ2V0QXhpc05hbWVCeUxheW91dCA9IGZ1bmN0aW9uIGdldEF4aXNOYW1lQnlMYXlvdXQobGF5b3V0KSB7XG4gIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgIHJldHVybiB7XG4gICAgICBudW1lcmljQXhpc05hbWU6ICd5QXhpcycsXG4gICAgICBjYXRlQXhpc05hbWU6ICd4QXhpcydcbiAgICB9O1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtZXJpY0F4aXNOYW1lOiAneEF4aXMnLFxuICAgICAgY2F0ZUF4aXNOYW1lOiAneUF4aXMnXG4gICAgfTtcbiAgfVxuICBpZiAobGF5b3V0ID09PSAnY2VudHJpYycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtZXJpY0F4aXNOYW1lOiAncmFkaXVzQXhpcycsXG4gICAgICBjYXRlQXhpc05hbWU6ICdhbmdsZUF4aXMnXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG51bWVyaWNBeGlzTmFtZTogJ2FuZ2xlQXhpcycsXG4gICAgY2F0ZUF4aXNOYW1lOiAncmFkaXVzQXhpcydcbiAgfTtcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgbWFpbiBwYXJ0IGluIHRoZSBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBwYXJhbXMucHJvcHMgICAgICAgICAgTGF0ZXN0IHByb3BzXG4gKiBAcGFyYW0gIHtBcnJheX0gIHBhcmFtcy5ncmFwaGljYWxJdGVtcyBUaGUgaW5zdGFuY2VzIG9mIGl0ZW1cbiAqIEBwYXJhbSAge09iamVjdH0gcGFyYW1zLnhBeGlzTWFwICAgICAgIFRoZSBjb25maWd1cmF0aW9uIG9mIHgtYXhpc1xuICogQHBhcmFtICB7T2JqZWN0fSBwYXJhbXMueUF4aXNNYXAgICAgICAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgeS1heGlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHByZXZMZWdlbmRCQm94ICAgICAgICBUaGUgYm91bmRhcnkgYm94IG9mIGxlZ2VuZFxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgb2Zmc2V0IG9mIG1haW4gcGFydCBpbiB0aGUgc3ZnIGVsZW1lbnRcbiAqL1xudmFyIGNhbGN1bGF0ZU9mZnNldCA9IGZ1bmN0aW9uIGNhbGN1bGF0ZU9mZnNldChfcmVmNSwgcHJldkxlZ2VuZEJCb3gpIHtcbiAgdmFyIHByb3BzID0gX3JlZjUucHJvcHMsXG4gICAgZ3JhcGhpY2FsSXRlbXMgPSBfcmVmNS5ncmFwaGljYWxJdGVtcyxcbiAgICBfcmVmNSR4QXhpc01hcCA9IF9yZWY1LnhBeGlzTWFwLFxuICAgIHhBeGlzTWFwID0gX3JlZjUkeEF4aXNNYXAgPT09IHZvaWQgMCA/IHt9IDogX3JlZjUkeEF4aXNNYXAsXG4gICAgX3JlZjUkeUF4aXNNYXAgPSBfcmVmNS55QXhpc01hcCxcbiAgICB5QXhpc01hcCA9IF9yZWY1JHlBeGlzTWFwID09PSB2b2lkIDAgPyB7fSA6IF9yZWY1JHlBeGlzTWFwO1xuICB2YXIgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgdmFyIG1hcmdpbiA9IHByb3BzLm1hcmdpbiB8fCB7fTtcbiAgdmFyIGJydXNoSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgQnJ1c2gpO1xuICB2YXIgbGVnZW5kSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgTGVnZW5kKTtcbiAgdmFyIG9mZnNldEggPSBPYmplY3Qua2V5cyh5QXhpc01hcCkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGlkKSB7XG4gICAgdmFyIGVudHJ5ID0geUF4aXNNYXBbaWRdO1xuICAgIHZhciBvcmllbnRhdGlvbiA9IGVudHJ5Lm9yaWVudGF0aW9uO1xuICAgIGlmICghZW50cnkubWlycm9yICYmICFlbnRyeS5oaWRlKSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBvcmllbnRhdGlvbiwgcmVzdWx0W29yaWVudGF0aW9uXSArIGVudHJ5LndpZHRoKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHtcbiAgICBsZWZ0OiBtYXJnaW4ubGVmdCB8fCAwLFxuICAgIHJpZ2h0OiBtYXJnaW4ucmlnaHQgfHwgMFxuICB9KTtcbiAgdmFyIG9mZnNldFYgPSBPYmplY3Qua2V5cyh4QXhpc01hcCkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGlkKSB7XG4gICAgdmFyIGVudHJ5ID0geEF4aXNNYXBbaWRdO1xuICAgIHZhciBvcmllbnRhdGlvbiA9IGVudHJ5Lm9yaWVudGF0aW9uO1xuICAgIGlmICghZW50cnkubWlycm9yICYmICFlbnRyeS5oaWRlKSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBvcmllbnRhdGlvbiwgZ2V0KHJlc3VsdCwgXCJcIi5jb25jYXQob3JpZW50YXRpb24pKSArIGVudHJ5LmhlaWdodCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7XG4gICAgdG9wOiBtYXJnaW4udG9wIHx8IDAsXG4gICAgYm90dG9tOiBtYXJnaW4uYm90dG9tIHx8IDBcbiAgfSk7XG4gIHZhciBvZmZzZXQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9mZnNldFYpLCBvZmZzZXRIKTtcbiAgdmFyIGJydXNoQm90dG9tID0gb2Zmc2V0LmJvdHRvbTtcbiAgaWYgKGJydXNoSXRlbSkge1xuICAgIG9mZnNldC5ib3R0b20gKz0gYnJ1c2hJdGVtLnByb3BzLmhlaWdodCB8fCBCcnVzaC5kZWZhdWx0UHJvcHMuaGVpZ2h0O1xuICB9XG4gIGlmIChsZWdlbmRJdGVtICYmIHByZXZMZWdlbmRCQm94KSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBtYXJnaW4gaXMgb3B0aW9uYWwgaW4gcHJvcHMgYnV0IHJlcXVpcmVkIGluIGFwcGVuZE9mZnNldE9mTGVnZW5kXG4gICAgb2Zmc2V0ID0gYXBwZW5kT2Zmc2V0T2ZMZWdlbmQob2Zmc2V0LCBncmFwaGljYWxJdGVtcywgcHJvcHMsIHByZXZMZWdlbmRCQm94KTtcbiAgfVxuICB2YXIgb2Zmc2V0V2lkdGggPSB3aWR0aCAtIG9mZnNldC5sZWZ0IC0gb2Zmc2V0LnJpZ2h0O1xuICB2YXIgb2Zmc2V0SGVpZ2h0ID0gaGVpZ2h0IC0gb2Zmc2V0LnRvcCAtIG9mZnNldC5ib3R0b207XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIGJydXNoQm90dG9tOiBicnVzaEJvdHRvbVxuICB9LCBvZmZzZXQpLCB7fSwge1xuICAgIC8vIG5ldmVyIHJldHVybiBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGhlaWdodCBhbmQgd2lkdGhcbiAgICB3aWR0aDogTWF0aC5tYXgob2Zmc2V0V2lkdGgsIDApLFxuICAgIGhlaWdodDogTWF0aC5tYXgob2Zmc2V0SGVpZ2h0LCAwKVxuICB9KTtcbn07XG4vLyBEZXRlcm1pbmUgdGhlIHNpemUgb2YgdGhlIGF4aXMsIHVzZWQgZm9yIGNhbGN1bGF0aW9uIG9mIHJlbGF0aXZlIGJhciBzaXplc1xudmFyIGdldENhcnRlc2lhbkF4aXNTaXplID0gZnVuY3Rpb24gZ2V0Q2FydGVzaWFuQXhpc1NpemUoYXhpc09iaiwgYXhpc05hbWUpIHtcbiAgaWYgKGF4aXNOYW1lID09PSAneEF4aXMnKSB7XG4gICAgcmV0dXJuIGF4aXNPYmpbYXhpc05hbWVdLndpZHRoO1xuICB9XG4gIGlmIChheGlzTmFtZSA9PT0gJ3lBeGlzJykge1xuICAgIHJldHVybiBheGlzT2JqW2F4aXNOYW1lXS5oZWlnaHQ7XG4gIH1cbiAgLy8gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQmFyIGNoYXJ0cyAoaS5lLiBjaGFydHMgd2l0aCBjYXJ0ZXNpYW4gYXhlcyksIHNvIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbmV4cG9ydCB2YXIgZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0ID0gZnVuY3Rpb24gZ2VuZXJhdGVDYXRlZ29yaWNhbENoYXJ0KF9yZWY2KSB7XG4gIHZhciBfQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXI7XG4gIHZhciBjaGFydE5hbWUgPSBfcmVmNi5jaGFydE5hbWUsXG4gICAgR3JhcGhpY2FsQ2hpbGQgPSBfcmVmNi5HcmFwaGljYWxDaGlsZCxcbiAgICBfcmVmNiRkZWZhdWx0VG9vbHRpcEUgPSBfcmVmNi5kZWZhdWx0VG9vbHRpcEV2ZW50VHlwZSxcbiAgICBkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZSA9IF9yZWY2JGRlZmF1bHRUb29sdGlwRSA9PT0gdm9pZCAwID8gJ2F4aXMnIDogX3JlZjYkZGVmYXVsdFRvb2x0aXBFLFxuICAgIF9yZWY2JHZhbGlkYXRlVG9vbHRpcCA9IF9yZWY2LnZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXMsXG4gICAgdmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlcyA9IF9yZWY2JHZhbGlkYXRlVG9vbHRpcCA9PT0gdm9pZCAwID8gWydheGlzJ10gOiBfcmVmNiR2YWxpZGF0ZVRvb2x0aXAsXG4gICAgYXhpc0NvbXBvbmVudHMgPSBfcmVmNi5heGlzQ29tcG9uZW50cyxcbiAgICBsZWdlbmRDb250ZW50ID0gX3JlZjYubGVnZW5kQ29udGVudCxcbiAgICBmb3JtYXRBeGlzTWFwID0gX3JlZjYuZm9ybWF0QXhpc01hcCxcbiAgICBkZWZhdWx0UHJvcHMgPSBfcmVmNi5kZWZhdWx0UHJvcHM7XG4gIHZhciBnZXRGb3JtYXRJdGVtcyA9IGZ1bmN0aW9uIGdldEZvcm1hdEl0ZW1zKHByb3BzLCBjdXJyZW50U3RhdGUpIHtcbiAgICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBjdXJyZW50U3RhdGUuZ3JhcGhpY2FsSXRlbXMsXG4gICAgICBzdGFja0dyb3VwcyA9IGN1cnJlbnRTdGF0ZS5zdGFja0dyb3VwcyxcbiAgICAgIG9mZnNldCA9IGN1cnJlbnRTdGF0ZS5vZmZzZXQsXG4gICAgICB1cGRhdGVJZCA9IGN1cnJlbnRTdGF0ZS51cGRhdGVJZCxcbiAgICAgIGRhdGFTdGFydEluZGV4ID0gY3VycmVudFN0YXRlLmRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4ID0gY3VycmVudFN0YXRlLmRhdGFFbmRJbmRleDtcbiAgICB2YXIgYmFyU2l6ZSA9IHByb3BzLmJhclNpemUsXG4gICAgICBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgICBiYXJHYXAgPSBwcm9wcy5iYXJHYXAsXG4gICAgICBiYXJDYXRlZ29yeUdhcCA9IHByb3BzLmJhckNhdGVnb3J5R2FwLFxuICAgICAgZ2xvYmFsTWF4QmFyU2l6ZSA9IHByb3BzLm1heEJhclNpemU7XG4gICAgdmFyIF9nZXRBeGlzTmFtZUJ5TGF5b3V0ID0gZ2V0QXhpc05hbWVCeUxheW91dChsYXlvdXQpLFxuICAgICAgbnVtZXJpY0F4aXNOYW1lID0gX2dldEF4aXNOYW1lQnlMYXlvdXQubnVtZXJpY0F4aXNOYW1lLFxuICAgICAgY2F0ZUF4aXNOYW1lID0gX2dldEF4aXNOYW1lQnlMYXlvdXQuY2F0ZUF4aXNOYW1lO1xuICAgIHZhciBoYXNCYXIgPSBoYXNHcmFwaGljYWxCYXJJdGVtKGdyYXBoaWNhbEl0ZW1zKTtcbiAgICB2YXIgZm9ybWF0dGVkSXRlbXMgPSBbXTtcbiAgICBncmFwaGljYWxJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgdmFyIGRpc3BsYXllZERhdGEgPSBnZXREaXNwbGF5ZWREYXRhKHByb3BzLmRhdGEsIHtcbiAgICAgICAgZ3JhcGhpY2FsSXRlbXM6IFtpdGVtXSxcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleFxuICAgICAgfSk7XG4gICAgICB2YXIgX2l0ZW0kcHJvcHMgPSBpdGVtLnByb3BzLFxuICAgICAgICBkYXRhS2V5ID0gX2l0ZW0kcHJvcHMuZGF0YUtleSxcbiAgICAgICAgY2hpbGRNYXhCYXJTaXplID0gX2l0ZW0kcHJvcHMubWF4QmFyU2l6ZTtcbiAgICAgIC8vIGF4aXNJZCBvZiB0aGUgbnVtZXJpY2FsIGF4aXNcbiAgICAgIHZhciBudW1lcmljQXhpc0lkID0gaXRlbS5wcm9wc1tcIlwiLmNvbmNhdChudW1lcmljQXhpc05hbWUsIFwiSWRcIildO1xuICAgICAgLy8gYXhpc0lkIG9mIHRoZSBjYXRlZ29yaWNhbCBheGlzXG4gICAgICB2YXIgY2F0ZUF4aXNJZCA9IGl0ZW0ucHJvcHNbXCJcIi5jb25jYXQoY2F0ZUF4aXNOYW1lLCBcIklkXCIpXTtcbiAgICAgIHZhciBheGlzT2JqSW5pdGlhbFZhbHVlID0ge307XG4gICAgICB2YXIgYXhpc09iaiA9IGF4aXNDb21wb25lbnRzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgICB2YXIgX2l0ZW0kdHlwZSRkaXNwbGF5TmFtLCBfaXRlbSR0eXBlO1xuICAgICAgICAvLyBtYXAgb2YgYXhpc0lkIHRvIGF4aXMgZm9yIGEgc3BlY2lmaWMgYXhpcyB0eXBlXG4gICAgICAgIHZhciBheGlzTWFwID0gY3VycmVudFN0YXRlW1wiXCIuY29uY2F0KGVudHJ5LmF4aXNUeXBlLCBcIk1hcFwiKV07XG4gICAgICAgIC8vIGF4aXNJZCBvZiBheGlzIHdlIGFyZSBjdXJyZW50bHkgY29tcHV0aW5nXG4gICAgICAgIHZhciBpZCA9IGl0ZW0ucHJvcHNbXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiSWRcIildO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0ZWxsIHRoZSB1c2VyIGluIGRldiBtb2RlIHRoYXQgdGhlaXIgY29uZmlndXJhdGlvbiBpcyBpbmNvcnJlY3QgaWYgd2UgY2Fubm90IGZpbmQgYSBtYXRjaCBiZXR3ZWVuXG4gICAgICAgICAqIGF4aXNJZCBvbiB0aGUgY2hhcnQgYW5kIGF4aXNJZCBvbiB0aGUgYXhpcy4gekF4aXMgZG9lcyBub3QgZ2V0IHBhc3NlZCBpbiB0aGUgbWFwIGZvciBDb21wb3NlZENoYXJ0LFxuICAgICAgICAgKiBsZWF2ZSBpdCBvdXQgb2YgdGhlIGNoZWNrIGZvciBub3cuXG4gICAgICAgICAqL1xuICAgICAgICAhKGF4aXNNYXAgJiYgYXhpc01hcFtpZF0gfHwgZW50cnkuYXhpc1R5cGUgPT09ICd6QXhpcycpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIlNwZWNpZnlpbmcgYShuKSBcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiSWQgcmVxdWlyZXMgYSBjb3JyZXNwb25kaW5nIFwiKS5jb25jYXQoZW50cnkuYXhpc1R5cGVcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBzaG91bGQgc3RvcCByZWFkaW5nIGRhdGEgZnJvbSBSZWFjdEVsZW1lbnRzXG4gICAgICAgICwgXCJJZCBvbiB0aGUgdGFyZ2V0ZWQgZ3JhcGhpY2FsIGNvbXBvbmVudCBcIikuY29uY2F0KChfaXRlbSR0eXBlJGRpc3BsYXlOYW0gPSBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCB8fCAoX2l0ZW0kdHlwZSA9IGl0ZW0udHlwZSkgPT09IG51bGwgfHwgX2l0ZW0kdHlwZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2l0ZW0kdHlwZS5kaXNwbGF5TmFtZSkgIT09IG51bGwgJiYgX2l0ZW0kdHlwZSRkaXNwbGF5TmFtICE9PSB2b2lkIDAgPyBfaXRlbSR0eXBlJGRpc3BsYXlOYW0gOiAnJykpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAgICAgICAvLyB0aGUgYXhpcyB3ZSBhcmUgY3VycmVudGx5IGZvcm1hdHRpbmdcbiAgICAgICAgdmFyIGF4aXMgPSBheGlzTWFwW2lkXTtcbiAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe30sIGVudHJ5LmF4aXNUeXBlLCBheGlzKSwgXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiVGlja3NcIiksIGdldFRpY2tzT2ZBeGlzKGF4aXMpKSk7XG4gICAgICB9LCBheGlzT2JqSW5pdGlhbFZhbHVlKTtcbiAgICAgIHZhciBjYXRlQXhpcyA9IGF4aXNPYmpbY2F0ZUF4aXNOYW1lXTtcbiAgICAgIHZhciBjYXRlVGlja3MgPSBheGlzT2JqW1wiXCIuY29uY2F0KGNhdGVBeGlzTmFtZSwgXCJUaWNrc1wiKV07XG4gICAgICB2YXIgc3RhY2tlZERhdGEgPSBzdGFja0dyb3VwcyAmJiBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXSAmJiBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXS5oYXNTdGFjayAmJiBnZXRTdGFja2VkRGF0YU9mSXRlbShpdGVtLCBzdGFja0dyb3Vwc1tudW1lcmljQXhpc0lkXS5zdGFja0dyb3Vwcyk7XG4gICAgICB2YXIgaXRlbUlzQmFyID0gZ2V0RGlzcGxheU5hbWUoaXRlbS50eXBlKS5pbmRleE9mKCdCYXInKSA+PSAwO1xuICAgICAgdmFyIGJhbmRTaXplID0gZ2V0QmFuZFNpemVPZkF4aXMoY2F0ZUF4aXMsIGNhdGVUaWNrcyk7XG4gICAgICB2YXIgYmFyUG9zaXRpb24gPSBbXTtcbiAgICAgIHZhciBzaXplTGlzdCA9IGhhc0JhciAmJiBnZXRCYXJTaXplTGlzdCh7XG4gICAgICAgIGJhclNpemU6IGJhclNpemUsXG4gICAgICAgIHN0YWNrR3JvdXBzOiBzdGFja0dyb3VwcyxcbiAgICAgICAgdG90YWxTaXplOiBnZXRDYXJ0ZXNpYW5BeGlzU2l6ZShheGlzT2JqLCBjYXRlQXhpc05hbWUpXG4gICAgICB9KTtcbiAgICAgIGlmIChpdGVtSXNCYXIpIHtcbiAgICAgICAgdmFyIF9yZWY3LCBfZ2V0QmFuZFNpemVPZkF4aXM7XG4gICAgICAgIC8vIElmIGl0IGlzIGJhciwgY2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiBiYXJcbiAgICAgICAgdmFyIG1heEJhclNpemUgPSBpc05pbChjaGlsZE1heEJhclNpemUpID8gZ2xvYmFsTWF4QmFyU2l6ZSA6IGNoaWxkTWF4QmFyU2l6ZTtcbiAgICAgICAgdmFyIGJhckJhbmRTaXplID0gKF9yZWY3ID0gKF9nZXRCYW5kU2l6ZU9mQXhpcyA9IGdldEJhbmRTaXplT2ZBeGlzKGNhdGVBeGlzLCBjYXRlVGlja3MsIHRydWUpKSAhPT0gbnVsbCAmJiBfZ2V0QmFuZFNpemVPZkF4aXMgIT09IHZvaWQgMCA/IF9nZXRCYW5kU2l6ZU9mQXhpcyA6IG1heEJhclNpemUpICE9PSBudWxsICYmIF9yZWY3ICE9PSB2b2lkIDAgPyBfcmVmNyA6IDA7XG4gICAgICAgIGJhclBvc2l0aW9uID0gZ2V0QmFyUG9zaXRpb24oe1xuICAgICAgICAgIGJhckdhcDogYmFyR2FwLFxuICAgICAgICAgIGJhckNhdGVnb3J5R2FwOiBiYXJDYXRlZ29yeUdhcCxcbiAgICAgICAgICBiYW5kU2l6ZTogYmFyQmFuZFNpemUgIT09IGJhbmRTaXplID8gYmFyQmFuZFNpemUgOiBiYW5kU2l6ZSxcbiAgICAgICAgICBzaXplTGlzdDogc2l6ZUxpc3RbY2F0ZUF4aXNJZF0sXG4gICAgICAgICAgbWF4QmFyU2l6ZTogbWF4QmFyU2l6ZVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGJhckJhbmRTaXplICE9PSBiYW5kU2l6ZSkge1xuICAgICAgICAgIGJhclBvc2l0aW9uID0gYmFyUG9zaXRpb24ubWFwKGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHBvcyksIHt9LCB7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHBvcy5wb3NpdGlvbiksIHt9LCB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBwb3MucG9zaXRpb24ub2Zmc2V0IC0gYmFyQmFuZFNpemUgLyAyXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3ZSBzaG91bGQgc3RvcCByZWFkaW5nIGRhdGEgZnJvbSBSZWFjdEVsZW1lbnRzXG4gICAgICB2YXIgY29tcG9zZWRGbiA9IGl0ZW0gJiYgaXRlbS50eXBlICYmIGl0ZW0udHlwZS5nZXRDb21wb3NlZERhdGE7XG4gICAgICBpZiAoY29tcG9zZWRGbikge1xuICAgICAgICBmb3JtYXR0ZWRJdGVtcy5wdXNoKHtcbiAgICAgICAgICBwcm9wczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb21wb3NlZEZuKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09iaiksIHt9LCB7XG4gICAgICAgICAgICBkaXNwbGF5ZWREYXRhOiBkaXNwbGF5ZWREYXRhLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICBiYW5kU2l6ZTogYmFuZFNpemUsXG4gICAgICAgICAgICBiYXJQb3NpdGlvbjogYmFyUG9zaXRpb24sXG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIHN0YWNrZWREYXRhOiBzdGFja2VkRGF0YSxcbiAgICAgICAgICAgIGxheW91dDogbGF5b3V0LFxuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgICAgICB9KSkpLCB7fSwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICAga2V5OiBpdGVtLmtleSB8fCBcIml0ZW0tXCIuY29uY2F0KGluZGV4KVxuICAgICAgICAgIH0sIG51bWVyaWNBeGlzTmFtZSwgYXhpc09ialtudW1lcmljQXhpc05hbWVdKSwgY2F0ZUF4aXNOYW1lLCBheGlzT2JqW2NhdGVBeGlzTmFtZV0pLCBcImFuaW1hdGlvbklkXCIsIHVwZGF0ZUlkKSksXG4gICAgICAgICAgY2hpbGRJbmRleDogcGFyc2VDaGlsZEluZGV4KGl0ZW0sIHByb3BzLmNoaWxkcmVuKSxcbiAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3JtYXR0ZWRJdGVtcztcbiAgfTtcblxuICAvKipcbiAgICogVGhlIEF4aXNNYXBzIGFyZSBleHBlbnNpdmUgdG8gcmVuZGVyIG9uIGxhcmdlIGRhdGEgc2V0c1xuICAgKiBzbyBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHN0b3JlIHRoZW0gaW4gc3RhdGUgYW5kIG9ubHkgdXBkYXRlIHRoZW0gd2hlbiBuZWNlc3NhcnlcbiAgICogdGhleSBhcmUgZGVwZW5kZW50IHVwb24gdGhlIHN0YXJ0IGFuZCBlbmQgaW5kZXggb2ZcbiAgICogdGhlIGJydXNoIHNvIGl0J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIF9hZnRlcl9cbiAgICogdGhlIHN0YXRlIGlzIHVwZGF0ZWQgd2l0aCBhbnkgbmV3IHN0YXJ0L2VuZCBpbmRpY2VzXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAgICAgICAgICBUaGUgcHJvcHMgb2JqZWN0IHRvIGJlIHVzZWQgZm9yIHVwZGF0aW5nIHRoZSBheGlzbWFwc1xuICAgKiBkYXRhU3RhcnRJbmRleDogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHNlcmllcyB3aGVuIGEgYnJ1c2ggaXMgYXBwbGllZFxuICAgKiBkYXRhRW5kSW5kZXg6IFRoZSBlbmQgaW5kZXggb2YgdGhlIGRhdGEgc2VyaWVzIHdoZW4gYSBicnVzaCBpcyBhcHBsaWVkXG4gICAqIHVwZGF0ZUlkOiBUaGUgdXBkYXRlIGlkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcmV2U3RhdGUgICAgICBQcmV2IHN0YXRlXG4gICAqIEByZXR1cm4ge09iamVjdH0gc3RhdGUgTmV3IHN0YXRlIHRvIHNldFxuICAgKi9cbiAgdmFyIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzID0gZnVuY3Rpb24gdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoX3JlZjgsIHByZXZTdGF0ZSkge1xuICAgIHZhciBwcm9wcyA9IF9yZWY4LnByb3BzLFxuICAgICAgZGF0YVN0YXJ0SW5kZXggPSBfcmVmOC5kYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleCA9IF9yZWY4LmRhdGFFbmRJbmRleCxcbiAgICAgIHVwZGF0ZUlkID0gX3JlZjgudXBkYXRlSWQ7XG4gICAgaWYgKCF2YWxpZGF0ZVdpZHRoSGVpZ2h0KHtcbiAgICAgIHByb3BzOiBwcm9wc1xuICAgIH0pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgICBzdGFja09mZnNldCA9IHByb3BzLnN0YWNrT2Zmc2V0LFxuICAgICAgZGF0YSA9IHByb3BzLmRhdGEsXG4gICAgICByZXZlcnNlU3RhY2tPcmRlciA9IHByb3BzLnJldmVyc2VTdGFja09yZGVyO1xuICAgIHZhciBfZ2V0QXhpc05hbWVCeUxheW91dDIgPSBnZXRBeGlzTmFtZUJ5TGF5b3V0KGxheW91dCksXG4gICAgICBudW1lcmljQXhpc05hbWUgPSBfZ2V0QXhpc05hbWVCeUxheW91dDIubnVtZXJpY0F4aXNOYW1lLFxuICAgICAgY2F0ZUF4aXNOYW1lID0gX2dldEF4aXNOYW1lQnlMYXlvdXQyLmNhdGVBeGlzTmFtZTtcbiAgICB2YXIgZ3JhcGhpY2FsSXRlbXMgPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBHcmFwaGljYWxDaGlsZCk7XG4gICAgdmFyIHN0YWNrR3JvdXBzID0gZ2V0U3RhY2tHcm91cHNCeUF4aXNJZChkYXRhLCBncmFwaGljYWxJdGVtcywgXCJcIi5jb25jYXQobnVtZXJpY0F4aXNOYW1lLCBcIklkXCIpLCBcIlwiLmNvbmNhdChjYXRlQXhpc05hbWUsIFwiSWRcIiksIHN0YWNrT2Zmc2V0LCByZXZlcnNlU3RhY2tPcmRlcik7XG4gICAgdmFyIGF4aXNPYmogPSBheGlzQ29tcG9uZW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHZhciBuYW1lID0gXCJcIi5jb25jYXQoZW50cnkuYXhpc1R5cGUsIFwiTWFwXCIpO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdWx0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgbmFtZSwgZ2V0QXhpc01hcChwcm9wcywgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgICAgc3RhY2tHcm91cHM6IGVudHJ5LmF4aXNUeXBlID09PSBudW1lcmljQXhpc05hbWUgJiYgc3RhY2tHcm91cHMsXG4gICAgICAgIGRhdGFTdGFydEluZGV4OiBkYXRhU3RhcnRJbmRleCxcbiAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgIH0pKSkpO1xuICAgIH0sIHt9KTtcbiAgICB2YXIgb2Zmc2V0ID0gY2FsY3VsYXRlT2Zmc2V0KF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09iaiksIHt9LCB7XG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXNcbiAgICB9KSwgcHJldlN0YXRlID09PSBudWxsIHx8IHByZXZTdGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcHJldlN0YXRlLmxlZ2VuZEJCb3gpO1xuICAgIE9iamVjdC5rZXlzKGF4aXNPYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgYXhpc09ialtrZXldID0gZm9ybWF0QXhpc01hcChwcm9wcywgYXhpc09ialtrZXldLCBvZmZzZXQsIGtleS5yZXBsYWNlKCdNYXAnLCAnJyksIGNoYXJ0TmFtZSk7XG4gICAgfSk7XG4gICAgdmFyIGNhdGVBeGlzTWFwID0gYXhpc09ialtcIlwiLmNvbmNhdChjYXRlQXhpc05hbWUsIFwiTWFwXCIpXTtcbiAgICB2YXIgdGlja3NPYmogPSB0b29sdGlwVGlja3NHZW5lcmF0b3IoY2F0ZUF4aXNNYXApO1xuICAgIHZhciBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyA9IGdldEZvcm1hdEl0ZW1zKHByb3BzLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXNPYmopLCB7fSwge1xuICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXgsXG4gICAgICB1cGRhdGVJZDogdXBkYXRlSWQsXG4gICAgICBncmFwaGljYWxJdGVtczogZ3JhcGhpY2FsSXRlbXMsXG4gICAgICBzdGFja0dyb3Vwczogc3RhY2tHcm91cHMsXG4gICAgICBvZmZzZXQ6IG9mZnNldFxuICAgIH0pKTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgIGZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zOiBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyxcbiAgICAgIGdyYXBoaWNhbEl0ZW1zOiBncmFwaGljYWxJdGVtcyxcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgc3RhY2tHcm91cHM6IHN0YWNrR3JvdXBzXG4gICAgfSwgdGlja3NPYmopLCBheGlzT2JqKTtcbiAgfTtcbiAgcmV0dXJuIF9DYXRlZ29yaWNhbENoYXJ0V3JhcHBlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICAgIF9pbmhlcml0cyhDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgX0NvbXBvbmVudCk7XG4gICAgZnVuY3Rpb24gQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIoX3Byb3BzKSB7XG4gICAgICB2YXIgX3Byb3BzJGlkLCBfcHJvcHMkdGhyb3R0bGVEZWxheTtcbiAgICAgIHZhciBfdGhpcztcbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYXRlZ29yaWNhbENoYXJ0V3JhcHBlcik7XG4gICAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIFtfcHJvcHNdKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJldmVudEVtaXR0ZXJTeW1ib2xcIiwgU3ltYm9sKCdyZWNoYXJ0c0V2ZW50RW1pdHRlcicpKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJhY2Nlc3NpYmlsaXR5TWFuYWdlclwiLCBuZXcgQWNjZXNzaWJpbGl0eU1hbmFnZXIoKSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlTGVnZW5kQkJveFVwZGF0ZVwiLCBmdW5jdGlvbiAoYm94KSB7XG4gICAgICAgIGlmIChib3gpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkc3RhdGUgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGRhdGFTdGFydEluZGV4ID0gX3RoaXMkc3RhdGUuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXggPSBfdGhpcyRzdGF0ZS5kYXRhRW5kSW5kZXgsXG4gICAgICAgICAgICB1cGRhdGVJZCA9IF90aGlzJHN0YXRlLnVwZGF0ZUlkO1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgbGVnZW5kQkJveDogYm94XG4gICAgICAgICAgfSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoe1xuICAgICAgICAgICAgcHJvcHM6IF90aGlzLnByb3BzLFxuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXgsXG4gICAgICAgICAgICB1cGRhdGVJZDogdXBkYXRlSWRcbiAgICAgICAgICB9LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLnN0YXRlKSwge30sIHtcbiAgICAgICAgICAgIGxlZ2VuZEJCb3g6IGJveFxuICAgICAgICAgIH0pKSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVSZWNlaXZlU3luY0V2ZW50XCIsIGZ1bmN0aW9uIChjSWQsIGRhdGEsIGVtaXR0ZXIpIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLnN5bmNJZCA9PT0gY0lkKSB7XG4gICAgICAgICAgaWYgKGVtaXR0ZXIgPT09IF90aGlzLmV2ZW50RW1pdHRlclN5bWJvbCAmJiB0eXBlb2YgX3RoaXMucHJvcHMuc3luY01ldGhvZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfdGhpcy5hcHBseVN5bmNFdmVudChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQnJ1c2hDaGFuZ2VcIiwgZnVuY3Rpb24gKF9yZWY5KSB7XG4gICAgICAgIHZhciBzdGFydEluZGV4ID0gX3JlZjkuc3RhcnRJbmRleCxcbiAgICAgICAgICBlbmRJbmRleCA9IF9yZWY5LmVuZEluZGV4O1xuICAgICAgICAvLyBPbmx5IHRyaWdnZXIgY2hhbmdlcyBpZiB0aGUgZXh0ZW50cyBvZiB0aGUgYnJ1c2ggaGF2ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgICAgIGlmIChzdGFydEluZGV4ICE9PSBfdGhpcy5zdGF0ZS5kYXRhU3RhcnRJbmRleCB8fCBlbmRJbmRleCAhPT0gX3RoaXMuc3RhdGUuZGF0YUVuZEluZGV4KSB7XG4gICAgICAgICAgdmFyIHVwZGF0ZUlkID0gX3RoaXMuc3RhdGUudXBkYXRlSWQ7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBlbmRJbmRleFxuICAgICAgICAgICAgfSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoe1xuICAgICAgICAgICAgICBwcm9wczogX3RoaXMucHJvcHMsXG4gICAgICAgICAgICAgIGRhdGFTdGFydEluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGVuZEluZGV4LFxuICAgICAgICAgICAgICB1cGRhdGVJZDogdXBkYXRlSWRcbiAgICAgICAgICAgIH0sIF90aGlzLnN0YXRlKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudCh7XG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogc3RhcnRJbmRleCxcbiAgICAgICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIG9mIG1vdXNlIGVudGVyaW5nIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0gIHtPYmplY3R9IGUgICAgICAgICAgICAgIEV2ZW50IG9iamVjdFxuICAgICAgICogQHJldHVybiB7TnVsbH0gICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVNb3VzZUVudGVyXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHZhciBtb3VzZSA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgaWYgKG1vdXNlKSB7XG4gICAgICAgICAgdmFyIF9uZXh0U3RhdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1vdXNlKSwge30sIHtcbiAgICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9uZXh0U3RhdGUpO1xuICAgICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQoX25leHRTdGF0ZSk7XG4gICAgICAgICAgdmFyIG9uTW91c2VFbnRlciA9IF90aGlzLnByb3BzLm9uTW91c2VFbnRlcjtcbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvbk1vdXNlRW50ZXIpKSB7XG4gICAgICAgICAgICBvbk1vdXNlRW50ZXIoX25leHRTdGF0ZSwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJ0cmlnZ2VyZWRBZnRlck1vdXNlTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSBtb3VzZSA/IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW91c2UpLCB7fSwge1xuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogdHJ1ZVxuICAgICAgICB9KSA6IHtcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQobmV4dFN0YXRlKTtcbiAgICAgICAgdmFyIG9uTW91c2VNb3ZlID0gX3RoaXMucHJvcHMub25Nb3VzZU1vdmU7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VNb3ZlKSkge1xuICAgICAgICAgIG9uTW91c2VNb3ZlKG5leHRTdGF0ZSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaGFuZGxlciBvZiBtb3VzZSBlbnRlcmluZyBhIHNjYXR0ZXJcbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlbCBUaGUgYWN0aXZlIHNjYXR0ZXJcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gbm8gcmV0dXJuXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVJdGVtTW91c2VFbnRlclwiLCBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHRydWUsXG4gICAgICAgICAgICBhY3RpdmVJdGVtOiBlbCxcbiAgICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGVsLnRvb2x0aXBQYXlsb2FkLFxuICAgICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZTogZWwudG9vbHRpcFBvc2l0aW9uIHx8IHtcbiAgICAgICAgICAgICAgeDogZWwuY3gsXG4gICAgICAgICAgICAgIHk6IGVsLmN5XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGhhbmRsZXIgb2YgbW91c2UgbGVhdmluZyBhIHNjYXR0ZXJcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gbm8gcmV0dXJuXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVJdGVtTW91c2VMZWF2ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBoYW5kbGVyIG9mIG1vdXNlIG1vdmluZyBpbiBjaGFydFxuICAgICAgICogQHBhcmFtICB7UmVhY3QuTW91c2VFdmVudH0gZSAgICAgICAgRXZlbnQgb2JqZWN0XG4gICAgICAgKiBAcmV0dXJuIHt2b2lkfSBubyByZXR1cm5cbiAgICAgICAqL1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZU1vdXNlTW92ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBlLnBlcnNpc3QoKTtcbiAgICAgICAgX3RoaXMudGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZShlKTtcbiAgICAgIH0pO1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaGFuZGxlciBpZiBtb3VzZSBsZWF2aW5nIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gZSBFdmVudCBvYmplY3RcbiAgICAgICAqIEByZXR1cm4ge051bGx9IG5vIHJldHVyblxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlTW91c2VMZWF2ZVwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLmNhbmNlbCgpO1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0ge1xuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUobmV4dFN0YXRlKTtcbiAgICAgICAgX3RoaXMudHJpZ2dlclN5bmNFdmVudChuZXh0U3RhdGUpO1xuICAgICAgICB2YXIgb25Nb3VzZUxlYXZlID0gX3RoaXMucHJvcHMub25Nb3VzZUxlYXZlO1xuICAgICAgICBpZiAoaXNGdW5jdGlvbihvbk1vdXNlTGVhdmUpKSB7XG4gICAgICAgICAgb25Nb3VzZUxlYXZlKG5leHRTdGF0ZSwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZU91dGVyRXZlbnRcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIGV2ZW50TmFtZSA9IGdldFJlYWN0RXZlbnRCeVR5cGUoZSk7XG4gICAgICAgIHZhciBldmVudCA9IGdldChfdGhpcy5wcm9wcywgXCJcIi5jb25jYXQoZXZlbnROYW1lKSk7XG4gICAgICAgIGlmIChldmVudE5hbWUgJiYgaXNGdW5jdGlvbihldmVudCkpIHtcbiAgICAgICAgICB2YXIgX21vdXNlO1xuICAgICAgICAgIHZhciBtb3VzZTtcbiAgICAgICAgICBpZiAoLy4qdG91Y2guKi9pLnRlc3QoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vdXNlID0gX3RoaXMuZ2V0TW91c2VJbmZvKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudCgoX21vdXNlID0gbW91c2UpICE9PSBudWxsICYmIF9tb3VzZSAhPT0gdm9pZCAwID8gX21vdXNlIDoge30sIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgbW91c2UgPSBfdGhpcy5nZXRNb3VzZUluZm8oZSk7XG4gICAgICAgIGlmIChtb3VzZSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlMiA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgbW91c2UpLCB7fSwge1xuICAgICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX25leHRTdGF0ZTIpO1xuICAgICAgICAgIF90aGlzLnRyaWdnZXJTeW5jRXZlbnQoX25leHRTdGF0ZTIpO1xuICAgICAgICAgIHZhciBvbkNsaWNrID0gX3RoaXMucHJvcHMub25DbGljaztcbiAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvbkNsaWNrKSkge1xuICAgICAgICAgICAgb25DbGljayhfbmV4dFN0YXRlMiwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVNb3VzZURvd25cIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uTW91c2VEb3duID0gX3RoaXMucHJvcHMub25Nb3VzZURvd247XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKG9uTW91c2VEb3duKSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlMyA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbk1vdXNlRG93bihfbmV4dFN0YXRlMywgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZU1vdXNlVXBcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgdmFyIG9uTW91c2VVcCA9IF90aGlzLnByb3BzLm9uTW91c2VVcDtcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ob25Nb3VzZVVwKSkge1xuICAgICAgICAgIHZhciBfbmV4dFN0YXRlNCA9IF90aGlzLmdldE1vdXNlSW5mbyhlKTtcbiAgICAgICAgICBvbk1vdXNlVXAoX25leHRTdGF0ZTQsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVUb3VjaE1vdmVcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUuY2hhbmdlZFRvdWNoZXMgIT0gbnVsbCAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBfdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlKGUuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVUb3VjaFN0YXJ0XCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlLmNoYW5nZWRUb3VjaGVzICE9IG51bGwgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgX3RoaXMuaGFuZGxlTW91c2VEb3duKGUuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVUb3VjaEVuZFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS5jaGFuZ2VkVG91Y2hlcyAhPSBudWxsICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIF90aGlzLmhhbmRsZU1vdXNlVXAoZS5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInRyaWdnZXJTeW5jRXZlbnRcIiwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgaWYgKF90aGlzLnByb3BzLnN5bmNJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXZlbnRDZW50ZXIuZW1pdChTWU5DX0VWRU5ULCBfdGhpcy5wcm9wcy5zeW5jSWQsIGRhdGEsIF90aGlzLmV2ZW50RW1pdHRlclN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImFwcGx5U3luY0V2ZW50XCIsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzLmxheW91dCxcbiAgICAgICAgICBzeW5jTWV0aG9kID0gX3RoaXMkcHJvcHMuc3luY01ldGhvZDtcbiAgICAgICAgdmFyIHVwZGF0ZUlkID0gX3RoaXMuc3RhdGUudXBkYXRlSWQ7XG4gICAgICAgIHZhciBkYXRhU3RhcnRJbmRleCA9IGRhdGEuZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgZGF0YUVuZEluZGV4ID0gZGF0YS5kYXRhRW5kSW5kZXg7XG4gICAgICAgIGlmIChkYXRhLmRhdGFTdGFydEluZGV4ICE9PSB1bmRlZmluZWQgfHwgZGF0YS5kYXRhRW5kSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIF90aGlzLnNldFN0YXRlKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IGRhdGFTdGFydEluZGV4LFxuICAgICAgICAgICAgZGF0YUVuZEluZGV4OiBkYXRhRW5kSW5kZXhcbiAgICAgICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyh7XG4gICAgICAgICAgICBwcm9wczogX3RoaXMucHJvcHMsXG4gICAgICAgICAgICBkYXRhU3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBkYXRhRW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgICAgICAgIHVwZGF0ZUlkOiB1cGRhdGVJZFxuICAgICAgICAgIH0sIF90aGlzLnN0YXRlKSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGEuYWN0aXZlVG9vbHRpcEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgY2hhcnRYID0gZGF0YS5jaGFydFgsXG4gICAgICAgICAgICBjaGFydFkgPSBkYXRhLmNoYXJ0WTtcbiAgICAgICAgICB2YXIgYWN0aXZlVG9vbHRpcEluZGV4ID0gZGF0YS5hY3RpdmVUb29sdGlwSW5kZXg7XG4gICAgICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGUyLm9mZnNldCxcbiAgICAgICAgICAgIHRvb2x0aXBUaWNrcyA9IF90aGlzJHN0YXRlMi50b29sdGlwVGlja3M7XG4gICAgICAgICAgaWYgKCFvZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiBzeW5jTWV0aG9kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBDYWxsIGEgY2FsbGJhY2sgZnVuY3Rpb24uIElmIHRoZXJlIGlzIGFuIGFwcGxpY2F0aW9uIHNwZWNpZmljIGFsZ29yaXRobVxuICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gc3luY01ldGhvZCh0b29sdGlwVGlja3MsIGRhdGEpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3luY01ldGhvZCA9PT0gJ3ZhbHVlJykge1xuICAgICAgICAgICAgLy8gU2V0IGFjdGl2ZVRvb2x0aXBJbmRleCB0byB0aGUgaW5kZXggd2l0aCB0aGUgc2FtZSB2YWx1ZSBhcyBkYXRhLmFjdGl2ZUxhYmVsXG4gICAgICAgICAgICAvLyBGb3IgbG9vcCBpbnN0ZWFkIG9mIGZpbmRJbmRleCBiZWNhdXNlIHRoZSBsYXR0ZXIgaXMgdmVyeSBzbG93IGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleCA9IC0xOyAvLyBpbiBjYXNlIHdlIGNhbm5vdCBmaW5kIHRoZSBlbGVtZW50XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBUaWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAodG9vbHRpcFRpY2tzW2ldLnZhbHVlID09PSBkYXRhLmFjdGl2ZUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgdmlld0JveCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb2Zmc2V0KSwge30sIHtcbiAgICAgICAgICAgIHg6IG9mZnNldC5sZWZ0LFxuICAgICAgICAgICAgeTogb2Zmc2V0LnRvcFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIFdoZW4gYSBjYXRlZ29yaWNhbCBjaGFydCBpcyBjb21iaW5lZCB3aXRoIGFub3RoZXIgY2hhcnQsIHRoZSB2YWx1ZSBvZiBjaGFydFhcbiAgICAgICAgICAvLyBhbmQgY2hhcnRZIG1heSBiZXlvbmQgdGhlIGJvdW5kYXJpZXMuXG4gICAgICAgICAgdmFyIHZhbGlkYXRlQ2hhcnRYID0gTWF0aC5taW4oY2hhcnRYLCB2aWV3Qm94LnggKyB2aWV3Qm94LndpZHRoKTtcbiAgICAgICAgICB2YXIgdmFsaWRhdGVDaGFydFkgPSBNYXRoLm1pbihjaGFydFksIHZpZXdCb3gueSArIHZpZXdCb3guaGVpZ2h0KTtcbiAgICAgICAgICB2YXIgYWN0aXZlTGFiZWwgPSB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XSAmJiB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XS52YWx1ZTtcbiAgICAgICAgICB2YXIgYWN0aXZlUGF5bG9hZCA9IGdldFRvb2x0aXBDb250ZW50KF90aGlzLnN0YXRlLCBfdGhpcy5wcm9wcy5kYXRhLCBhY3RpdmVUb29sdGlwSW5kZXgpO1xuICAgICAgICAgIHZhciBhY3RpdmVDb29yZGluYXRlID0gdG9vbHRpcFRpY2tzW2FjdGl2ZVRvb2x0aXBJbmRleF0gPyB7XG4gICAgICAgICAgICB4OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IHRvb2x0aXBUaWNrc1thY3RpdmVUb29sdGlwSW5kZXhdLmNvb3JkaW5hdGUgOiB2YWxpZGF0ZUNoYXJ0WCxcbiAgICAgICAgICAgIHk6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gdmFsaWRhdGVDaGFydFkgOiB0b29sdGlwVGlja3NbYWN0aXZlVG9vbHRpcEluZGV4XS5jb29yZGluYXRlXG4gICAgICAgICAgfSA6IG9yaWdpbkNvb3JkaW5hdGU7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkYXRhKSwge30sIHtcbiAgICAgICAgICAgIGFjdGl2ZUxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGU6IGFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgICAgICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXhcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlbmRlckN1cnNvclwiLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMkYWN0aXZlO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUzID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlID0gX3RoaXMkc3RhdGUzLmlzVG9vbHRpcEFjdGl2ZSxcbiAgICAgICAgICBhY3RpdmVDb29yZGluYXRlID0gX3RoaXMkc3RhdGUzLmFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgICAgICAgYWN0aXZlUGF5bG9hZCA9IF90aGlzJHN0YXRlMy5hY3RpdmVQYXlsb2FkLFxuICAgICAgICAgIG9mZnNldCA9IF90aGlzJHN0YXRlMy5vZmZzZXQsXG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4ID0gX3RoaXMkc3RhdGUzLmFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICAgICAgICB0b29sdGlwQXhpc0JhbmRTaXplID0gX3RoaXMkc3RhdGUzLnRvb2x0aXBBeGlzQmFuZFNpemU7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gX3RoaXMuZ2V0VG9vbHRpcEV2ZW50VHlwZSgpO1xuICAgICAgICAvLyBUaGUgY3Vyc29yIGlzIGEgcGFydCBvZiB0aGUgVG9vbHRpcCwgYW5kIGl0IHNob3VsZCBiZSBzaG93biAoYnkgZGVmYXVsdCkgd2hlbiB0aGUgVG9vbHRpcCBpcyBhY3RpdmUuXG4gICAgICAgIHZhciBpc0FjdGl2ZSA9IChfZWxlbWVudCRwcm9wcyRhY3RpdmUgPSBlbGVtZW50LnByb3BzLmFjdGl2ZSkgIT09IG51bGwgJiYgX2VsZW1lbnQkcHJvcHMkYWN0aXZlICE9PSB2b2lkIDAgPyBfZWxlbWVudCRwcm9wcyRhY3RpdmUgOiBpc1Rvb2x0aXBBY3RpdmU7XG4gICAgICAgIHZhciBsYXlvdXQgPSBfdGhpcy5wcm9wcy5sYXlvdXQ7XG4gICAgICAgIHZhciBrZXkgPSBlbGVtZW50LmtleSB8fCAnX3JlY2hhcnRzLWN1cnNvcic7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDdXJzb3IsIHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBhY3RpdmVDb29yZGluYXRlOiBhY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjdGl2ZVBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgICAgICAgY2hhcnROYW1lOiBjaGFydE5hbWUsXG4gICAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgICBpc0FjdGl2ZTogaXNBY3RpdmUsXG4gICAgICAgICAgbGF5b3V0OiBsYXlvdXQsXG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgdG9vbHRpcEF4aXNCYW5kU2l6ZTogdG9vbHRpcEF4aXNCYW5kU2l6ZSxcbiAgICAgICAgICB0b29sdGlwRXZlbnRUeXBlOiB0b29sdGlwRXZlbnRUeXBlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyUG9sYXJBeGlzXCIsIGZ1bmN0aW9uIChlbGVtZW50LCBkaXNwbGF5TmFtZSwgaW5kZXgpIHtcbiAgICAgICAgdmFyIGF4aXNUeXBlID0gZ2V0KGVsZW1lbnQsICd0eXBlLmF4aXNUeXBlJyk7XG4gICAgICAgIHZhciBheGlzTWFwID0gZ2V0KF90aGlzLnN0YXRlLCBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJNYXBcIikpO1xuICAgICAgICB2YXIgYXhpc09wdGlvbiA9IGF4aXNNYXAgJiYgYXhpc01hcFtlbGVtZW50LnByb3BzW1wiXCIuY29uY2F0KGF4aXNUeXBlLCBcIklkXCIpXV07XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYXhpc09wdGlvbiksIHt9LCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbHN4KGF4aXNUeXBlLCBheGlzT3B0aW9uLmNsYXNzTmFtZSksXG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCBcIlwiLmNvbmNhdChkaXNwbGF5TmFtZSwgXCItXCIpLmNvbmNhdChpbmRleCksXG4gICAgICAgICAgdGlja3M6IGdldFRpY2tzT2ZBeGlzKGF4aXNPcHRpb24sIHRydWUpXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlbmRlclBvbGFyR3JpZFwiLCBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMgPSBlbGVtZW50LnByb3BzLFxuICAgICAgICAgIHJhZGlhbExpbmVzID0gX2VsZW1lbnQkcHJvcHMucmFkaWFsTGluZXMsXG4gICAgICAgICAgcG9sYXJBbmdsZXMgPSBfZWxlbWVudCRwcm9wcy5wb2xhckFuZ2xlcyxcbiAgICAgICAgICBwb2xhclJhZGl1cyA9IF9lbGVtZW50JHByb3BzLnBvbGFyUmFkaXVzO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU0ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgcmFkaXVzQXhpc01hcCA9IF90aGlzJHN0YXRlNC5yYWRpdXNBeGlzTWFwLFxuICAgICAgICAgIGFuZ2xlQXhpc01hcCA9IF90aGlzJHN0YXRlNC5hbmdsZUF4aXNNYXA7XG4gICAgICAgIHZhciByYWRpdXNBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KHJhZGl1c0F4aXNNYXApO1xuICAgICAgICB2YXIgYW5nbGVBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KGFuZ2xlQXhpc01hcCk7XG4gICAgICAgIHZhciBjeCA9IGFuZ2xlQXhpcy5jeCxcbiAgICAgICAgICBjeSA9IGFuZ2xlQXhpcy5jeSxcbiAgICAgICAgICBpbm5lclJhZGl1cyA9IGFuZ2xlQXhpcy5pbm5lclJhZGl1cyxcbiAgICAgICAgICBvdXRlclJhZGl1cyA9IGFuZ2xlQXhpcy5vdXRlclJhZGl1cztcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwge1xuICAgICAgICAgIHBvbGFyQW5nbGVzOiBBcnJheS5pc0FycmF5KHBvbGFyQW5nbGVzKSA/IHBvbGFyQW5nbGVzIDogZ2V0VGlja3NPZkF4aXMoYW5nbGVBeGlzLCB0cnVlKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuY29vcmRpbmF0ZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwb2xhclJhZGl1czogQXJyYXkuaXNBcnJheShwb2xhclJhZGl1cykgPyBwb2xhclJhZGl1cyA6IGdldFRpY2tzT2ZBeGlzKHJhZGl1c0F4aXMsIHRydWUpLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGN4OiBjeCxcbiAgICAgICAgICBjeTogY3ksXG4gICAgICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgICAgICBrZXk6IGVsZW1lbnQua2V5IHx8ICdwb2xhci1ncmlkJyxcbiAgICAgICAgICByYWRpYWxMaW5lczogcmFkaWFsTGluZXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogRHJhdyBsZWdlbmRcbiAgICAgICAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gICAgICAgICAgICBUaGUgaW5zdGFuY2Ugb2YgTGVnZW5kXG4gICAgICAgKi9cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZW5kZXJMZWdlbmRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfdGhpcy5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcztcbiAgICAgICAgdmFyIF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMyLmNoaWxkcmVuLFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMyLndpZHRoLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzMi5oZWlnaHQ7XG4gICAgICAgIHZhciBtYXJnaW4gPSBfdGhpcy5wcm9wcy5tYXJnaW4gfHwge307XG4gICAgICAgIHZhciBsZWdlbmRXaWR0aCA9IHdpZHRoIC0gKG1hcmdpbi5sZWZ0IHx8IDApIC0gKG1hcmdpbi5yaWdodCB8fCAwKTtcbiAgICAgICAgdmFyIHByb3BzID0gZ2V0TGVnZW5kUHJvcHMoe1xuICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgICAgICBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtczogZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMsXG4gICAgICAgICAgbGVnZW5kV2lkdGg6IGxlZ2VuZFdpZHRoLFxuICAgICAgICAgIGxlZ2VuZENvbnRlbnQ6IGxlZ2VuZENvbnRlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcHJvcHMpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaXRlbSA9IHByb3BzLml0ZW0sXG4gICAgICAgICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoaXRlbSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvdGhlclByb3BzKSwge30sIHtcbiAgICAgICAgICBjaGFydFdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBjaGFydEhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIG1hcmdpbjogbWFyZ2luLFxuICAgICAgICAgIG9uQkJveFVwZGF0ZTogX3RoaXMuaGFuZGxlTGVnZW5kQkJveFVwZGF0ZVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICAgIC8qKlxuICAgICAgICogRHJhdyBUb29sdGlwXG4gICAgICAgKiBAcmV0dXJuIHtSZWFjdEVsZW1lbnR9ICBUaGUgaW5zdGFuY2Ugb2YgVG9vbHRpcFxuICAgICAgICovXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyVG9vbHRpcFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdG9vbHRpcEl0ZW0kcHJvcHMkYWM7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMy5jaGlsZHJlbixcbiAgICAgICAgICBhY2Nlc3NpYmlsaXR5TGF5ZXIgPSBfdGhpcyRwcm9wczMuYWNjZXNzaWJpbGl0eUxheWVyO1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICBpZiAoIXRvb2x0aXBJdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF90aGlzJHN0YXRlNSA9IF90aGlzLnN0YXRlLFxuICAgICAgICAgIGlzVG9vbHRpcEFjdGl2ZSA9IF90aGlzJHN0YXRlNS5pc1Rvb2x0aXBBY3RpdmUsXG4gICAgICAgICAgYWN0aXZlQ29vcmRpbmF0ZSA9IF90aGlzJHN0YXRlNS5hY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjdGl2ZVBheWxvYWQgPSBfdGhpcyRzdGF0ZTUuYWN0aXZlUGF5bG9hZCxcbiAgICAgICAgICBhY3RpdmVMYWJlbCA9IF90aGlzJHN0YXRlNS5hY3RpdmVMYWJlbCxcbiAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRzdGF0ZTUub2Zmc2V0O1xuXG4gICAgICAgIC8vIFRoZSB1c2VyIGNhbiBzZXQgaXNBY3RpdmUgb24gdGhlIFRvb2x0aXAsXG4gICAgICAgIC8vIGFuZCB3ZSByZXNwZWN0IHRoZSB1c2VyIHRvIGVuYWJsZSBjdXN0b21pc2F0aW9uLlxuICAgICAgICAvLyBUaGUgVG9vbHRpcCBpcyBhY3RpdmUgaWYgdGhlIHVzZXIgaGFzIHNldCBpc0FjdGl2ZSwgb3IgaWYgdGhlIHRvb2x0aXAgaXMgYWN0aXZlIGR1ZSB0byBhIG1vdXNlIGV2ZW50LlxuICAgICAgICB2YXIgaXNBY3RpdmUgPSAoX3Rvb2x0aXBJdGVtJHByb3BzJGFjID0gdG9vbHRpcEl0ZW0ucHJvcHMuYWN0aXZlKSAhPT0gbnVsbCAmJiBfdG9vbHRpcEl0ZW0kcHJvcHMkYWMgIT09IHZvaWQgMCA/IF90b29sdGlwSXRlbSRwcm9wcyRhYyA6IGlzVG9vbHRpcEFjdGl2ZTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQodG9vbHRpcEl0ZW0sIHtcbiAgICAgICAgICB2aWV3Qm94OiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9mZnNldCksIHt9LCB7XG4gICAgICAgICAgICB4OiBvZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHk6IG9mZnNldC50b3BcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBhY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICAgIGxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICBwYXlsb2FkOiBpc0FjdGl2ZSA/IGFjdGl2ZVBheWxvYWQgOiBbXSxcbiAgICAgICAgICBjb29yZGluYXRlOiBhY3RpdmVDb29yZGluYXRlLFxuICAgICAgICAgIGFjY2Vzc2liaWxpdHlMYXllcjogYWNjZXNzaWJpbGl0eUxheWVyXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyQnJ1c2hcIiwgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG1hcmdpbiA9IF90aGlzJHByb3BzNC5tYXJnaW4sXG4gICAgICAgICAgZGF0YSA9IF90aGlzJHByb3BzNC5kYXRhO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGU2ID0gX3RoaXMuc3RhdGUsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGU2Lm9mZnNldCxcbiAgICAgICAgICBkYXRhU3RhcnRJbmRleCA9IF90aGlzJHN0YXRlNi5kYXRhU3RhcnRJbmRleCxcbiAgICAgICAgICBkYXRhRW5kSW5kZXggPSBfdGhpcyRzdGF0ZTYuZGF0YUVuZEluZGV4LFxuICAgICAgICAgIHVwZGF0ZUlkID0gX3RoaXMkc3RhdGU2LnVwZGF0ZUlkO1xuXG4gICAgICAgIC8vIFRPRE86IHVwZGF0ZSBicnVzaCB3aGVuIGNoaWxkcmVuIHVwZGF0ZVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCB7XG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCAnX3JlY2hhcnRzLWJydXNoJyxcbiAgICAgICAgICBvbkNoYW5nZTogY29tYmluZUV2ZW50SGFuZGxlcnMoX3RoaXMuaGFuZGxlQnJ1c2hDaGFuZ2UsIGVsZW1lbnQucHJvcHMub25DaGFuZ2UpLFxuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgeDogaXNOdW1iZXIoZWxlbWVudC5wcm9wcy54KSA/IGVsZW1lbnQucHJvcHMueCA6IG9mZnNldC5sZWZ0LFxuICAgICAgICAgIHk6IGlzTnVtYmVyKGVsZW1lbnQucHJvcHMueSkgPyBlbGVtZW50LnByb3BzLnkgOiBvZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodCArIG9mZnNldC5icnVzaEJvdHRvbSAtIChtYXJnaW4uYm90dG9tIHx8IDApLFxuICAgICAgICAgIHdpZHRoOiBpc051bWJlcihlbGVtZW50LnByb3BzLndpZHRoKSA/IGVsZW1lbnQucHJvcHMud2lkdGggOiBvZmZzZXQud2lkdGgsXG4gICAgICAgICAgc3RhcnRJbmRleDogZGF0YVN0YXJ0SW5kZXgsXG4gICAgICAgICAgZW5kSW5kZXg6IGRhdGFFbmRJbmRleCxcbiAgICAgICAgICB1cGRhdGVJZDogXCJicnVzaC1cIi5jb25jYXQodXBkYXRlSWQpXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyUmVmZXJlbmNlRWxlbWVudFwiLCBmdW5jdGlvbiAoZWxlbWVudCwgZGlzcGxheU5hbWUsIGluZGV4KSB7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYXNzZXJ0VGhpc0luaXRpYWxpemUgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSxcbiAgICAgICAgICBjbGlwUGF0aElkID0gX2Fzc2VydFRoaXNJbml0aWFsaXplLmNsaXBQYXRoSWQ7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTcgPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4QXhpc01hcCA9IF90aGlzJHN0YXRlNy54QXhpc01hcCxcbiAgICAgICAgICB5QXhpc01hcCA9IF90aGlzJHN0YXRlNy55QXhpc01hcCxcbiAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRzdGF0ZTcub2Zmc2V0O1xuICAgICAgICB2YXIgX2VsZW1lbnQkcHJvcHMyID0gZWxlbWVudC5wcm9wcyxcbiAgICAgICAgICB4QXhpc0lkID0gX2VsZW1lbnQkcHJvcHMyLnhBeGlzSWQsXG4gICAgICAgICAgeUF4aXNJZCA9IF9lbGVtZW50JHByb3BzMi55QXhpc0lkO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LCB7XG4gICAgICAgICAga2V5OiBlbGVtZW50LmtleSB8fCBcIlwiLmNvbmNhdChkaXNwbGF5TmFtZSwgXCItXCIpLmNvbmNhdChpbmRleCksXG4gICAgICAgICAgeEF4aXM6IHhBeGlzTWFwW3hBeGlzSWRdLFxuICAgICAgICAgIHlBeGlzOiB5QXhpc01hcFt5QXhpc0lkXSxcbiAgICAgICAgICB2aWV3Qm94OiB7XG4gICAgICAgICAgICB4OiBvZmZzZXQubGVmdCxcbiAgICAgICAgICAgIHk6IG9mZnNldC50b3AsXG4gICAgICAgICAgICB3aWR0aDogb2Zmc2V0LndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXQuaGVpZ2h0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGlwUGF0aElkOiBjbGlwUGF0aElkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyQWN0aXZlUG9pbnRzXCIsIGZ1bmN0aW9uIChfcmVmMTApIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBfcmVmMTAuaXRlbSxcbiAgICAgICAgICBhY3RpdmVQb2ludCA9IF9yZWYxMC5hY3RpdmVQb2ludCxcbiAgICAgICAgICBiYXNlUG9pbnQgPSBfcmVmMTAuYmFzZVBvaW50LFxuICAgICAgICAgIGNoaWxkSW5kZXggPSBfcmVmMTAuY2hpbGRJbmRleCxcbiAgICAgICAgICBpc1JhbmdlID0gX3JlZjEwLmlzUmFuZ2U7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgdmFyIGtleSA9IGl0ZW0ucHJvcHMua2V5O1xuICAgICAgICB2YXIgX2l0ZW0kaXRlbSRwcm9wcyA9IGl0ZW0uaXRlbS5wcm9wcyxcbiAgICAgICAgICBhY3RpdmVEb3QgPSBfaXRlbSRpdGVtJHByb3BzLmFjdGl2ZURvdCxcbiAgICAgICAgICBkYXRhS2V5ID0gX2l0ZW0kaXRlbSRwcm9wcy5kYXRhS2V5O1xuICAgICAgICB2YXIgZG90UHJvcHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIGluZGV4OiBjaGlsZEluZGV4LFxuICAgICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgICAgY3g6IGFjdGl2ZVBvaW50LngsXG4gICAgICAgICAgY3k6IGFjdGl2ZVBvaW50LnksXG4gICAgICAgICAgcjogNCxcbiAgICAgICAgICBmaWxsOiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0uaXRlbSksXG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgc3Ryb2tlOiAnI2ZmZicsXG4gICAgICAgICAgcGF5bG9hZDogYWN0aXZlUG9pbnQucGF5bG9hZCxcbiAgICAgICAgICB2YWx1ZTogYWN0aXZlUG9pbnQudmFsdWUsXG4gICAgICAgICAga2V5OiBcIlwiLmNvbmNhdChrZXksIFwiLWFjdGl2ZVBvaW50LVwiKS5jb25jYXQoY2hpbGRJbmRleClcbiAgICAgICAgfSwgZmlsdGVyUHJvcHMoYWN0aXZlRG90LCBmYWxzZSkpLCBhZGFwdEV2ZW50SGFuZGxlcnMoYWN0aXZlRG90KSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKENhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLnJlbmRlckFjdGl2ZURvdChhY3RpdmVEb3QsIGRvdFByb3BzKSk7XG4gICAgICAgIGlmIChiYXNlUG9pbnQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChDYXRlZ29yaWNhbENoYXJ0V3JhcHBlci5yZW5kZXJBY3RpdmVEb3QoYWN0aXZlRG90LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRvdFByb3BzKSwge30sIHtcbiAgICAgICAgICAgIGN4OiBiYXNlUG9pbnQueCxcbiAgICAgICAgICAgIGN5OiBiYXNlUG9pbnQueSxcbiAgICAgICAgICAgIGtleTogXCJcIi5jb25jYXQoa2V5LCBcIi1iYXNlUG9pbnQtXCIpLmNvbmNhdChjaGlsZEluZGV4KVxuICAgICAgICAgIH0pKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNSYW5nZSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZW5kZXJHcmFwaGljQ2hpbGRcIiwgZnVuY3Rpb24gKGVsZW1lbnQsIGRpc3BsYXlOYW1lLCBpbmRleCkge1xuICAgICAgICB2YXIgaXRlbSA9IF90aGlzLmZpbHRlckZvcm1hdEl0ZW0oZWxlbWVudCwgZGlzcGxheU5hbWUsIGluZGV4KTtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvb2x0aXBFdmVudFR5cGUgPSBfdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTggPSBfdGhpcy5zdGF0ZSxcbiAgICAgICAgICBpc1Rvb2x0aXBBY3RpdmUgPSBfdGhpcyRzdGF0ZTguaXNUb29sdGlwQWN0aXZlLFxuICAgICAgICAgIHRvb2x0aXBBeGlzID0gX3RoaXMkc3RhdGU4LnRvb2x0aXBBeGlzLFxuICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJbmRleCA9IF90aGlzJHN0YXRlOC5hY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgICAgICAgYWN0aXZlTGFiZWwgPSBfdGhpcyRzdGF0ZTguYWN0aXZlTGFiZWw7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB2YXIgdG9vbHRpcEl0ZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICB2YXIgX2l0ZW0kcHJvcHMyID0gaXRlbS5wcm9wcyxcbiAgICAgICAgICBwb2ludHMgPSBfaXRlbSRwcm9wczIucG9pbnRzLFxuICAgICAgICAgIGlzUmFuZ2UgPSBfaXRlbSRwcm9wczIuaXNSYW5nZSxcbiAgICAgICAgICBiYXNlTGluZSA9IF9pdGVtJHByb3BzMi5iYXNlTGluZTtcbiAgICAgICAgdmFyIF9pdGVtJGl0ZW0kcHJvcHMyID0gaXRlbS5pdGVtLnByb3BzLFxuICAgICAgICAgIGFjdGl2ZURvdCA9IF9pdGVtJGl0ZW0kcHJvcHMyLmFjdGl2ZURvdCxcbiAgICAgICAgICBoaWRlID0gX2l0ZW0kaXRlbSRwcm9wczIuaGlkZSxcbiAgICAgICAgICBhY3RpdmVCYXIgPSBfaXRlbSRpdGVtJHByb3BzMi5hY3RpdmVCYXIsXG4gICAgICAgICAgYWN0aXZlU2hhcGUgPSBfaXRlbSRpdGVtJHByb3BzMi5hY3RpdmVTaGFwZTtcbiAgICAgICAgdmFyIGhhc0FjdGl2ZSA9IEJvb2xlYW4oIWhpZGUgJiYgaXNUb29sdGlwQWN0aXZlICYmIHRvb2x0aXBJdGVtICYmIChhY3RpdmVEb3QgfHwgYWN0aXZlQmFyIHx8IGFjdGl2ZVNoYXBlKSk7XG4gICAgICAgIHZhciBpdGVtRXZlbnRzID0ge307XG4gICAgICAgIGlmICh0b29sdGlwRXZlbnRUeXBlICE9PSAnYXhpcycgJiYgdG9vbHRpcEl0ZW0gJiYgdG9vbHRpcEl0ZW0ucHJvcHMudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgIGl0ZW1FdmVudHMgPSB7XG4gICAgICAgICAgICBvbkNsaWNrOiBjb21iaW5lRXZlbnRIYW5kbGVycyhfdGhpcy5oYW5kbGVJdGVtTW91c2VFbnRlciwgZWxlbWVudC5wcm9wcy5vbkNsaWNrKVxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAodG9vbHRpcEV2ZW50VHlwZSAhPT0gJ2F4aXMnKSB7XG4gICAgICAgICAgaXRlbUV2ZW50cyA9IHtcbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZTogY29tYmluZUV2ZW50SGFuZGxlcnMoX3RoaXMuaGFuZGxlSXRlbU1vdXNlTGVhdmUsIGVsZW1lbnQucHJvcHMub25Nb3VzZUxlYXZlKSxcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcjogY29tYmluZUV2ZW50SGFuZGxlcnMoX3RoaXMuaGFuZGxlSXRlbU1vdXNlRW50ZXIsIGVsZW1lbnQucHJvcHMub25Nb3VzZUVudGVyKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGdyYXBoaWNhbEl0ZW0gPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaXRlbS5wcm9wcyksIGl0ZW1FdmVudHMpKTtcbiAgICAgICAgZnVuY3Rpb24gZmluZFdpdGhQYXlsb2FkKGVudHJ5KSB7XG4gICAgICAgICAgLy8gVE9ETyBuZWVkcyB0byB2ZXJpZnkgZGF0YUtleSBpcyBGdW5jdGlvblxuICAgICAgICAgIHJldHVybiB0eXBlb2YgdG9vbHRpcEF4aXMuZGF0YUtleSA9PT0gJ2Z1bmN0aW9uJyA/IHRvb2x0aXBBeGlzLmRhdGFLZXkoZW50cnkucGF5bG9hZCkgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNBY3RpdmUpIHtcbiAgICAgICAgICBpZiAoYWN0aXZlVG9vbHRpcEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHZhciBhY3RpdmVQb2ludCwgYmFzZVBvaW50O1xuICAgICAgICAgICAgaWYgKHRvb2x0aXBBeGlzLmRhdGFLZXkgJiYgIXRvb2x0aXBBeGlzLmFsbG93RHVwbGljYXRlZENhdGVnb3J5KSB7XG4gICAgICAgICAgICAgIC8vIG51bWJlciB0cmFuc2Zvcm0gdG8gc3RyaW5nXG4gICAgICAgICAgICAgIHZhciBzcGVjaWZpZWRLZXkgPSB0eXBlb2YgdG9vbHRpcEF4aXMuZGF0YUtleSA9PT0gJ2Z1bmN0aW9uJyA/IGZpbmRXaXRoUGF5bG9hZCA6ICdwYXlsb2FkLicuY29uY2F0KHRvb2x0aXBBeGlzLmRhdGFLZXkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgIGFjdGl2ZVBvaW50ID0gZmluZEVudHJ5SW5BcnJheShwb2ludHMsIHNwZWNpZmllZEtleSwgYWN0aXZlTGFiZWwpO1xuICAgICAgICAgICAgICBiYXNlUG9pbnQgPSBpc1JhbmdlICYmIGJhc2VMaW5lICYmIGZpbmRFbnRyeUluQXJyYXkoYmFzZUxpbmUsIHNwZWNpZmllZEtleSwgYWN0aXZlTGFiZWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWN0aXZlUG9pbnQgPSBwb2ludHMgPT09IG51bGwgfHwgcG9pbnRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwb2ludHNbYWN0aXZlVG9vbHRpcEluZGV4XTtcbiAgICAgICAgICAgICAgYmFzZVBvaW50ID0gaXNSYW5nZSAmJiBiYXNlTGluZSAmJiBiYXNlTGluZVthY3RpdmVUb29sdGlwSW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFjdGl2ZVNoYXBlIHx8IGFjdGl2ZUJhcikge1xuICAgICAgICAgICAgICB2YXIgYWN0aXZlSW5kZXggPSBlbGVtZW50LnByb3BzLmFjdGl2ZUluZGV4ICE9PSB1bmRlZmluZWQgPyBlbGVtZW50LnByb3BzLmFjdGl2ZUluZGV4IDogYWN0aXZlVG9vbHRpcEluZGV4O1xuICAgICAgICAgICAgICByZXR1cm4gWy8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoZWxlbWVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0ucHJvcHMpLCBpdGVtRXZlbnRzKSwge30sIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleDogYWN0aXZlSW5kZXhcbiAgICAgICAgICAgICAgfSkpLCBudWxsLCBudWxsXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNOaWwoYWN0aXZlUG9pbnQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbZ3JhcGhpY2FsSXRlbV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShfdGhpcy5yZW5kZXJBY3RpdmVQb2ludHMoe1xuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlUG9pbnQ6IGFjdGl2ZVBvaW50LFxuICAgICAgICAgICAgICAgIGJhc2VQb2ludDogYmFzZVBvaW50LFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXg6IGFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICAgICAgICAgICAgICBpc1JhbmdlOiBpc1JhbmdlXG4gICAgICAgICAgICAgIH0pKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyRnZXRJdGVtQnlYWTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgaGl0IHRoaXMgYmxvY2sgaWYgY29uc3VtZXIgdXNlcyBhIFRvb2x0aXAgd2l0aG91dCBYQXhpcyBhbmQvb3IgWUF4aXMuXG4gICAgICAgICAgICAgKiBJbiB3aGljaCBjYXNlLCB0aGlzLnN0YXRlLmFjdGl2ZVRvb2x0aXBJbmRleCBuZXZlciBnZXRzIHNldFxuICAgICAgICAgICAgICogYmVjYXVzZSB0aGUgbW91c2UgZXZlbnRzIHRoYXQgdHJpZ2dlciB0aGF0IHZhbHVlIGdldHRpbmcgc2V0IG5ldmVyIGdldCB0cmlnZ2VkIHdpdGhvdXQgdGhlIGF4aXMgY29tcG9uZW50cy5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBBbiBleGFtcGxlIHVzYWdlIGNhc2UgaXMgYSBGdW5uZWxDaGFydFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgX3JlZjExID0gKF90aGlzJGdldEl0ZW1CeVhZID0gX3RoaXMuZ2V0SXRlbUJ5WFkoX3RoaXMuc3RhdGUuYWN0aXZlQ29vcmRpbmF0ZSkpICE9PSBudWxsICYmIF90aGlzJGdldEl0ZW1CeVhZICE9PSB2b2lkIDAgPyBfdGhpcyRnZXRJdGVtQnlYWSA6IHtcbiAgICAgICAgICAgICAgICBncmFwaGljYWxJdGVtOiBncmFwaGljYWxJdGVtXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF9yZWYxMSRncmFwaGljYWxJdGVtID0gX3JlZjExLmdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgIF9yZWYxMSRncmFwaGljYWxJdGVtJCA9IF9yZWYxMSRncmFwaGljYWxJdGVtLml0ZW0sXG4gICAgICAgICAgICAgIHh5SXRlbSA9IF9yZWYxMSRncmFwaGljYWxJdGVtJCA9PT0gdm9pZCAwID8gZWxlbWVudCA6IF9yZWYxMSRncmFwaGljYWxJdGVtJCxcbiAgICAgICAgICAgICAgY2hpbGRJbmRleCA9IF9yZWYxMSRncmFwaGljYWxJdGVtLmNoaWxkSW5kZXg7XG4gICAgICAgICAgICB2YXIgZWxlbWVudFByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGl0ZW0ucHJvcHMpLCBpdGVtRXZlbnRzKSwge30sIHtcbiAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IGNoaWxkSW5kZXhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFsvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KHh5SXRlbSwgZWxlbWVudFByb3BzKSwgbnVsbCwgbnVsbF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc1JhbmdlKSB7XG4gICAgICAgICAgcmV0dXJuIFtncmFwaGljYWxJdGVtLCBudWxsLCBudWxsXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2dyYXBoaWNhbEl0ZW0sIG51bGxdO1xuICAgICAgfSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyQ3VzdG9taXplZFwiLCBmdW5jdGlvbiAoZWxlbWVudCwgZGlzcGxheU5hbWUsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAga2V5OiBcInJlY2hhcnRzLWN1c3RvbWl6ZWQtXCIuY29uY2F0KGluZGV4KVxuICAgICAgICB9LCBfdGhpcy5wcm9wcyksIF90aGlzLnN0YXRlKSk7XG4gICAgICB9KTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZW5kZXJNYXBcIiwge1xuICAgICAgICBDYXJ0ZXNpYW5HcmlkOiB7XG4gICAgICAgICAgaGFuZGxlcjogcmVuZGVyQXNJcyxcbiAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFJlZmVyZW5jZUFyZWE6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJSZWZlcmVuY2VFbGVtZW50XG4gICAgICAgIH0sXG4gICAgICAgIFJlZmVyZW5jZUxpbmU6IHtcbiAgICAgICAgICBoYW5kbGVyOiByZW5kZXJBc0lzXG4gICAgICAgIH0sXG4gICAgICAgIFJlZmVyZW5jZURvdDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlclJlZmVyZW5jZUVsZW1lbnRcbiAgICAgICAgfSxcbiAgICAgICAgWEF4aXM6IHtcbiAgICAgICAgICBoYW5kbGVyOiByZW5kZXJBc0lzXG4gICAgICAgIH0sXG4gICAgICAgIFlBeGlzOiB7XG4gICAgICAgICAgaGFuZGxlcjogcmVuZGVyQXNJc1xuICAgICAgICB9LFxuICAgICAgICBCcnVzaDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckJydXNoLFxuICAgICAgICAgIG9uY2U6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgQmFyOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIExpbmU6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgQXJlYToge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBSYWRhcjoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBSYWRpYWxCYXI6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgU2NhdHRlcjoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckdyYXBoaWNDaGlsZFxuICAgICAgICB9LFxuICAgICAgICBQaWU6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJHcmFwaGljQ2hpbGRcbiAgICAgICAgfSxcbiAgICAgICAgRnVubmVsOiB7XG4gICAgICAgICAgaGFuZGxlcjogX3RoaXMucmVuZGVyR3JhcGhpY0NoaWxkXG4gICAgICAgIH0sXG4gICAgICAgIFRvb2x0aXA6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJDdXJzb3IsXG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBQb2xhckdyaWQ6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJQb2xhckdyaWQsXG4gICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBQb2xhckFuZ2xlQXhpczoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlclBvbGFyQXhpc1xuICAgICAgICB9LFxuICAgICAgICBQb2xhclJhZGl1c0F4aXM6IHtcbiAgICAgICAgICBoYW5kbGVyOiBfdGhpcy5yZW5kZXJQb2xhckF4aXNcbiAgICAgICAgfSxcbiAgICAgICAgQ3VzdG9taXplZDoge1xuICAgICAgICAgIGhhbmRsZXI6IF90aGlzLnJlbmRlckN1c3RvbWl6ZWRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBfdGhpcy5jbGlwUGF0aElkID0gXCJcIi5jb25jYXQoKF9wcm9wcyRpZCA9IF9wcm9wcy5pZCkgIT09IG51bGwgJiYgX3Byb3BzJGlkICE9PSB2b2lkIDAgPyBfcHJvcHMkaWQgOiB1bmlxdWVJZCgncmVjaGFydHMnKSwgXCItY2xpcFwiKTtcblxuICAgICAgLy8gdHJpZ2dlciA2MGZwc1xuICAgICAgX3RoaXMudGhyb3R0bGVUcmlnZ2VyZWRBZnRlck1vdXNlTW92ZSA9IHRocm90dGxlKF90aGlzLnRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLCAoX3Byb3BzJHRocm90dGxlRGVsYXkgPSBfcHJvcHMudGhyb3R0bGVEZWxheSkgIT09IG51bGwgJiYgX3Byb3BzJHRocm90dGxlRGVsYXkgIT09IHZvaWQgMCA/IF9wcm9wcyR0aHJvdHRsZURlbGF5IDogMTAwMCAvIDYwKTtcbiAgICAgIF90aGlzLnN0YXRlID0ge307XG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIF9jcmVhdGVDbGFzcyhDYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgW3tcbiAgICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkbWFyZ2luJGxlLCBfdGhpcyRwcm9wcyRtYXJnaW4kdG87XG4gICAgICAgIHRoaXMuYWRkTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXREZXRhaWxzKHtcbiAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgIG9mZnNldDoge1xuICAgICAgICAgICAgbGVmdDogKF90aGlzJHByb3BzJG1hcmdpbiRsZSA9IHRoaXMucHJvcHMubWFyZ2luLmxlZnQpICE9PSBudWxsICYmIF90aGlzJHByb3BzJG1hcmdpbiRsZSAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkbWFyZ2luJGxlIDogMCxcbiAgICAgICAgICAgIHRvcDogKF90aGlzJHByb3BzJG1hcmdpbiR0byA9IHRoaXMucHJvcHMubWFyZ2luLnRvcCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkbWFyZ2luJHRvICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRtYXJnaW4kdG8gOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb29yZGluYXRlTGlzdDogdGhpcy5zdGF0ZS50b29sdGlwVGlja3MsXG4gICAgICAgICAgbW91c2VIYW5kbGVyQ2FsbGJhY2s6IHRoaXMudHJpZ2dlcmVkQWZ0ZXJNb3VzZU1vdmUsXG4gICAgICAgICAgbGF5b3V0OiB0aGlzLnByb3BzLmxheW91dFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXNwbGF5RGVmYXVsdFRvb2x0aXAoKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZGlzcGxheURlZmF1bHRUb29sdGlwXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZGlzcGxheURlZmF1bHRUb29sdGlwKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNS5jaGlsZHJlbixcbiAgICAgICAgICBkYXRhID0gX3RoaXMkcHJvcHM1LmRhdGEsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM1LmhlaWdodCxcbiAgICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczUubGF5b3V0O1xuICAgICAgICB2YXIgdG9vbHRpcEVsZW0gPSBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICAvLyBJZiB0aGUgY2hhcnQgZG9lc24ndCBpbmNsdWRlIGEgPFRvb2x0aXAgLz4gZWxlbWVudCwgdGhlcmUncyBubyB0b29sdGlwIHRvIGRpc3BsYXlcbiAgICAgICAgaWYgKCF0b29sdGlwRWxlbSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVmYXVsdEluZGV4ID0gdG9vbHRpcEVsZW0ucHJvcHMuZGVmYXVsdEluZGV4O1xuXG4gICAgICAgIC8vIFByb3RlY3QgYWdhaW5zdCBydW50aW1lIGVycm9yc1xuICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHRJbmRleCAhPT0gJ251bWJlcicgfHwgZGVmYXVsdEluZGV4IDwgMCB8fCBkZWZhdWx0SW5kZXggPiB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFjdGl2ZUxhYmVsID0gdGhpcy5zdGF0ZS50b29sdGlwVGlja3NbZGVmYXVsdEluZGV4XSAmJiB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tkZWZhdWx0SW5kZXhdLnZhbHVlO1xuICAgICAgICB2YXIgYWN0aXZlUGF5bG9hZCA9IGdldFRvb2x0aXBDb250ZW50KHRoaXMuc3RhdGUsIGRhdGEsIGRlZmF1bHRJbmRleCwgYWN0aXZlTGFiZWwpO1xuICAgICAgICB2YXIgaW5kZXBlbmRlbnRBeGlzQ29vcmQgPSB0aGlzLnN0YXRlLnRvb2x0aXBUaWNrc1tkZWZhdWx0SW5kZXhdLmNvb3JkaW5hdGU7XG4gICAgICAgIHZhciBkZXBlbmRlbnRBeGlzQ29vcmQgPSAodGhpcy5zdGF0ZS5vZmZzZXQudG9wICsgaGVpZ2h0KSAvIDI7XG4gICAgICAgIHZhciBpc0hvcml6b250YWwgPSBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICAgICAgdmFyIGFjdGl2ZUNvb3JkaW5hdGUgPSBpc0hvcml6b250YWwgPyB7XG4gICAgICAgICAgeDogaW5kZXBlbmRlbnRBeGlzQ29vcmQsXG4gICAgICAgICAgeTogZGVwZW5kZW50QXhpc0Nvb3JkXG4gICAgICAgIH0gOiB7XG4gICAgICAgICAgeTogaW5kZXBlbmRlbnRBeGlzQ29vcmQsXG4gICAgICAgICAgeDogZGVwZW5kZW50QXhpc0Nvb3JkXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gVW5saWtlIG90aGVyIGNoYXJ0IHR5cGVzLCBzY2F0dGVyIHBsb3QncyB0b29sdGlwIHBvc2l0aW9ucyByZWx5IG9uIGJvdGggWCBhbmQgWSBjb29yZGluYXRlcy4gT25seSB0aGUgc2NhdHRlciBwbG90XG4gICAgICAgIC8vIGVsZW1lbnQga25vd3MgaXRzIG93biBZIGNvb3JkaW5hdGVzLlxuICAgICAgICAvLyBJZiB0aGVyZSdzIGEgc2NhdHRlciBwbG90LCB3ZSdsbCB3YW50IHRvIGdyYWIgdGhhdCBlbGVtZW50IGZvciBhbiBpbnRlcnJvZ2F0aW9uLlxuICAgICAgICB2YXIgc2NhdHRlclBsb3RFbGVtZW50ID0gdGhpcy5zdGF0ZS5mb3JtYXR0ZWRHcmFwaGljYWxJdGVtcy5maW5kKGZ1bmN0aW9uIChfcmVmMTIpIHtcbiAgICAgICAgICB2YXIgaXRlbSA9IF9yZWYxMi5pdGVtO1xuICAgICAgICAgIHJldHVybiBpdGVtLnR5cGUubmFtZSA9PT0gJ1NjYXR0ZXInO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHNjYXR0ZXJQbG90RWxlbWVudCkge1xuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGFjdGl2ZUNvb3JkaW5hdGUpLCBzY2F0dGVyUGxvdEVsZW1lbnQucHJvcHMucG9pbnRzW2RlZmF1bHRJbmRleF0udG9vbHRpcFBvc2l0aW9uKTtcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkID0gc2NhdHRlclBsb3RFbGVtZW50LnByb3BzLnBvaW50c1tkZWZhdWx0SW5kZXhdLnRvb2x0aXBQYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSB7XG4gICAgICAgICAgYWN0aXZlVG9vbHRpcEluZGV4OiBkZWZhdWx0SW5kZXgsXG4gICAgICAgICAgaXNUb29sdGlwQWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZUxhYmVsOiBhY3RpdmVMYWJlbCxcbiAgICAgICAgICBhY3RpdmVQYXlsb2FkOiBhY3RpdmVQYXlsb2FkLFxuICAgICAgICAgIGFjdGl2ZUNvb3JkaW5hdGU6IGFjdGl2ZUNvb3JkaW5hdGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZShuZXh0U3RhdGUpO1xuICAgICAgICB0aGlzLnJlbmRlckN1cnNvcih0b29sdGlwRWxlbSk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYW55b25lIHdobyBrZXlib2FyZC1vbmx5IHVzZXJzIHdobyB0YWIgdG8gdGhlIGNoYXJ0IHdpbGwgc3RhcnQgdGhlaXJcbiAgICAgICAgLy8gY3Vyc29ycyBhdCBkZWZhdWx0SW5kZXhcbiAgICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXRJbmRleChkZWZhdWx0SW5kZXgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5hY2Nlc3NpYmlsaXR5TGF5ZXIpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS50b29sdGlwVGlja3MgIT09IHByZXZTdGF0ZS50b29sdGlwVGlja3MpIHtcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgICAgY29vcmRpbmF0ZUxpc3Q6IHRoaXMuc3RhdGUudG9vbHRpcFRpY2tzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMubGF5b3V0ICE9PSBwcmV2UHJvcHMubGF5b3V0KSB7XG4gICAgICAgICAgdGhpcy5hY2Nlc3NpYmlsaXR5TWFuYWdlci5zZXREZXRhaWxzKHtcbiAgICAgICAgICAgIGxheW91dDogdGhpcy5wcm9wcy5sYXlvdXRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5tYXJnaW4gIT09IHByZXZQcm9wcy5tYXJnaW4pIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiwgX3RoaXMkcHJvcHMkbWFyZ2luJHRvMjtcbiAgICAgICAgICB0aGlzLmFjY2Vzc2liaWxpdHlNYW5hZ2VyLnNldERldGFpbHMoe1xuICAgICAgICAgICAgb2Zmc2V0OiB7XG4gICAgICAgICAgICAgIGxlZnQ6IChfdGhpcyRwcm9wcyRtYXJnaW4kbGUyID0gdGhpcy5wcm9wcy5tYXJnaW4ubGVmdCkgIT09IG51bGwgJiYgX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiAhPT0gdm9pZCAwID8gX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiA6IDAsXG4gICAgICAgICAgICAgIHRvcDogKF90aGlzJHByb3BzJG1hcmdpbiR0bzIgPSB0aGlzLnByb3BzLm1hcmdpbi50b3ApICE9PSBudWxsICYmIF90aGlzJHByb3BzJG1hcmdpbiR0bzIgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJG1hcmdpbiR0bzIgOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb21ldGhpbmcgaGFzIHRvIGJlIHJldHVybmVkIGZvciBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIFRvb2x0aXAgdXBkYXRlZC4gSWYgc28sIHJlLWNoZWNrIGRlZmF1bHQgdG9vbHRpcCBwb3NpdGlvblxuICAgICAgICBpZiAoIWlzQ2hpbGRyZW5FcXVhbChbZmluZENoaWxkQnlUeXBlKHByZXZQcm9wcy5jaGlsZHJlbiwgVG9vbHRpcCldLCBbZmluZENoaWxkQnlUeXBlKHRoaXMucHJvcHMuY2hpbGRyZW4sIFRvb2x0aXApXSkpIHtcbiAgICAgICAgICB0aGlzLmRpc3BsYXlEZWZhdWx0VG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy50aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlLmNhbmNlbCgpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRUb29sdGlwRXZlbnRUeXBlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9vbHRpcEV2ZW50VHlwZSgpIHtcbiAgICAgICAgdmFyIHRvb2x0aXBJdGVtID0gZmluZENoaWxkQnlUeXBlKHRoaXMucHJvcHMuY2hpbGRyZW4sIFRvb2x0aXApO1xuICAgICAgICBpZiAodG9vbHRpcEl0ZW0gJiYgdHlwZW9mIHRvb2x0aXBJdGVtLnByb3BzLnNoYXJlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgdmFyIGV2ZW50VHlwZSA9IHRvb2x0aXBJdGVtLnByb3BzLnNoYXJlZCA/ICdheGlzJyA6ICdpdGVtJztcbiAgICAgICAgICByZXR1cm4gdmFsaWRhdGVUb29sdGlwRXZlbnRUeXBlcy5pbmRleE9mKGV2ZW50VHlwZSkgPj0gMCA/IGV2ZW50VHlwZSA6IGRlZmF1bHRUb29sdGlwRXZlbnRUeXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBHZXQgdGhlIGluZm9ybWF0aW9uIG9mIG1vdXNlIGluIGNoYXJ0LCByZXR1cm4gbnVsbCB3aGVuIHRoZSBtb3VzZSBpcyBub3QgaW4gdGhlIGNoYXJ0XG4gICAgICAgKiBAcGFyYW0gIHtNb3VzZVBvaW50ZXJ9IGV2ZW50ICAgIFRoZSBldmVudCBvYmplY3RcbiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gICAgICAgICAgTW91c2UgZGF0YVxuICAgICAgICovXG4gICAgfSwge1xuICAgICAga2V5OiBcImdldE1vdXNlSW5mb1wiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldE1vdXNlSW5mbyhldmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgdmFyIGJvdW5kaW5nUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHZhciBjb250YWluZXJPZmZzZXQgPSBnZXRPZmZzZXQoYm91bmRpbmdSZWN0KTtcbiAgICAgICAgdmFyIGUgPSB7XG4gICAgICAgICAgY2hhcnRYOiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VYIC0gY29udGFpbmVyT2Zmc2V0LmxlZnQpLFxuICAgICAgICAgIGNoYXJ0WTogTWF0aC5yb3VuZChldmVudC5wYWdlWSAtIGNvbnRhaW5lck9mZnNldC50b3ApXG4gICAgICAgIH07XG4gICAgICAgIHZhciBzY2FsZSA9IGJvdW5kaW5nUmVjdC53aWR0aCAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgICAgICAgdmFyIHJhbmdlT2JqID0gdGhpcy5pblJhbmdlKGUuY2hhcnRYLCBlLmNoYXJ0WSwgc2NhbGUpO1xuICAgICAgICBpZiAoIXJhbmdlT2JqKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF90aGlzJHN0YXRlOSA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgeEF4aXNNYXAgPSBfdGhpcyRzdGF0ZTkueEF4aXNNYXAsXG4gICAgICAgICAgeUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTkueUF4aXNNYXA7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIGlmICh0b29sdGlwRXZlbnRUeXBlICE9PSAnYXhpcycgJiYgeEF4aXNNYXAgJiYgeUF4aXNNYXApIHtcbiAgICAgICAgICB2YXIgeFNjYWxlID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KHhBeGlzTWFwKS5zY2FsZTtcbiAgICAgICAgICB2YXIgeVNjYWxlID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KHlBeGlzTWFwKS5zY2FsZTtcbiAgICAgICAgICB2YXIgeFZhbHVlID0geFNjYWxlICYmIHhTY2FsZS5pbnZlcnQgPyB4U2NhbGUuaW52ZXJ0KGUuY2hhcnRYKSA6IG51bGw7XG4gICAgICAgICAgdmFyIHlWYWx1ZSA9IHlTY2FsZSAmJiB5U2NhbGUuaW52ZXJ0ID8geVNjYWxlLmludmVydChlLmNoYXJ0WSkgOiBudWxsO1xuICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGUpLCB7fSwge1xuICAgICAgICAgICAgeFZhbHVlOiB4VmFsdWUsXG4gICAgICAgICAgICB5VmFsdWU6IHlWYWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0b29sVGlwRGF0YSA9IGdldFRvb2x0aXBEYXRhKHRoaXMuc3RhdGUsIHRoaXMucHJvcHMuZGF0YSwgdGhpcy5wcm9wcy5sYXlvdXQsIHJhbmdlT2JqKTtcbiAgICAgICAgaWYgKHRvb2xUaXBEYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZSksIHRvb2xUaXBEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiaW5SYW5nZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGluUmFuZ2UoeCwgeSkge1xuICAgICAgICB2YXIgc2NhbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDE7XG4gICAgICAgIHZhciBsYXlvdXQgPSB0aGlzLnByb3BzLmxheW91dDtcbiAgICAgICAgdmFyIHNjYWxlZFggPSB4IC8gc2NhbGUsXG4gICAgICAgICAgc2NhbGVkWSA9IHkgLyBzY2FsZTtcbiAgICAgICAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnN0YXRlLm9mZnNldDtcbiAgICAgICAgICB2YXIgaXNJblJhbmdlID0gc2NhbGVkWCA+PSBvZmZzZXQubGVmdCAmJiBzY2FsZWRYIDw9IG9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoICYmIHNjYWxlZFkgPj0gb2Zmc2V0LnRvcCAmJiBzY2FsZWRZIDw9IG9mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0O1xuICAgICAgICAgIHJldHVybiBpc0luUmFuZ2UgPyB7XG4gICAgICAgICAgICB4OiBzY2FsZWRYLFxuICAgICAgICAgICAgeTogc2NhbGVkWVxuICAgICAgICAgIH0gOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTEwID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBhbmdsZUF4aXNNYXAgPSBfdGhpcyRzdGF0ZTEwLmFuZ2xlQXhpc01hcCxcbiAgICAgICAgICByYWRpdXNBeGlzTWFwID0gX3RoaXMkc3RhdGUxMC5yYWRpdXNBeGlzTWFwO1xuICAgICAgICBpZiAoYW5nbGVBeGlzTWFwICYmIHJhZGl1c0F4aXNNYXApIHtcbiAgICAgICAgICB2YXIgYW5nbGVBeGlzID0gZ2V0QW55RWxlbWVudE9mT2JqZWN0KGFuZ2xlQXhpc01hcCk7XG4gICAgICAgICAgcmV0dXJuIGluUmFuZ2VPZlNlY3Rvcih7XG4gICAgICAgICAgICB4OiBzY2FsZWRYLFxuICAgICAgICAgICAgeTogc2NhbGVkWVxuICAgICAgICAgIH0sIGFuZ2xlQXhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInBhcnNlRXZlbnRzT2ZXcmFwcGVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2VFdmVudHNPZldyYXBwZXIoKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRUeXBlID0gdGhpcy5nZXRUb29sdGlwRXZlbnRUeXBlKCk7XG4gICAgICAgIHZhciB0b29sdGlwSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgVG9vbHRpcCk7XG4gICAgICAgIHZhciB0b29sdGlwRXZlbnRzID0ge307XG4gICAgICAgIGlmICh0b29sdGlwSXRlbSAmJiB0b29sdGlwRXZlbnRUeXBlID09PSAnYXhpcycpIHtcbiAgICAgICAgICBpZiAodG9vbHRpcEl0ZW0ucHJvcHMudHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdG9vbHRpcEV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGlja1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9vbHRpcEV2ZW50cyA9IHtcbiAgICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLmhhbmRsZU1vdXNlRW50ZXIsXG4gICAgICAgICAgICAgIG9uTW91c2VNb3ZlOiB0aGlzLmhhbmRsZU1vdXNlTW92ZSxcbiAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZU1vdXNlTGVhdmUsXG4gICAgICAgICAgICAgIG9uVG91Y2hNb3ZlOiB0aGlzLmhhbmRsZVRvdWNoTW92ZSxcbiAgICAgICAgICAgICAgb25Ub3VjaFN0YXJ0OiB0aGlzLmhhbmRsZVRvdWNoU3RhcnQsXG4gICAgICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMuaGFuZGxlVG91Y2hFbmRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhZGFwdEV2ZW50SGFuZGxlcnMgZXhwZWN0cyBET00gRXZlbnQgYnV0IGdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCB3b3JrcyB3aXRoIFJlYWN0IFVJRXZlbnRzXG4gICAgICAgIHZhciBvdXRlckV2ZW50cyA9IGFkYXB0RXZlbnRIYW5kbGVycyh0aGlzLnByb3BzLCB0aGlzLmhhbmRsZU91dGVyRXZlbnQpO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvdXRlckV2ZW50cyksIHRvb2x0aXBFdmVudHMpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJhZGRMaXN0ZW5lclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFkZExpc3RlbmVyKCkge1xuICAgICAgICBldmVudENlbnRlci5vbihTWU5DX0VWRU5ULCB0aGlzLmhhbmRsZVJlY2VpdmVTeW5jRXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW1vdmVMaXN0ZW5lclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKCkge1xuICAgICAgICBldmVudENlbnRlci5yZW1vdmVMaXN0ZW5lcihTWU5DX0VWRU5ULCB0aGlzLmhhbmRsZVJlY2VpdmVTeW5jRXZlbnQpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJmaWx0ZXJGb3JtYXRJdGVtXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyRm9ybWF0SXRlbShpdGVtLCBkaXNwbGF5TmFtZSwgY2hpbGRJbmRleCkge1xuICAgICAgICB2YXIgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSB0aGlzLnN0YXRlLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zO1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICB2YXIgZW50cnkgPSBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtc1tpXTtcbiAgICAgICAgICBpZiAoZW50cnkuaXRlbSA9PT0gaXRlbSB8fCBlbnRyeS5wcm9wcy5rZXkgPT09IGl0ZW0ua2V5IHx8IGRpc3BsYXlOYW1lID09PSBnZXREaXNwbGF5TmFtZShlbnRyeS5pdGVtLnR5cGUpICYmIGNoaWxkSW5kZXggPT09IGVudHJ5LmNoaWxkSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInJlbmRlckNsaXBQYXRoXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xpcFBhdGgoKSB7XG4gICAgICAgIHZhciBjbGlwUGF0aElkID0gdGhpcy5jbGlwUGF0aElkO1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUkb2Zmc2V0ID0gdGhpcy5zdGF0ZS5vZmZzZXQsXG4gICAgICAgICAgbGVmdCA9IF90aGlzJHN0YXRlJG9mZnNldC5sZWZ0LFxuICAgICAgICAgIHRvcCA9IF90aGlzJHN0YXRlJG9mZnNldC50b3AsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkc3RhdGUkb2Zmc2V0LmhlaWdodCxcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHN0YXRlJG9mZnNldC53aWR0aDtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIsIHtcbiAgICAgICAgICBpZDogY2xpcFBhdGhJZFxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInJlY3RcIiwge1xuICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgeTogdG9wLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aFxuICAgICAgICB9KSkpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRYU2NhbGVzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0WFNjYWxlcygpIHtcbiAgICAgICAgdmFyIHhBeGlzTWFwID0gdGhpcy5zdGF0ZS54QXhpc01hcDtcbiAgICAgICAgcmV0dXJuIHhBeGlzTWFwID8gT2JqZWN0LmVudHJpZXMoeEF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzLCBfcmVmMTMpIHtcbiAgICAgICAgICB2YXIgX3JlZjE0ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjEzLCAyKSxcbiAgICAgICAgICAgIGF4aXNJZCA9IF9yZWYxNFswXSxcbiAgICAgICAgICAgIGF4aXNQcm9wcyA9IF9yZWYxNFsxXTtcbiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIGF4aXNQcm9wcy5zY2FsZSkpO1xuICAgICAgICB9LCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRZU2NhbGVzXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0WVNjYWxlcygpIHtcbiAgICAgICAgdmFyIHlBeGlzTWFwID0gdGhpcy5zdGF0ZS55QXhpc01hcDtcbiAgICAgICAgcmV0dXJuIHlBeGlzTWFwID8gT2JqZWN0LmVudHJpZXMoeUF4aXNNYXApLnJlZHVjZShmdW5jdGlvbiAocmVzLCBfcmVmMTUpIHtcbiAgICAgICAgICB2YXIgX3JlZjE2ID0gX3NsaWNlZFRvQXJyYXkoX3JlZjE1LCAyKSxcbiAgICAgICAgICAgIGF4aXNJZCA9IF9yZWYxNlswXSxcbiAgICAgICAgICAgIGF4aXNQcm9wcyA9IF9yZWYxNlsxXTtcbiAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIGF4aXNQcm9wcy5zY2FsZSkpO1xuICAgICAgICB9LCB7fSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJnZXRYU2NhbGVCeUF4aXNJZFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFhTY2FsZUJ5QXhpc0lkKGF4aXNJZCkge1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUkeEF4aXNNYXA7XG4gICAgICAgIHJldHVybiAoX3RoaXMkc3RhdGUkeEF4aXNNYXAgPSB0aGlzLnN0YXRlLnhBeGlzTWFwKSA9PT0gbnVsbCB8fCBfdGhpcyRzdGF0ZSR4QXhpc01hcCA9PT0gdm9pZCAwIHx8IChfdGhpcyRzdGF0ZSR4QXhpc01hcCA9IF90aGlzJHN0YXRlJHhBeGlzTWFwW2F4aXNJZF0pID09PSBudWxsIHx8IF90aGlzJHN0YXRlJHhBeGlzTWFwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRzdGF0ZSR4QXhpc01hcC5zY2FsZTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0WVNjYWxlQnlBeGlzSWRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRZU2NhbGVCeUF4aXNJZChheGlzSWQpIHtcbiAgICAgICAgdmFyIF90aGlzJHN0YXRlJHlBeGlzTWFwO1xuICAgICAgICByZXR1cm4gKF90aGlzJHN0YXRlJHlBeGlzTWFwID0gdGhpcy5zdGF0ZS55QXhpc01hcCkgPT09IG51bGwgfHwgX3RoaXMkc3RhdGUkeUF4aXNNYXAgPT09IHZvaWQgMCB8fCAoX3RoaXMkc3RhdGUkeUF4aXNNYXAgPSBfdGhpcyRzdGF0ZSR5QXhpc01hcFtheGlzSWRdKSA9PT0gbnVsbCB8fCBfdGhpcyRzdGF0ZSR5QXhpc01hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkc3RhdGUkeUF4aXNNYXAuc2NhbGU7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldEl0ZW1CeVhZXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SXRlbUJ5WFkoY2hhcnRYWSkge1xuICAgICAgICB2YXIgX3RoaXMkc3RhdGUxMSA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfdGhpcyRzdGF0ZTExLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgICAgICAgIGFjdGl2ZUl0ZW0gPSBfdGhpcyRzdGF0ZTExLmFjdGl2ZUl0ZW07XG4gICAgICAgIGlmIChmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyAmJiBmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBncmFwaGljYWxJdGVtID0gZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXNbaV07XG4gICAgICAgICAgICB2YXIgcHJvcHMgPSBncmFwaGljYWxJdGVtLnByb3BzLFxuICAgICAgICAgICAgICBpdGVtID0gZ3JhcGhpY2FsSXRlbS5pdGVtO1xuICAgICAgICAgICAgdmFyIGl0ZW1EaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKGl0ZW0udHlwZSk7XG4gICAgICAgICAgICBpZiAoaXRlbURpc3BsYXlOYW1lID09PSAnQmFyJykge1xuICAgICAgICAgICAgICB2YXIgYWN0aXZlQmFySXRlbSA9IChwcm9wcy5kYXRhIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0luUmVjdGFuZ2xlKGNoYXJ0WFksIGVudHJ5KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChhY3RpdmVCYXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBhY3RpdmVCYXJJdGVtXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtRGlzcGxheU5hbWUgPT09ICdSYWRpYWxCYXInKSB7XG4gICAgICAgICAgICAgIHZhciBfYWN0aXZlQmFySXRlbSA9IChwcm9wcy5kYXRhIHx8IFtdKS5maW5kKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpblJhbmdlT2ZTZWN0b3IoY2hhcnRYWSwgZW50cnkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKF9hY3RpdmVCYXJJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IGdyYXBoaWNhbEl0ZW0sXG4gICAgICAgICAgICAgICAgICBwYXlsb2FkOiBfYWN0aXZlQmFySXRlbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkgfHwgaXNQaWUoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkgfHwgaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgICAgICAgICAgIHZhciBhY3RpdmVJbmRleCA9IGdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwKHtcbiAgICAgICAgICAgICAgICBncmFwaGljYWxJdGVtOiBncmFwaGljYWxJdGVtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2x0aXBJdGVtOiBhY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIGl0ZW1EYXRhOiBpdGVtLnByb3BzLmRhdGFcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHZhciBjaGlsZEluZGV4ID0gaXRlbS5wcm9wcy5hY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkID8gYWN0aXZlSW5kZXggOiBpdGVtLnByb3BzLmFjdGl2ZUluZGV4O1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyYXBoaWNhbEl0ZW06IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZ3JhcGhpY2FsSXRlbSksIHt9LCB7XG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4OiBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pID8gaXRlbS5wcm9wcy5kYXRhW2FjdGl2ZUluZGV4XSA6IGdyYXBoaWNhbEl0ZW0ucHJvcHMuZGF0YVthY3RpdmVJbmRleF1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInJlbmRlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG4gICAgICAgIGlmICghdmFsaWRhdGVXaWR0aEhlaWdodCh0aGlzKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzNi5jbGFzc05hbWUsXG4gICAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM2LmhlaWdodCxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzNi5zdHlsZSxcbiAgICAgICAgICBjb21wYWN0ID0gX3RoaXMkcHJvcHM2LmNvbXBhY3QsXG4gICAgICAgICAgdGl0bGUgPSBfdGhpcyRwcm9wczYudGl0bGUsXG4gICAgICAgICAgZGVzYyA9IF90aGlzJHByb3BzNi5kZXNjLFxuICAgICAgICAgIG90aGVycyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczYsIF9leGNsdWRlZDIpO1xuICAgICAgICB2YXIgYXR0cnMgPSBmaWx0ZXJQcm9wcyhvdGhlcnMsIGZhbHNlKTtcblxuICAgICAgICAvLyBUaGUgXCJjb21wYWN0XCIgbW9kZSBpcyBtYWlubHkgdXNlZCBhcyB0aGUgcGFub3JhbWEgd2l0aGluIEJydXNoXG4gICAgICAgIGlmIChjb21wYWN0KSB7XG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLnByb3BzLmhlaWdodCxcbiAgICAgICAgICAgIGNsaXBQYXRoSWQ6IHRoaXMuY2xpcFBhdGhJZFxuICAgICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN1cmZhY2UsIF9leHRlbmRzKHt9LCBhdHRycywge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgICBkZXNjOiBkZXNjXG4gICAgICAgICAgfSksIHRoaXMucmVuZGVyQ2xpcFBhdGgoKSwgcmVuZGVyQnlPcmRlcihjaGlsZHJlbiwgdGhpcy5yZW5kZXJNYXApKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvcHMuYWNjZXNzaWJpbGl0eUxheWVyKSB7XG4gICAgICAgICAgdmFyIF90aGlzJHByb3BzJHRhYkluZGV4LCBfdGhpcyRwcm9wcyRyb2xlO1xuICAgICAgICAgIC8vIFNldCB0YWJJbmRleCB0byAwIGJ5IGRlZmF1bHQgKGNhbiBiZSBvdmVyd3JpdHRlbilcbiAgICAgICAgICBhdHRycy50YWJJbmRleCA9IChfdGhpcyRwcm9wcyR0YWJJbmRleCA9IHRoaXMucHJvcHMudGFiSW5kZXgpICE9PSBudWxsICYmIF90aGlzJHByb3BzJHRhYkluZGV4ICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyR0YWJJbmRleCA6IDA7XG4gICAgICAgICAgLy8gU2V0IHJvbGUgdG8gaW1nIGJ5IGRlZmF1bHQgKGNhbiBiZSBvdmVyd3JpdHRlbilcbiAgICAgICAgICBhdHRycy5yb2xlID0gKF90aGlzJHByb3BzJHJvbGUgPSB0aGlzLnByb3BzLnJvbGUpICE9PSBudWxsICYmIF90aGlzJHByb3BzJHJvbGUgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJHJvbGUgOiAnYXBwbGljYXRpb24nO1xuICAgICAgICAgIGF0dHJzLm9uS2V5RG93biA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBfdGhpczIuYWNjZXNzaWJpbGl0eU1hbmFnZXIua2V5Ym9hcmRFdmVudChlKTtcbiAgICAgICAgICAgIC8vICdvbktleURvd24nIGlzIG5vdCBjdXJyZW50bHkgYSBzdXBwb3J0ZWQgcHJvcCB0aGF0IGNhbiBiZSBwYXNzZWQgdGhyb3VnaFxuICAgICAgICAgICAgLy8gaWYgaXQncyBhZGRlZCwgdGhpcyBzaG91bGQgYmUgYWRkZWQ6IHRoaXMucHJvcHMub25LZXlEb3duKGUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgYXR0cnMub25Gb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5hY2Nlc3NpYmlsaXR5TWFuYWdlci5mb2N1cygpO1xuICAgICAgICAgICAgLy8gJ29uRm9jdXMnIGlzIG5vdCBjdXJyZW50bHkgYSBzdXBwb3J0ZWQgcHJvcCB0aGF0IGNhbiBiZSBwYXNzZWQgdGhyb3VnaFxuICAgICAgICAgICAgLy8gaWYgaXQncyBhZGRlZCwgdGhlIGZvY3VzIGV2ZW50IHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIHByb3BcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudHMgPSB0aGlzLnBhcnNlRXZlbnRzT2ZXcmFwcGVyKCk7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDaGFydExheW91dENvbnRleHRQcm92aWRlciwge1xuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLnByb3BzLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsXG4gICAgICAgICAgY2xpcFBhdGhJZDogdGhpcy5jbGlwUGF0aElkXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXdyYXBwZXInLCBjbGFzc05hbWUpLFxuICAgICAgICAgIHN0eWxlOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICAgIH0sIHN0eWxlKVxuICAgICAgICB9LCBldmVudHMsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihub2RlKSB7XG4gICAgICAgICAgICBfdGhpczIuY29udGFpbmVyID0gbm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTdXJmYWNlLCBfZXh0ZW5kcyh7fSwgYXR0cnMsIHtcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgIGRlc2M6IGRlc2MsXG4gICAgICAgICAgc3R5bGU6IEZVTExfV0lEVEhfQU5EX0hFSUdIVFxuICAgICAgICB9KSwgdGhpcy5yZW5kZXJDbGlwUGF0aCgpLCByZW5kZXJCeU9yZGVyKGNoaWxkcmVuLCB0aGlzLnJlbmRlck1hcCkpLCB0aGlzLnJlbmRlckxlZ2VuZCgpLCB0aGlzLnJlbmRlclRvb2x0aXAoKSkpO1xuICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXI7XG4gIH0oQ29tcG9uZW50KSwgX2RlZmluZVByb3BlcnR5KF9DYXRlZ29yaWNhbENoYXJ0V3JhcHBlciwgXCJkaXNwbGF5TmFtZVwiLCBjaGFydE5hbWUpLCBfZGVmaW5lUHJvcGVydHkoX0NhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcImRlZmF1bHRQcm9wc1wiLCBfb2JqZWN0U3ByZWFkKHtcbiAgICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgICBzdGFja09mZnNldDogJ25vbmUnLFxuICAgIGJhckNhdGVnb3J5R2FwOiAnMTAlJyxcbiAgICBiYXJHYXA6IDQsXG4gICAgbWFyZ2luOiB7XG4gICAgICB0b3A6IDUsXG4gICAgICByaWdodDogNSxcbiAgICAgIGJvdHRvbTogNSxcbiAgICAgIGxlZnQ6IDVcbiAgICB9LFxuICAgIHJldmVyc2VTdGFja09yZGVyOiBmYWxzZSxcbiAgICBzeW5jTWV0aG9kOiAnaW5kZXgnXG4gIH0sIGRlZmF1bHRQcm9wcykpLCBfZGVmaW5lUHJvcGVydHkoX0NhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyLCBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLCBmdW5jdGlvbiAobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICB2YXIgZGF0YUtleSA9IG5leHRQcm9wcy5kYXRhS2V5LFxuICAgICAgZGF0YSA9IG5leHRQcm9wcy5kYXRhLFxuICAgICAgY2hpbGRyZW4gPSBuZXh0UHJvcHMuY2hpbGRyZW4sXG4gICAgICB3aWR0aCA9IG5leHRQcm9wcy53aWR0aCxcbiAgICAgIGhlaWdodCA9IG5leHRQcm9wcy5oZWlnaHQsXG4gICAgICBsYXlvdXQgPSBuZXh0UHJvcHMubGF5b3V0LFxuICAgICAgc3RhY2tPZmZzZXQgPSBuZXh0UHJvcHMuc3RhY2tPZmZzZXQsXG4gICAgICBtYXJnaW4gPSBuZXh0UHJvcHMubWFyZ2luO1xuICAgIHZhciBkYXRhU3RhcnRJbmRleCA9IHByZXZTdGF0ZS5kYXRhU3RhcnRJbmRleCxcbiAgICAgIGRhdGFFbmRJbmRleCA9IHByZXZTdGF0ZS5kYXRhRW5kSW5kZXg7XG4gICAgaWYgKHByZXZTdGF0ZS51cGRhdGVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZGVmYXVsdFN0YXRlID0gY3JlYXRlRGVmYXVsdFN0YXRlKG5leHRQcm9wcyk7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRTdGF0ZSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiAwXG4gICAgICB9LCB1cGRhdGVTdGF0ZU9mQXhpc01hcHNPZmZzZXRBbmRTdGFja0dyb3Vwcyhfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBwcm9wczogbmV4dFByb3BzXG4gICAgICB9LCBkZWZhdWx0U3RhdGUpLCB7fSwge1xuICAgICAgICB1cGRhdGVJZDogMFxuICAgICAgfSksIHByZXZTdGF0ZSkpLCB7fSwge1xuICAgICAgICBwcmV2RGF0YUtleTogZGF0YUtleSxcbiAgICAgICAgcHJldkRhdGE6IGRhdGEsXG4gICAgICAgIHByZXZXaWR0aDogd2lkdGgsXG4gICAgICAgIHByZXZIZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgcHJldkxheW91dDogbGF5b3V0LFxuICAgICAgICBwcmV2U3RhY2tPZmZzZXQ6IHN0YWNrT2Zmc2V0LFxuICAgICAgICBwcmV2TWFyZ2luOiBtYXJnaW4sXG4gICAgICAgIHByZXZDaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGF0YUtleSAhPT0gcHJldlN0YXRlLnByZXZEYXRhS2V5IHx8IGRhdGEgIT09IHByZXZTdGF0ZS5wcmV2RGF0YSB8fCB3aWR0aCAhPT0gcHJldlN0YXRlLnByZXZXaWR0aCB8fCBoZWlnaHQgIT09IHByZXZTdGF0ZS5wcmV2SGVpZ2h0IHx8IGxheW91dCAhPT0gcHJldlN0YXRlLnByZXZMYXlvdXQgfHwgc3RhY2tPZmZzZXQgIT09IHByZXZTdGF0ZS5wcmV2U3RhY2tPZmZzZXQgfHwgIXNoYWxsb3dFcXVhbChtYXJnaW4sIHByZXZTdGF0ZS5wcmV2TWFyZ2luKSkge1xuICAgICAgdmFyIF9kZWZhdWx0U3RhdGUgPSBjcmVhdGVEZWZhdWx0U3RhdGUobmV4dFByb3BzKTtcblxuICAgICAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3JlY2hhcnRzL3JlY2hhcnRzL2lzc3Vlcy8yMTQzXG4gICAgICB2YXIga2VlcEZyb21QcmV2U3RhdGUgPSB7XG4gICAgICAgIC8vIChjaGFydFgsIGNoYXJ0WSkgYXJlICgwLDApIGluIGRlZmF1bHQgc3RhdGUsIGJ1dCB3ZSB3YW50IHRvIGtlZXAgdGhlIGxhc3QgbW91c2UgcG9zaXRpb24gdG8gYXZvaWRcbiAgICAgICAgLy8gYW55IGZsaWNrZXJpbmdcbiAgICAgICAgY2hhcnRYOiBwcmV2U3RhdGUuY2hhcnRYLFxuICAgICAgICBjaGFydFk6IHByZXZTdGF0ZS5jaGFydFksXG4gICAgICAgIC8vIFRoZSB0b29sdGlwIHNob3VsZCBzdGF5IGFjdGl2ZSB3aGVuIGl0IHdhcyBhY3RpdmUgaW4gdGhlIHByZXZpb3VzIHJlbmRlci4gSWYgdGhpcyBpcyBub3RcbiAgICAgICAgLy8gdGhlIGNhc2UsIHRoZSB0b29sdGlwIGRpc2FwcGVhcnMgYW5kIGltbWVkaWF0ZWx5IHJlLWFwcGVhcnMsIGNhdXNpbmcgYSBmbGlja2VyaW5nIGVmZmVjdFxuICAgICAgICBpc1Rvb2x0aXBBY3RpdmU6IHByZXZTdGF0ZS5pc1Rvb2x0aXBBY3RpdmVcbiAgICAgIH07XG4gICAgICB2YXIgdXBkYXRlc1RvU3RhdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGdldFRvb2x0aXBEYXRhKHByZXZTdGF0ZSwgZGF0YSwgbGF5b3V0KSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiBwcmV2U3RhdGUudXBkYXRlSWQgKyAxXG4gICAgICB9KTtcbiAgICAgIHZhciBuZXdTdGF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfZGVmYXVsdFN0YXRlKSwga2VlcEZyb21QcmV2U3RhdGUpLCB1cGRhdGVzVG9TdGF0ZSk7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG5ld1N0YXRlKSwgdXBkYXRlU3RhdGVPZkF4aXNNYXBzT2Zmc2V0QW5kU3RhY2tHcm91cHMoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHByb3BzOiBuZXh0UHJvcHNcbiAgICAgIH0sIG5ld1N0YXRlKSwgcHJldlN0YXRlKSksIHt9LCB7XG4gICAgICAgIHByZXZEYXRhS2V5OiBkYXRhS2V5LFxuICAgICAgICBwcmV2RGF0YTogZGF0YSxcbiAgICAgICAgcHJldldpZHRoOiB3aWR0aCxcbiAgICAgICAgcHJldkhlaWdodDogaGVpZ2h0LFxuICAgICAgICBwcmV2TGF5b3V0OiBsYXlvdXQsXG4gICAgICAgIHByZXZTdGFja09mZnNldDogc3RhY2tPZmZzZXQsXG4gICAgICAgIHByZXZNYXJnaW46IG1hcmdpbixcbiAgICAgICAgcHJldkNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghaXNDaGlsZHJlbkVxdWFsKGNoaWxkcmVuLCBwcmV2U3RhdGUucHJldkNoaWxkcmVuKSkge1xuICAgICAgdmFyIF9icnVzaCRwcm9wcyRzdGFydEluZCwgX2JydXNoJHByb3BzLCBfYnJ1c2gkcHJvcHMkZW5kSW5kZXgsIF9icnVzaCRwcm9wczI7XG4gICAgICAvLyBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIEJydXNoIC0gaWYgaXQgZXhpc3RzIGFuZCB0aGUgc3RhcnQgYW5kIGVuZCBpbmRleGVzIGFyZSBkaWZmZXJlbnQsIHJlLXJlbmRlciB3aXRoIHRoZSBuZXcgb25lc1xuICAgICAgdmFyIGJydXNoID0gZmluZENoaWxkQnlUeXBlKGNoaWxkcmVuLCBCcnVzaCk7XG4gICAgICB2YXIgc3RhcnRJbmRleCA9IGJydXNoID8gKF9icnVzaCRwcm9wcyRzdGFydEluZCA9IChfYnJ1c2gkcHJvcHMgPSBicnVzaC5wcm9wcykgPT09IG51bGwgfHwgX2JydXNoJHByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYnJ1c2gkcHJvcHMuc3RhcnRJbmRleCkgIT09IG51bGwgJiYgX2JydXNoJHByb3BzJHN0YXJ0SW5kICE9PSB2b2lkIDAgPyBfYnJ1c2gkcHJvcHMkc3RhcnRJbmQgOiBkYXRhU3RhcnRJbmRleCA6IGRhdGFTdGFydEluZGV4O1xuICAgICAgdmFyIGVuZEluZGV4ID0gYnJ1c2ggPyAoX2JydXNoJHByb3BzJGVuZEluZGV4ID0gKF9icnVzaCRwcm9wczIgPSBicnVzaC5wcm9wcykgPT09IG51bGwgfHwgX2JydXNoJHByb3BzMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JydXNoJHByb3BzMi5lbmRJbmRleCkgIT09IG51bGwgJiYgX2JydXNoJHByb3BzJGVuZEluZGV4ICE9PSB2b2lkIDAgPyBfYnJ1c2gkcHJvcHMkZW5kSW5kZXggOiBkYXRhRW5kSW5kZXggOiBkYXRhRW5kSW5kZXg7XG4gICAgICB2YXIgaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4ID0gc3RhcnRJbmRleCAhPT0gZGF0YVN0YXJ0SW5kZXggfHwgZW5kSW5kZXggIT09IGRhdGFFbmRJbmRleDtcblxuICAgICAgLy8gdXBkYXRlIGNvbmZpZ3VyYXRpb24gaW4gY2hpbGRyZW5cbiAgICAgIHZhciBoYXNHbG9iYWxEYXRhID0gIWlzTmlsKGRhdGEpO1xuICAgICAgdmFyIG5ld1VwZGF0ZUlkID0gaGFzR2xvYmFsRGF0YSAmJiAhaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4ID8gcHJldlN0YXRlLnVwZGF0ZUlkIDogcHJldlN0YXRlLnVwZGF0ZUlkICsgMTtcbiAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICB1cGRhdGVJZDogbmV3VXBkYXRlSWRcbiAgICAgIH0sIHVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIHByb3BzOiBuZXh0UHJvcHNcbiAgICAgIH0sIHByZXZTdGF0ZSksIHt9LCB7XG4gICAgICAgIHVwZGF0ZUlkOiBuZXdVcGRhdGVJZCxcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgIH0pLCBwcmV2U3RhdGUpKSwge30sIHtcbiAgICAgICAgcHJldkNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICAgICAgZGF0YVN0YXJ0SW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgIGRhdGFFbmRJbmRleDogZW5kSW5kZXhcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfQ2F0ZWdvcmljYWxDaGFydFdyYXBwZXIsIFwicmVuZGVyQWN0aXZlRG90XCIsIGZ1bmN0aW9uIChvcHRpb24sIHByb3BzKSB7XG4gICAgdmFyIGRvdDtcbiAgICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChvcHRpb24pKSB7XG4gICAgICBkb3QgPSAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KG9wdGlvbiwgcHJvcHMpO1xuICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihvcHRpb24pKSB7XG4gICAgICBkb3QgPSBvcHRpb24ocHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3QgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChEb3QsIHByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtYWN0aXZlLWRvdFwiLFxuICAgICAga2V5OiBwcm9wcy5rZXlcbiAgICB9LCBkb3QpO1xuICB9KSwgX0NhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyO1xufTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsInIiLCJsIiwidCIsImUiLCJuIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJrZXlzIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2VsZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsImxlbiIsImFycjIiLCJvd25LZXlzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsImlzTmlsIiwiaXNGdW5jdGlvbiIsInJhbmdlIiwiZ2V0Iiwic29ydEJ5IiwidGhyb3R0bGUiLCJjbHN4IiwiaW52YXJpYW50IiwiU3VyZmFjZSIsIkxheWVyIiwiVG9vbHRpcCIsIkxlZ2VuZCIsIkRvdCIsImlzSW5SZWN0YW5nbGUiLCJmaWx0ZXJQcm9wcyIsImZpbmRBbGxCeVR5cGUiLCJmaW5kQ2hpbGRCeVR5cGUiLCJnZXREaXNwbGF5TmFtZSIsImdldFJlYWN0RXZlbnRCeVR5cGUiLCJpc0NoaWxkcmVuRXF1YWwiLCJwYXJzZUNoaWxkSW5kZXgiLCJyZW5kZXJCeU9yZGVyIiwidmFsaWRhdGVXaWR0aEhlaWdodCIsIkJydXNoIiwiZ2V0T2Zmc2V0IiwiZmluZEVudHJ5SW5BcnJheSIsImdldEFueUVsZW1lbnRPZk9iamVjdCIsImhhc0R1cGxpY2F0ZSIsImlzTnVtYmVyIiwidW5pcXVlSWQiLCJhcHBlbmRPZmZzZXRPZkxlZ2VuZCIsImNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleCIsImNvbWJpbmVFdmVudEhhbmRsZXJzIiwiZ2V0QmFuZFNpemVPZkF4aXMiLCJnZXRCYXJQb3NpdGlvbiIsImdldEJhclNpemVMaXN0IiwiZ2V0RG9tYWluT2ZEYXRhQnlLZXkiLCJnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzIiwiZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyIsImdldExlZ2VuZFByb3BzIiwiZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSIsImdldFN0YWNrZWREYXRhT2ZJdGVtIiwiZ2V0U3RhY2tHcm91cHNCeUF4aXNJZCIsImdldFRpY2tzT2ZBeGlzIiwiZ2V0VG9vbHRpcEl0ZW0iLCJpc0NhdGVnb3JpY2FsQXhpcyIsInBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMiLCJwYXJzZUVycm9yQmFyc09mQXhpcyIsInBhcnNlU3BlY2lmaWVkRG9tYWluIiwiZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4iLCJpblJhbmdlT2ZTZWN0b3IiLCJwb2xhclRvQ2FydGVzaWFuIiwic2hhbGxvd0VxdWFsIiwiZXZlbnRDZW50ZXIiLCJTWU5DX0VWRU5UIiwiYWRhcHRFdmVudEhhbmRsZXJzIiwiQWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJpc0RvbWFpblNwZWNpZmllZEJ5VXNlciIsImdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwIiwiaXNGdW5uZWwiLCJpc1BpZSIsImlzU2NhdHRlciIsIkN1cnNvciIsIkNoYXJ0TGF5b3V0Q29udGV4dFByb3ZpZGVyIiwiT1JJRU5UX01BUCIsInhBeGlzIiwieUF4aXMiLCJGVUxMX1dJRFRIX0FORF9IRUlHSFQiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWdpbkNvb3JkaW5hdGUiLCJ4IiwieSIsInJlbmRlckFzSXMiLCJlbGVtZW50IiwiY2FsY3VsYXRlVG9vbHRpcFBvcyIsInJhbmdlT2JqIiwibGF5b3V0IiwiYW5nbGUiLCJyYWRpdXMiLCJnZXRBY3RpdmVDb29yZGluYXRlIiwidG9vbHRpcFRpY2tzIiwiYWN0aXZlSW5kZXgiLCJlbnRyeSIsImZpbmQiLCJ0aWNrIiwiaW5kZXgiLCJjb29yZGluYXRlIiwiX2FuZ2xlIiwiX3JhZGl1cyIsImN4IiwiY3kiLCJnZXREaXNwbGF5ZWREYXRhIiwiZGF0YSIsIl9yZWYiLCJncmFwaGljYWxJdGVtcyIsImRhdGFTdGFydEluZGV4IiwiZGF0YUVuZEluZGV4IiwiaXRlbXNEYXRhIiwicmVkdWNlIiwicmVzdWx0IiwiY2hpbGQiLCJpdGVtRGF0YSIsImNvbmNhdCIsImdldERlZmF1bHREb21haW5CeUF4aXNUeXBlIiwiYXhpc1R5cGUiLCJ1bmRlZmluZWQiLCJnZXRUb29sdGlwQ29udGVudCIsInN0YXRlIiwiY2hhcnREYXRhIiwiYWN0aXZlTGFiZWwiLCJ0b29sdGlwQXhpcyIsImRpc3BsYXllZERhdGEiLCJfY2hpbGQkcHJvcHMkZGF0YSIsInBheWxvYWQiLCJkYXRhS2V5IiwiYWxsb3dEdXBsaWNhdGVkQ2F0ZWdvcnkiLCJlbnRyaWVzIiwiZ2V0VG9vbHRpcERhdGEiLCJyYW5nZURhdGEiLCJjaGFydFgiLCJjaGFydFkiLCJwb3MiLCJ0aWNrcyIsIm9yZGVyZWRUb29sdGlwVGlja3MiLCJheGlzIiwiYWN0aXZlUGF5bG9hZCIsImFjdGl2ZUNvb3JkaW5hdGUiLCJhY3RpdmVUb29sdGlwSW5kZXgiLCJnZXRBeGlzTWFwQnlBeGVzIiwiX3JlZjIiLCJheGVzIiwiYXhpc0lkS2V5Iiwic3RhY2tHcm91cHMiLCJjaGlsZHJlbiIsInN0YWNrT2Zmc2V0IiwiaXNDYXRlZ29yaWNhbCIsIl9jaGlsZCRwcm9wcyRkb21haW4yIiwiX2NoaWxkJHByb3BzIiwidHlwZSIsImFsbG93RGF0YU92ZXJmbG93Iiwic2NhbGUiLCJpbmNsdWRlSGlkZGVuIiwiYXhpc0lkIiwiaXRlbSIsImRvbWFpbiIsImR1cGxpY2F0ZURvbWFpbiIsImNhdGVnb3JpY2FsRG9tYWluIiwiZGVmYXVsdERvbWFpbiIsIl9jaGlsZCRwcm9wcyRkb21haW4iLCJjaGlsZERvbWFpbiIsImR1cGxpY2F0ZSIsImZpbmFsRG9tYWluIiwiZXJyb3JCYXJzRG9tYWluIiwiaGlkZSIsImhhc1N0YWNrIiwiYXhpc0RvbWFpbiIsImlzRG9tYWluVmFsaWQiLCJldmVyeSIsIm9yaWdpbmFsRG9tYWluIiwiZ2V0QXhpc01hcEJ5SXRlbXMiLCJfcmVmMyIsIkF4aXMiLCJkZWZhdWx0UHJvcHMiLCJvcmllbnRhdGlvbiIsImdldEF4aXNNYXAiLCJfcmVmNCIsIl9yZWY0JGF4aXNUeXBlIiwiQXhpc0NvbXAiLCJheGlzTWFwIiwidG9vbHRpcFRpY2tzR2VuZXJhdG9yIiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImNyZWF0ZURlZmF1bHRTdGF0ZSIsImRlZmF1bHRTaG93VG9vbHRpcCIsImJydXNoSXRlbSIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsImlzVG9vbHRpcEFjdGl2ZSIsImhhc0dyYXBoaWNhbEJhckl0ZW0iLCJzb21lIiwiZ2V0QXhpc05hbWVCeUxheW91dCIsIm51bWVyaWNBeGlzTmFtZSIsImNhdGVBeGlzTmFtZSIsImNhbGN1bGF0ZU9mZnNldCIsIl9yZWY1IiwicHJldkxlZ2VuZEJCb3giLCJfcmVmNSR4QXhpc01hcCIsInhBeGlzTWFwIiwiX3JlZjUkeUF4aXNNYXAiLCJ5QXhpc01hcCIsIm1hcmdpbiIsImxlZ2VuZEl0ZW0iLCJvZmZzZXRIIiwiaWQiLCJtaXJyb3IiLCJsZWZ0IiwicmlnaHQiLCJvZmZzZXRWIiwidG9wIiwiYm90dG9tIiwib2Zmc2V0IiwiYnJ1c2hCb3R0b20iLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsIk1hdGgiLCJtYXgiLCJnZXRDYXJ0ZXNpYW5BeGlzU2l6ZSIsImF4aXNPYmoiLCJheGlzTmFtZSIsImdlbmVyYXRlQ2F0ZWdvcmljYWxDaGFydCIsIl9yZWY2IiwiX0NhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyIiwiY2hhcnROYW1lIiwiR3JhcGhpY2FsQ2hpbGQiLCJfcmVmNiRkZWZhdWx0VG9vbHRpcEUiLCJkZWZhdWx0VG9vbHRpcEV2ZW50VHlwZSIsIl9yZWY2JHZhbGlkYXRlVG9vbHRpcCIsInZhbGlkYXRlVG9vbHRpcEV2ZW50VHlwZXMiLCJheGlzQ29tcG9uZW50cyIsImxlZ2VuZENvbnRlbnQiLCJmb3JtYXRBeGlzTWFwIiwiZ2V0Rm9ybWF0SXRlbXMiLCJjdXJyZW50U3RhdGUiLCJ1cGRhdGVJZCIsImJhclNpemUiLCJiYXJHYXAiLCJiYXJDYXRlZ29yeUdhcCIsImdsb2JhbE1heEJhclNpemUiLCJtYXhCYXJTaXplIiwiX2dldEF4aXNOYW1lQnlMYXlvdXQiLCJoYXNCYXIiLCJmb3JtYXR0ZWRJdGVtcyIsIl9pdGVtJHByb3BzIiwiY2hpbGRNYXhCYXJTaXplIiwibnVtZXJpY0F4aXNJZCIsImNhdGVBeGlzSWQiLCJheGlzT2JqSW5pdGlhbFZhbHVlIiwiX2l0ZW0kdHlwZSRkaXNwbGF5TmFtIiwiX2l0ZW0kdHlwZSIsInByb2Nlc3MiLCJkaXNwbGF5TmFtZSIsImNhdGVBeGlzIiwiY2F0ZVRpY2tzIiwic3RhY2tlZERhdGEiLCJpdGVtSXNCYXIiLCJiYW5kU2l6ZSIsImJhclBvc2l0aW9uIiwic2l6ZUxpc3QiLCJ0b3RhbFNpemUiLCJfcmVmNyIsIl9nZXRCYW5kU2l6ZU9mQXhpcyIsImJhckJhbmRTaXplIiwibWFwIiwicG9zaXRpb24iLCJjb21wb3NlZEZuIiwiZ2V0Q29tcG9zZWREYXRhIiwiY2hpbGRJbmRleCIsInVwZGF0ZVN0YXRlT2ZBeGlzTWFwc09mZnNldEFuZFN0YWNrR3JvdXBzIiwiX3JlZjgiLCJwcmV2U3RhdGUiLCJyZXZlcnNlU3RhY2tPcmRlciIsIl9nZXRBeGlzTmFtZUJ5TGF5b3V0MiIsImxlZ2VuZEJCb3giLCJyZXBsYWNlIiwiY2F0ZUF4aXNNYXAiLCJ0aWNrc09iaiIsImZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zIiwiX0NvbXBvbmVudCIsIkNhdGVnb3JpY2FsQ2hhcnRXcmFwcGVyIiwiX3Byb3BzIiwiX3Byb3BzJGlkIiwiX3Byb3BzJHRocm90dGxlRGVsYXkiLCJfdGhpcyIsImJveCIsIl90aGlzJHN0YXRlIiwic2V0U3RhdGUiLCJjSWQiLCJlbWl0dGVyIiwic3luY0lkIiwiZXZlbnRFbWl0dGVyU3ltYm9sIiwic3luY01ldGhvZCIsImFwcGx5U3luY0V2ZW50IiwiX3JlZjkiLCJ0cmlnZ2VyU3luY0V2ZW50IiwibW91c2UiLCJnZXRNb3VzZUluZm8iLCJfbmV4dFN0YXRlIiwib25Nb3VzZUVudGVyIiwibmV4dFN0YXRlIiwib25Nb3VzZU1vdmUiLCJlbCIsImFjdGl2ZUl0ZW0iLCJ0b29sdGlwUGF5bG9hZCIsInRvb2x0aXBQb3NpdGlvbiIsInBlcnNpc3QiLCJ0aHJvdHRsZVRyaWdnZXJlZEFmdGVyTW91c2VNb3ZlIiwiY2FuY2VsIiwib25Nb3VzZUxlYXZlIiwiZXZlbnROYW1lIiwiZXZlbnQiLCJfbW91c2UiLCJjaGFuZ2VkVG91Y2hlcyIsIl9uZXh0U3RhdGUyIiwib25DbGljayIsIm9uTW91c2VEb3duIiwiX25leHRTdGF0ZTMiLCJvbk1vdXNlVXAiLCJfbmV4dFN0YXRlNCIsImhhbmRsZU1vdXNlRG93biIsImhhbmRsZU1vdXNlVXAiLCJlbWl0IiwiX3RoaXMkcHJvcHMiLCJfdGhpcyRzdGF0ZTIiLCJ2aWV3Qm94IiwidmFsaWRhdGVDaGFydFgiLCJtaW4iLCJ2YWxpZGF0ZUNoYXJ0WSIsIl9lbGVtZW50JHByb3BzJGFjdGl2ZSIsIl90aGlzJHN0YXRlMyIsInRvb2x0aXBFdmVudFR5cGUiLCJnZXRUb29sdGlwRXZlbnRUeXBlIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJjcmVhdGVFbGVtZW50IiwiYXhpc09wdGlvbiIsImNsYXNzTmFtZSIsIl9lbGVtZW50JHByb3BzIiwicmFkaWFsTGluZXMiLCJwb2xhckFuZ2xlcyIsInBvbGFyUmFkaXVzIiwiX3RoaXMkc3RhdGU0IiwicmFkaXVzQXhpc01hcCIsImFuZ2xlQXhpc01hcCIsInJhZGl1c0F4aXMiLCJhbmdsZUF4aXMiLCJpbm5lclJhZGl1cyIsIm91dGVyUmFkaXVzIiwiX3RoaXMkcHJvcHMyIiwibGVnZW5kV2lkdGgiLCJvdGhlclByb3BzIiwiY2hhcnRXaWR0aCIsImNoYXJ0SGVpZ2h0Iiwib25CQm94VXBkYXRlIiwiaGFuZGxlTGVnZW5kQkJveFVwZGF0ZSIsIl90b29sdGlwSXRlbSRwcm9wcyRhYyIsIl90aGlzJHByb3BzMyIsImFjY2Vzc2liaWxpdHlMYXllciIsInRvb2x0aXBJdGVtIiwiX3RoaXMkc3RhdGU1IiwibGFiZWwiLCJfdGhpcyRwcm9wczQiLCJfdGhpcyRzdGF0ZTYiLCJvbkNoYW5nZSIsImhhbmRsZUJydXNoQ2hhbmdlIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplIiwiY2xpcFBhdGhJZCIsIl90aGlzJHN0YXRlNyIsIl9lbGVtZW50JHByb3BzMiIsInhBeGlzSWQiLCJ5QXhpc0lkIiwiX3JlZjEwIiwiYWN0aXZlUG9pbnQiLCJiYXNlUG9pbnQiLCJpc1JhbmdlIiwiX2l0ZW0kaXRlbSRwcm9wcyIsImFjdGl2ZURvdCIsImRvdFByb3BzIiwiZmlsbCIsInN0cm9rZVdpZHRoIiwic3Ryb2tlIiwicmVuZGVyQWN0aXZlRG90IiwiZmlsdGVyRm9ybWF0SXRlbSIsIl90aGlzJHN0YXRlOCIsIl9pdGVtJHByb3BzMiIsInBvaW50cyIsImJhc2VMaW5lIiwiX2l0ZW0kaXRlbSRwcm9wczIiLCJhY3RpdmVCYXIiLCJhY3RpdmVTaGFwZSIsImhhc0FjdGl2ZSIsIml0ZW1FdmVudHMiLCJ0cmlnZ2VyIiwiaGFuZGxlSXRlbU1vdXNlRW50ZXIiLCJoYW5kbGVJdGVtTW91c2VMZWF2ZSIsImdyYXBoaWNhbEl0ZW0iLCJmaW5kV2l0aFBheWxvYWQiLCJzcGVjaWZpZWRLZXkiLCJyZW5kZXJBY3RpdmVQb2ludHMiLCJfdGhpcyRnZXRJdGVtQnlYWSIsIl9yZWYxMSIsImdldEl0ZW1CeVhZIiwiX3JlZjExJGdyYXBoaWNhbEl0ZW0iLCJfcmVmMTEkZ3JhcGhpY2FsSXRlbSQiLCJ4eUl0ZW0iLCJlbGVtZW50UHJvcHMiLCJDYXJ0ZXNpYW5HcmlkIiwiaGFuZGxlciIsIm9uY2UiLCJSZWZlcmVuY2VBcmVhIiwicmVuZGVyUmVmZXJlbmNlRWxlbWVudCIsIlJlZmVyZW5jZUxpbmUiLCJSZWZlcmVuY2VEb3QiLCJYQXhpcyIsIllBeGlzIiwicmVuZGVyQnJ1c2giLCJCYXIiLCJyZW5kZXJHcmFwaGljQ2hpbGQiLCJMaW5lIiwiQXJlYSIsIlJhZGFyIiwiUmFkaWFsQmFyIiwiU2NhdHRlciIsIlBpZSIsIkZ1bm5lbCIsInJlbmRlckN1cnNvciIsIlBvbGFyR3JpZCIsInJlbmRlclBvbGFyR3JpZCIsIlBvbGFyQW5nbGVBeGlzIiwicmVuZGVyUG9sYXJBeGlzIiwiUG9sYXJSYWRpdXNBeGlzIiwiQ3VzdG9taXplZCIsInJlbmRlckN1c3RvbWl6ZWQiLCJ0cmlnZ2VyZWRBZnRlck1vdXNlTW92ZSIsInRocm90dGxlRGVsYXkiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHByb3BzJG1hcmdpbiRsZSIsIl90aGlzJHByb3BzJG1hcmdpbiR0byIsImFkZExpc3RlbmVyIiwiYWNjZXNzaWJpbGl0eU1hbmFnZXIiLCJzZXREZXRhaWxzIiwiY29udGFpbmVyIiwiY29vcmRpbmF0ZUxpc3QiLCJtb3VzZUhhbmRsZXJDYWxsYmFjayIsImRpc3BsYXlEZWZhdWx0VG9vbHRpcCIsIl90aGlzJHByb3BzNSIsInRvb2x0aXBFbGVtIiwiZGVmYXVsdEluZGV4IiwiaW5kZXBlbmRlbnRBeGlzQ29vcmQiLCJkZXBlbmRlbnRBeGlzQ29vcmQiLCJpc0hvcml6b250YWwiLCJzY2F0dGVyUGxvdEVsZW1lbnQiLCJfcmVmMTIiLCJzZXRJbmRleCIsImdldFNuYXBzaG90QmVmb3JlVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcHJvcHMkbWFyZ2luJGxlMiIsIl90aGlzJHByb3BzJG1hcmdpbiR0bzIiLCJjb21wb25lbnREaWRVcGRhdGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUxpc3RlbmVyIiwic2hhcmVkIiwiZXZlbnRUeXBlIiwiYm91bmRpbmdSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY29udGFpbmVyT2Zmc2V0Iiwicm91bmQiLCJwYWdlWCIsInBhZ2VZIiwiaW5SYW5nZSIsIl90aGlzJHN0YXRlOSIsInhTY2FsZSIsInlTY2FsZSIsInhWYWx1ZSIsImludmVydCIsInlWYWx1ZSIsInRvb2xUaXBEYXRhIiwic2NhbGVkWCIsInNjYWxlZFkiLCJpc0luUmFuZ2UiLCJfdGhpcyRzdGF0ZTEwIiwicGFyc2VFdmVudHNPZldyYXBwZXIiLCJ0b29sdGlwRXZlbnRzIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVNb3VzZUVudGVyIiwiaGFuZGxlTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VMZWF2ZSIsIm9uVG91Y2hNb3ZlIiwiaGFuZGxlVG91Y2hNb3ZlIiwib25Ub3VjaFN0YXJ0IiwiaGFuZGxlVG91Y2hTdGFydCIsIm9uVG91Y2hFbmQiLCJoYW5kbGVUb3VjaEVuZCIsIm91dGVyRXZlbnRzIiwiaGFuZGxlT3V0ZXJFdmVudCIsIm9uIiwiaGFuZGxlUmVjZWl2ZVN5bmNFdmVudCIsInJlbmRlckNsaXBQYXRoIiwiX3RoaXMkc3RhdGUkb2Zmc2V0IiwiZ2V0WFNjYWxlcyIsInJlcyIsIl9yZWYxMyIsIl9yZWYxNCIsImF4aXNQcm9wcyIsImdldFlTY2FsZXMiLCJfcmVmMTUiLCJfcmVmMTYiLCJnZXRYU2NhbGVCeUF4aXNJZCIsIl90aGlzJHN0YXRlJHhBeGlzTWFwIiwiZ2V0WVNjYWxlQnlBeGlzSWQiLCJfdGhpcyRzdGF0ZSR5QXhpc01hcCIsImNoYXJ0WFkiLCJfdGhpcyRzdGF0ZTExIiwiaXRlbURpc3BsYXlOYW1lIiwiYWN0aXZlQmFySXRlbSIsIl9hY3RpdmVCYXJJdGVtIiwiYWN0aXZlVG9vbHRpcEl0ZW0iLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczYiLCJzdHlsZSIsImNvbXBhY3QiLCJ0aXRsZSIsImRlc2MiLCJvdGhlcnMiLCJhdHRycyIsInJlbmRlck1hcCIsIl90aGlzJHByb3BzJHRhYkluZGV4IiwiX3RoaXMkcHJvcHMkcm9sZSIsInRhYkluZGV4Iiwicm9sZSIsIm9uS2V5RG93biIsImtleWJvYXJkRXZlbnQiLCJvbkZvY3VzIiwiZm9jdXMiLCJldmVudHMiLCJjdXJzb3IiLCJyZWYiLCJub2RlIiwicmVuZGVyTGVnZW5kIiwicmVuZGVyVG9vbHRpcCIsIm5leHRQcm9wcyIsImRlZmF1bHRTdGF0ZSIsInByZXZEYXRhS2V5IiwicHJldkRhdGEiLCJwcmV2V2lkdGgiLCJwcmV2SGVpZ2h0IiwicHJldkxheW91dCIsInByZXZTdGFja09mZnNldCIsInByZXZNYXJnaW4iLCJwcmV2Q2hpbGRyZW4iLCJfZGVmYXVsdFN0YXRlIiwia2VlcEZyb21QcmV2U3RhdGUiLCJ1cGRhdGVzVG9TdGF0ZSIsIm5ld1N0YXRlIiwiX2JydXNoJHByb3BzJHN0YXJ0SW5kIiwiX2JydXNoJHByb3BzIiwiX2JydXNoJHByb3BzJGVuZEluZGV4IiwiX2JydXNoJHByb3BzMiIsImJydXNoIiwiaGFzRGlmZmVyZW50U3RhcnRPckVuZEluZGV4IiwiaGFzR2xvYmFsRGF0YSIsIm5ld1VwZGF0ZUlkIiwib3B0aW9uIiwiZG90Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/chart/generateCategoricalChart.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Cell.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/component/Cell.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cell: () => (/* binding */ Cell)\n/* harmony export */ });\n/**\n * @fileOverview Cross\n */ var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = \"Cell\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DZWxsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Q0FFQyxHQUVNLElBQUlBLE9BQU8sU0FBU0EsS0FBS0MsTUFBTTtJQUNwQyxPQUFPO0FBQ1QsRUFBRTtBQUNGRCxLQUFLRSxXQUFXLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvQ2VsbC5qcz80NGY1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBDcm9zc1xuICovXG5cbmV4cG9ydCB2YXIgQ2VsbCA9IGZ1bmN0aW9uIENlbGwoX3Byb3BzKSB7XG4gIHJldHVybiBudWxsO1xufTtcbkNlbGwuZGlzcGxheU5hbWUgPSAnQ2VsbCc7Il0sIm5hbWVzIjpbIkNlbGwiLCJfcHJvcHMiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Cell.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Cursor.js":
/*!*******************************************************!*\
!*** ./node_modules/recharts/es6/component/Cursor.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cursor: () => (/* binding */ Cursor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _shape_Curve__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shape/Curve */ \"(ssr)/./node_modules/recharts/es6/shape/Curve.js\");\n/* harmony import */ var _shape_Cross__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape/Cross */ \"(ssr)/./node_modules/recharts/es6/shape/Cross.js\");\n/* harmony import */ var _util_cursor_getCursorRectangle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/cursor/getCursorRectangle */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js\");\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _util_cursor_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/cursor/getRadialCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\");\n/* harmony import */ var _shape_Sector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shape/Sector */ \"(ssr)/./node_modules/recharts/es6/shape/Sector.js\");\n/* harmony import */ var _util_cursor_getCursorPoints__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/cursor/getCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n\n\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */ function Cursor(props) {\n var element = props.element, tooltipEventType = props.tooltipEventType, isActive = props.isActive, activeCoordinate = props.activeCoordinate, activePayload = props.activePayload, offset = props.offset, activeTooltipIndex = props.activeTooltipIndex, tooltipAxisBandSize = props.tooltipAxisBandSize, layout = props.layout, chartName = props.chartName;\n if (!element || !element.props.cursor || !isActive || !activeCoordinate || chartName !== \"ScatterChart\" && tooltipEventType !== \"axis\") {\n return null;\n }\n var restProps;\n var cursorComp = _shape_Curve__WEBPACK_IMPORTED_MODULE_2__.Curve;\n if (chartName === \"ScatterChart\") {\n restProps = activeCoordinate;\n cursorComp = _shape_Cross__WEBPACK_IMPORTED_MODULE_3__.Cross;\n } else if (chartName === \"BarChart\") {\n restProps = (0,_util_cursor_getCursorRectangle__WEBPACK_IMPORTED_MODULE_4__.getCursorRectangle)(layout, activeCoordinate, offset, tooltipAxisBandSize);\n cursorComp = _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__.Rectangle;\n } else if (layout === \"radial\") {\n var _getRadialCursorPoint = (0,_util_cursor_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_6__.getRadialCursorPoints)(activeCoordinate), cx = _getRadialCursorPoint.cx, cy = _getRadialCursorPoint.cy, radius = _getRadialCursorPoint.radius, startAngle = _getRadialCursorPoint.startAngle, endAngle = _getRadialCursorPoint.endAngle;\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = _shape_Sector__WEBPACK_IMPORTED_MODULE_7__.Sector;\n } else {\n restProps = {\n points: (0,_util_cursor_getCursorPoints__WEBPACK_IMPORTED_MODULE_8__.getCursorPoints)(layout, activeCoordinate, offset)\n };\n cursorComp = _shape_Curve__WEBPACK_IMPORTED_MODULE_2__.Curve;\n }\n var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n stroke: \"#ccc\",\n pointerEvents: \"none\"\n }, offset), restProps), (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_9__.filterProps)(element.props.cursor, false)), {}, {\n payload: activePayload,\n payloadIndex: activeTooltipIndex,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-tooltip-cursor\", element.props.cursor.className)\n });\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(element.props.cursor) ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(element.props.cursor, cursorProps) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(cursorComp, cursorProps);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9DdXJzb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYsR0FBR0MsR0FBR0MsQ0FBQyxDQUFD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YkksYUFBYUo7UUFDZjtRQUNBSixhQUFhakIsaURBQU1BO0lBQ3JCLE9BQU87UUFDTGdCLFlBQVk7WUFDVlUsUUFBUXpCLDZFQUFlQSxDQUFDWSxRQUFRTCxrQkFBa0JFO1FBQ3BEO1FBQ0FPLGFBQWF0QiwrQ0FBS0E7SUFDcEI7SUFDQSxJQUFJZ0MsY0FBY3pELGNBQWNBLGNBQWNBLGNBQWNBLGNBQWM7UUFDeEUwRCxRQUFRO1FBQ1JDLGVBQWU7SUFDakIsR0FBR25CLFNBQVNNLFlBQVlkLDZEQUFXQSxDQUFDRyxRQUFRRCxLQUFLLENBQUNXLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRztRQUNyRWUsU0FBU3JCO1FBQ1RzQixjQUFjcEI7UUFDZHFCLFdBQVd0QyxnREFBSUEsQ0FBQywyQkFBMkJXLFFBQVFELEtBQUssQ0FBQ1csTUFBTSxDQUFDaUIsU0FBUztJQUMzRTtJQUNBLE9BQU8sV0FBVyxHQUFFdkMscURBQWNBLENBQUNZLFFBQVFELEtBQUssQ0FBQ1csTUFBTSxJQUFJLFdBQVcsR0FBRXhCLG1EQUFZQSxDQUFDYyxRQUFRRCxLQUFLLENBQUNXLE1BQU0sRUFBRVksZUFBZSxXQUFXLEdBQUVuQyxvREFBYUEsQ0FBQ3lCLFlBQVlVO0FBQ25LIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29tcG9uZW50L0N1cnNvci5qcz82OGJjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IHsgY2xvbmVFbGVtZW50LCBjcmVhdGVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgQ3VydmUgfSBmcm9tICcuLi9zaGFwZS9DdXJ2ZSc7XG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJy4uL3NoYXBlL0Nyb3NzJztcbmltcG9ydCB7IGdldEN1cnNvclJlY3RhbmdsZSB9IGZyb20gJy4uL3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZSc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi9zaGFwZS9SZWN0YW5nbGUnO1xuaW1wb3J0IHsgZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzIH0gZnJvbSAnLi4vdXRpbC9jdXJzb3IvZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzJztcbmltcG9ydCB7IFNlY3RvciB9IGZyb20gJy4uL3NoYXBlL1NlY3Rvcic7XG5pbXBvcnQgeyBnZXRDdXJzb3JQb2ludHMgfSBmcm9tICcuLi91dGlsL2N1cnNvci9nZXRDdXJzb3JQb2ludHMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuLypcbiAqIEN1cnNvciBpcyB0aGUgYmFja2dyb3VuZCwgb3IgYSBoaWdobGlnaHQsXG4gKiB0aGF0IHNob3dzIHdoZW4gdXNlciBtb3VzZXMgb3ZlciBvciBhY3RpdmF0ZXNcbiAqIGFuIGFyZWEuXG4gKlxuICogSXQgdXN1YWxseSBzaG93cyB0b2dldGhlciB3aXRoIGEgdG9vbHRpcFxuICogdG8gZW1waGFzaXNlIHdoaWNoIHBhcnQgb2YgdGhlIGNoYXJ0IGRvZXMgdGhlIHRvb2x0aXAgcmVmZXIgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDdXJzb3IocHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSBwcm9wcy5lbGVtZW50LFxuICAgIHRvb2x0aXBFdmVudFR5cGUgPSBwcm9wcy50b29sdGlwRXZlbnRUeXBlLFxuICAgIGlzQWN0aXZlID0gcHJvcHMuaXNBY3RpdmUsXG4gICAgYWN0aXZlQ29vcmRpbmF0ZSA9IHByb3BzLmFjdGl2ZUNvb3JkaW5hdGUsXG4gICAgYWN0aXZlUGF5bG9hZCA9IHByb3BzLmFjdGl2ZVBheWxvYWQsXG4gICAgb2Zmc2V0ID0gcHJvcHMub2Zmc2V0LFxuICAgIGFjdGl2ZVRvb2x0aXBJbmRleCA9IHByb3BzLmFjdGl2ZVRvb2x0aXBJbmRleCxcbiAgICB0b29sdGlwQXhpc0JhbmRTaXplID0gcHJvcHMudG9vbHRpcEF4aXNCYW5kU2l6ZSxcbiAgICBsYXlvdXQgPSBwcm9wcy5sYXlvdXQsXG4gICAgY2hhcnROYW1lID0gcHJvcHMuY2hhcnROYW1lO1xuICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQucHJvcHMuY3Vyc29yIHx8ICFpc0FjdGl2ZSB8fCAhYWN0aXZlQ29vcmRpbmF0ZSB8fCBjaGFydE5hbWUgIT09ICdTY2F0dGVyQ2hhcnQnICYmIHRvb2x0aXBFdmVudFR5cGUgIT09ICdheGlzJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciByZXN0UHJvcHM7XG4gIHZhciBjdXJzb3JDb21wID0gQ3VydmU7XG4gIGlmIChjaGFydE5hbWUgPT09ICdTY2F0dGVyQ2hhcnQnKSB7XG4gICAgcmVzdFByb3BzID0gYWN0aXZlQ29vcmRpbmF0ZTtcbiAgICBjdXJzb3JDb21wID0gQ3Jvc3M7XG4gIH0gZWxzZSBpZiAoY2hhcnROYW1lID09PSAnQmFyQ2hhcnQnKSB7XG4gICAgcmVzdFByb3BzID0gZ2V0Q3Vyc29yUmVjdGFuZ2xlKGxheW91dCwgYWN0aXZlQ29vcmRpbmF0ZSwgb2Zmc2V0LCB0b29sdGlwQXhpc0JhbmRTaXplKTtcbiAgICBjdXJzb3JDb21wID0gUmVjdGFuZ2xlO1xuICB9IGVsc2UgaWYgKGxheW91dCA9PT0gJ3JhZGlhbCcpIHtcbiAgICB2YXIgX2dldFJhZGlhbEN1cnNvclBvaW50ID0gZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzKGFjdGl2ZUNvb3JkaW5hdGUpLFxuICAgICAgY3ggPSBfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQuY3gsXG4gICAgICBjeSA9IF9nZXRSYWRpYWxDdXJzb3JQb2ludC5jeSxcbiAgICAgIHJhZGl1cyA9IF9nZXRSYWRpYWxDdXJzb3JQb2ludC5yYWRpdXMsXG4gICAgICBzdGFydEFuZ2xlID0gX2dldFJhZGlhbEN1cnNvclBvaW50LnN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZSA9IF9nZXRSYWRpYWxDdXJzb3JQb2ludC5lbmRBbmdsZTtcbiAgICByZXN0UHJvcHMgPSB7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICBzdGFydEFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgZW5kQW5nbGU6IGVuZEFuZ2xlLFxuICAgICAgaW5uZXJSYWRpdXM6IHJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiByYWRpdXNcbiAgICB9O1xuICAgIGN1cnNvckNvbXAgPSBTZWN0b3I7XG4gIH0gZWxzZSB7XG4gICAgcmVzdFByb3BzID0ge1xuICAgICAgcG9pbnRzOiBnZXRDdXJzb3JQb2ludHMobGF5b3V0LCBhY3RpdmVDb29yZGluYXRlLCBvZmZzZXQpXG4gICAgfTtcbiAgICBjdXJzb3JDb21wID0gQ3VydmU7XG4gIH1cbiAgdmFyIGN1cnNvclByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgc3Ryb2tlOiAnI2NjYycsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gIH0sIG9mZnNldCksIHJlc3RQcm9wcyksIGZpbHRlclByb3BzKGVsZW1lbnQucHJvcHMuY3Vyc29yLCBmYWxzZSkpLCB7fSwge1xuICAgIHBheWxvYWQ6IGFjdGl2ZVBheWxvYWQsXG4gICAgcGF5bG9hZEluZGV4OiBhY3RpdmVUb29sdGlwSW5kZXgsXG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy10b29sdGlwLWN1cnNvcicsIGVsZW1lbnQucHJvcHMuY3Vyc29yLmNsYXNzTmFtZSlcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoZWxlbWVudC5wcm9wcy5jdXJzb3IpID8gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChlbGVtZW50LnByb3BzLmN1cnNvciwgY3Vyc29yUHJvcHMpIDogLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoY3Vyc29yQ29tcCwgY3Vyc29yUHJvcHMpO1xufSJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiY2xvbmVFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiY2xzeCIsIkN1cnZlIiwiQ3Jvc3MiLCJnZXRDdXJzb3JSZWN0YW5nbGUiLCJSZWN0YW5nbGUiLCJnZXRSYWRpYWxDdXJzb3JQb2ludHMiLCJTZWN0b3IiLCJnZXRDdXJzb3JQb2ludHMiLCJmaWx0ZXJQcm9wcyIsIkN1cnNvciIsInByb3BzIiwiZWxlbWVudCIsInRvb2x0aXBFdmVudFR5cGUiLCJpc0FjdGl2ZSIsImFjdGl2ZUNvb3JkaW5hdGUiLCJhY3RpdmVQYXlsb2FkIiwib2Zmc2V0IiwiYWN0aXZlVG9vbHRpcEluZGV4IiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImxheW91dCIsImNoYXJ0TmFtZSIsImN1cnNvciIsInJlc3RQcm9wcyIsImN1cnNvckNvbXAiLCJfZ2V0UmFkaWFsQ3Vyc29yUG9pbnQiLCJjeCIsImN5IiwicmFkaXVzIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsInBvaW50cyIsImN1cnNvclByb3BzIiwic3Ryb2tlIiwicG9pbnRlckV2ZW50cyIsInBheWxvYWQiLCJwYXlsb2FkSW5kZXgiLCJjbGFzc05hbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Cursor.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/component/DefaultLegendContent.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultLegendContent: () => (/* binding */ DefaultLegendContent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _container_Surface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../container/Surface */ \"(ssr)/./node_modules/recharts/es6/container/Surface.js\");\n/* harmony import */ var _shape_Symbols__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shape/Symbols */ \"(ssr)/./node_modules/recharts/es6/shape/Symbols.js\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Default Legend Content\n */ \n\n\n\n\n\n\nvar SIZE = 32;\nvar DefaultLegendContent = /*#__PURE__*/ function(_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n return _callSuper(this, DefaultLegendContent, arguments);\n }\n _createClass(DefaultLegendContent, [\n {\n key: \"renderIcon\",\n value: /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */ function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n if (data.type === \"plainline\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === \"line\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n if (data.type === \"rect\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(data.legendIcon)) {\n var iconProps = _objectSpread({}, data);\n delete iconProps.legendIcon;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(data.legendIcon, iconProps);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Symbols__WEBPACK_IMPORTED_MODULE_3__.Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n },\n {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n var _this$props = this.props, payload = _this$props.payload, iconSize = _this$props.iconSize, layout = _this$props.layout, formatter = _this$props.formatter, inactiveColor = _this$props.inactiveColor;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === \"horizontal\" ? \"inline-block\" : \"block\",\n marginRight: 10\n };\n var svgStyle = {\n display: \"inline-block\",\n verticalAlign: \"middle\",\n marginRight: 4\n };\n return payload.map(function(entry, i) {\n var finalFormatter = entry.formatter || formatter;\n var className = (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_defineProperty(_defineProperty({\n \"recharts-legend-item\": true\n }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n if (entry.type === \"none\") {\n return null;\n }\n // Do not render entry.value as functions. Always require static string properties.\n var entryValue = !lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(entry.value) ? entry.value : null;\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_4__.warn)(!lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(entry.value), 'The name property is also required when using a function for the dataKey of a chart\\'s cartesian components. Ex: <Bar name=\"Name of my Data\"/>' // eslint-disable-line max-len\n );\n var color = entry.inactive ? inactiveColor : entry.color;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i)\n }, (0,_util_types__WEBPACK_IMPORTED_MODULE_5__.adaptEventsOfChild)(_this.props, entry, i)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Surface__WEBPACK_IMPORTED_MODULE_6__.Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-legend-item-text\",\n style: {\n color: color\n }\n }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n });\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props, payload = _this$props2.payload, layout = _this$props2.layout, align = _this$props2.align;\n if (!payload || !payload.length) {\n return null;\n }\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === \"horizontal\" ? align : \"left\"\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }\n ]);\n return DefaultLegendContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", \"Legend\");\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n iconSize: 14,\n layout: \"horizontal\",\n align: \"center\",\n verticalAlign: \"middle\",\n inactiveColor: \"#ccc\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0TGVnZW5kQ29udGVudC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixDQUFBQSxJQUFJQSxF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Q0FBQyxRQUFRO3dCQUNwRThCLFdBQVc7d0JBQ1grQixPQUFPOzRCQUNMNUMsT0FBT0E7d0JBQ1Q7b0JBQ0YsR0FBRzBDLGlCQUFpQkEsZUFBZUMsWUFBWUYsT0FBT3pILEtBQUsySDtnQkFDN0Q7WUFDRjtRQUNGO1FBQUc7WUFDRHZILEtBQUs7WUFDTG1ELE9BQU8sU0FBU3NFO2dCQUNkLElBQUlDLGVBQWUsSUFBSSxDQUFDakcsS0FBSyxFQUMzQjJELFVBQVVzQyxhQUFhdEMsT0FBTyxFQUM5Qm9CLFNBQVNrQixhQUFhbEIsTUFBTSxFQUM1Qm1CLFFBQVFELGFBQWFDLEtBQUs7Z0JBQzVCLElBQUksQ0FBQ3ZDLFdBQVcsQ0FBQ0EsUUFBUXRGLE1BQU0sRUFBRTtvQkFDL0IsT0FBTztnQkFDVDtnQkFDQSxJQUFJOEgsYUFBYTtvQkFDZkMsU0FBUztvQkFDVEMsUUFBUTtvQkFDUkMsV0FBV3ZCLFdBQVcsZUFBZW1CLFFBQVE7Z0JBQy9DO2dCQUNBLE9BQU8sV0FBVyxHQUFFaEUsMERBQW1CLENBQUMsTUFBTTtvQkFDNUM4QixXQUFXO29CQUNYK0IsT0FBT0k7Z0JBQ1QsR0FBRyxJQUFJLENBQUN4QixXQUFXO1lBQ3JCO1FBQ0Y7S0FBRTtJQUNGLE9BQU9oQztBQUNULEVBQUVSLGdEQUFhQSxFQUFFO0FBQ2pCNUMsZ0JBQWdCb0Qsc0JBQXNCLGVBQWU7QUFDckRwRCxnQkFBZ0JvRCxzQkFBc0IsZ0JBQWdCO0lBQ3BEbUMsVUFBVTtJQUNWQyxRQUFRO0lBQ1JtQixPQUFPO0lBQ1BSLGVBQWU7SUFDZjNDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvRGVmYXVsdExlZ2VuZENvbnRlbnQuanM/ZGFiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBEZWZhdWx0IExlZ2VuZCBDb250ZW50XG4gKi9cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi4vdXRpbC9Mb2dVdGlscyc7XG5pbXBvcnQgeyBTdXJmYWNlIH0gZnJvbSAnLi4vY29udGFpbmVyL1N1cmZhY2UnO1xuaW1wb3J0IHsgU3ltYm9scyB9IGZyb20gJy4uL3NoYXBlL1N5bWJvbHMnO1xuaW1wb3J0IHsgYWRhcHRFdmVudHNPZkNoaWxkIH0gZnJvbSAnLi4vdXRpbC90eXBlcyc7XG52YXIgU0laRSA9IDMyO1xuZXhwb3J0IHZhciBEZWZhdWx0TGVnZW5kQ29udGVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKERlZmF1bHRMZWdlbmRDb250ZW50LCBfUHVyZUNvbXBvbmVudCk7XG4gIGZ1bmN0aW9uIERlZmF1bHRMZWdlbmRDb250ZW50KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEZWZhdWx0TGVnZW5kQ29udGVudCk7XG4gICAgcmV0dXJuIF9jYWxsU3VwZXIodGhpcywgRGVmYXVsdExlZ2VuZENvbnRlbnQsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKERlZmF1bHRMZWdlbmRDb250ZW50LCBbe1xuICAgIGtleTogXCJyZW5kZXJJY29uXCIsXG4gICAgdmFsdWU6XG4gICAgLyoqXG4gICAgICogUmVuZGVyIHRoZSBwYXRoIG9mIGljb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSBEYXRhIG9mIGVhY2ggbGVnZW5kIGl0ZW1cbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFBhdGggZWxlbWVudFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbmRlckljb24oZGF0YSkge1xuICAgICAgdmFyIGluYWN0aXZlQ29sb3IgPSB0aGlzLnByb3BzLmluYWN0aXZlQ29sb3I7XG4gICAgICB2YXIgaGFsZlNpemUgPSBTSVpFIC8gMjtcbiAgICAgIHZhciBzaXh0aFNpemUgPSBTSVpFIC8gNjtcbiAgICAgIHZhciB0aGlyZFNpemUgPSBTSVpFIC8gMztcbiAgICAgIHZhciBjb2xvciA9IGRhdGEuaW5hY3RpdmUgPyBpbmFjdGl2ZUNvbG9yIDogZGF0YS5jb2xvcjtcbiAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdwbGFpbmxpbmUnKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpbmVcIiwge1xuICAgICAgICAgIHN0cm9rZVdpZHRoOiA0LFxuICAgICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICAgIHN0cm9rZTogY29sb3IsXG4gICAgICAgICAgc3Ryb2tlRGFzaGFycmF5OiBkYXRhLnBheWxvYWQuc3Ryb2tlRGFzaGFycmF5LFxuICAgICAgICAgIHgxOiAwLFxuICAgICAgICAgIHkxOiBoYWxmU2l6ZSxcbiAgICAgICAgICB4MjogU0laRSxcbiAgICAgICAgICB5MjogaGFsZlNpemUsXG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC1pY29uXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAnbGluZScpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgICAgICAgc3Ryb2tlV2lkdGg6IDQsXG4gICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgc3Ryb2tlOiBjb2xvcixcbiAgICAgICAgICBkOiBcIk0wLFwiLmNvbmNhdChoYWxmU2l6ZSwgXCJoXCIpLmNvbmNhdCh0aGlyZFNpemUsIFwiXFxuICAgICAgICAgICAgQVwiKS5jb25jYXQoc2l4dGhTaXplLCBcIixcIikuY29uY2F0KHNpeHRoU2l6ZSwgXCIsMCwxLDEsXCIpLmNvbmNhdCgyICogdGhpcmRTaXplLCBcIixcIikuY29uY2F0KGhhbGZTaXplLCBcIlxcbiAgICAgICAgICAgIEhcIikuY29uY2F0KFNJWkUsIFwiTVwiKS5jb25jYXQoMiAqIHRoaXJkU2l6ZSwgXCIsXCIpLmNvbmNhdChoYWxmU2l6ZSwgXCJcXG4gICAgICAgICAgICBBXCIpLmNvbmNhdChzaXh0aFNpemUsIFwiLFwiKS5jb25jYXQoc2l4dGhTaXplLCBcIiwwLDEsMSxcIikuY29uY2F0KHRoaXJkU2l6ZSwgXCIsXCIpLmNvbmNhdChoYWxmU2l6ZSksXG4gICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLWxlZ2VuZC1pY29uXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAncmVjdCcpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgICAgICAgc3Ryb2tlOiBcIm5vbmVcIixcbiAgICAgICAgICBmaWxsOiBjb2xvcixcbiAgICAgICAgICBkOiBcIk0wLFwiLmNvbmNhdChTSVpFIC8gOCwgXCJoXCIpLmNvbmNhdChTSVpFLCBcInZcIikuY29uY2F0KFNJWkUgKiAzIC8gNCwgXCJoXCIpLmNvbmNhdCgtU0laRSwgXCJ6XCIpLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1sZWdlbmQtaWNvblwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoZGF0YS5sZWdlbmRJY29uKSkge1xuICAgICAgICB2YXIgaWNvblByb3BzID0gX29iamVjdFNwcmVhZCh7fSwgZGF0YSk7XG4gICAgICAgIGRlbGV0ZSBpY29uUHJvcHMubGVnZW5kSWNvbjtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoZGF0YS5sZWdlbmRJY29uLCBpY29uUHJvcHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN5bWJvbHMsIHtcbiAgICAgICAgZmlsbDogY29sb3IsXG4gICAgICAgIGN4OiBoYWxmU2l6ZSxcbiAgICAgICAgY3k6IGhhbGZTaXplLFxuICAgICAgICBzaXplOiBTSVpFLFxuICAgICAgICBzaXplVHlwZTogXCJkaWFtZXRlclwiLFxuICAgICAgICB0eXBlOiBkYXRhLnR5cGVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERyYXcgaXRlbXMgb2YgbGVnZW5kXG4gICAgICogQHJldHVybiB7UmVhY3RFbGVtZW50fSBJdGVtc1xuICAgICAqL1xuICB9LCB7XG4gICAga2V5OiBcInJlbmRlckl0ZW1zXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckl0ZW1zKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgIHBheWxvYWQgPSBfdGhpcyRwcm9wcy5wYXlsb2FkLFxuICAgICAgICBpY29uU2l6ZSA9IF90aGlzJHByb3BzLmljb25TaXplLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQsXG4gICAgICAgIGZvcm1hdHRlciA9IF90aGlzJHByb3BzLmZvcm1hdHRlcixcbiAgICAgICAgaW5hY3RpdmVDb2xvciA9IF90aGlzJHByb3BzLmluYWN0aXZlQ29sb3I7XG4gICAgICB2YXIgdmlld0JveCA9IHtcbiAgICAgICAgeDogMCxcbiAgICAgICAgeTogMCxcbiAgICAgICAgd2lkdGg6IFNJWkUsXG4gICAgICAgIGhlaWdodDogU0laRVxuICAgICAgfTtcbiAgICAgIHZhciBpdGVtU3R5bGUgPSB7XG4gICAgICAgIGRpc3BsYXk6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gJ2lubGluZS1ibG9jaycgOiAnYmxvY2snLFxuICAgICAgICBtYXJnaW5SaWdodDogMTBcbiAgICAgIH07XG4gICAgICB2YXIgc3ZnU3R5bGUgPSB7XG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDRcbiAgICAgIH07XG4gICAgICByZXR1cm4gcGF5bG9hZC5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpKSB7XG4gICAgICAgIHZhciBmaW5hbEZvcm1hdHRlciA9IGVudHJ5LmZvcm1hdHRlciB8fCBmb3JtYXR0ZXI7XG4gICAgICAgIHZhciBjbGFzc05hbWUgPSBjbHN4KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoe1xuICAgICAgICAgICdyZWNoYXJ0cy1sZWdlbmQtaXRlbSc6IHRydWVcbiAgICAgICAgfSwgXCJsZWdlbmQtaXRlbS1cIi5jb25jYXQoaSksIHRydWUpLCBcImluYWN0aXZlXCIsIGVudHJ5LmluYWN0aXZlKSk7XG4gICAgICAgIGlmIChlbnRyeS50eXBlID09PSAnbm9uZScpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvIG5vdCByZW5kZXIgZW50cnkudmFsdWUgYXMgZnVuY3Rpb25zLiBBbHdheXMgcmVxdWlyZSBzdGF0aWMgc3RyaW5nIHByb3BlcnRpZXMuXG4gICAgICAgIHZhciBlbnRyeVZhbHVlID0gIWlzRnVuY3Rpb24oZW50cnkudmFsdWUpID8gZW50cnkudmFsdWUgOiBudWxsO1xuICAgICAgICB3YXJuKCFpc0Z1bmN0aW9uKGVudHJ5LnZhbHVlKSwgXCJUaGUgbmFtZSBwcm9wZXJ0eSBpcyBhbHNvIHJlcXVpcmVkIHdoZW4gdXNpbmcgYSBmdW5jdGlvbiBmb3IgdGhlIGRhdGFLZXkgb2YgYSBjaGFydCdzIGNhcnRlc2lhbiBjb21wb25lbnRzLiBFeDogPEJhciBuYW1lPVxcXCJOYW1lIG9mIG15IERhdGFcXFwiLz5cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1sZW5cbiAgICAgICAgKTtcbiAgICAgICAgdmFyIGNvbG9yID0gZW50cnkuaW5hY3RpdmUgPyBpbmFjdGl2ZUNvbG9yIDogZW50cnkuY29sb3I7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIF9leHRlbmRzKHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgICBzdHlsZTogaXRlbVN0eWxlXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgICAgICxcbiAgICAgICAgICBrZXk6IFwibGVnZW5kLWl0ZW0tXCIuY29uY2F0KGkpXG4gICAgICAgIH0sIGFkYXB0RXZlbnRzT2ZDaGlsZChfdGhpcy5wcm9wcywgZW50cnksIGkpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3VyZmFjZSwge1xuICAgICAgICAgIHdpZHRoOiBpY29uU2l6ZSxcbiAgICAgICAgICBoZWlnaHQ6IGljb25TaXplLFxuICAgICAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICAgICAgc3R5bGU6IHN2Z1N0eWxlXG4gICAgICAgIH0sIF90aGlzLnJlbmRlckljb24oZW50cnkpKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLWl0ZW0tdGV4dFwiLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjogY29sb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGZpbmFsRm9ybWF0dGVyID8gZmluYWxGb3JtYXR0ZXIoZW50cnlWYWx1ZSwgZW50cnksIGkpIDogZW50cnlWYWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgcGF5bG9hZCA9IF90aGlzJHByb3BzMi5wYXlsb2FkLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczIubGF5b3V0LFxuICAgICAgICBhbGlnbiA9IF90aGlzJHByb3BzMi5hbGlnbjtcbiAgICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB2YXIgZmluYWxTdHlsZSA9IHtcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICB0ZXh0QWxpZ246IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gYWxpZ24gOiAnbGVmdCdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1kZWZhdWx0LWxlZ2VuZFwiLFxuICAgICAgICBzdHlsZTogZmluYWxTdHlsZVxuICAgICAgfSwgdGhpcy5yZW5kZXJJdGVtcygpKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERlZmF1bHRMZWdlbmRDb250ZW50O1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShEZWZhdWx0TGVnZW5kQ29udGVudCwgXCJkaXNwbGF5TmFtZVwiLCAnTGVnZW5kJyk7XG5fZGVmaW5lUHJvcGVydHkoRGVmYXVsdExlZ2VuZENvbnRlbnQsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgaWNvblNpemU6IDE0LFxuICBsYXlvdXQ6ICdob3Jpem9udGFsJyxcbiAgYWxpZ246ICdjZW50ZXInLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgaW5hY3RpdmVDb2xvcjogJyNjY2MnXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsImlzRnVuY3Rpb24iLCJjbHN4Iiwid2FybiIsIlN1cmZhY2UiLCJTeW1ib2xzIiwiYWRhcHRFdmVudHNPZkNoaWxkIiwiU0laRSIsIkRlZmF1bHRMZWdlbmRDb250ZW50IiwiX1B1cmVDb21wb25lbnQiLCJyZW5kZXJJY29uIiwiZGF0YSIsImluYWN0aXZlQ29sb3IiLCJoYWxmU2l6ZSIsInNpeHRoU2l6ZSIsInRoaXJkU2l6ZSIsImNvbG9yIiwiaW5hY3RpdmUiLCJ0eXBlIiwiY3JlYXRlRWxlbWVudCIsInN0cm9rZVdpZHRoIiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInBheWxvYWQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImNsYXNzTmFtZSIsImQiLCJjb25jYXQiLCJpc1ZhbGlkRWxlbWVudCIsImxlZ2VuZEljb24iLCJpY29uUHJvcHMiLCJjbG9uZUVsZW1lbnQiLCJjeCIsImN5Iiwic2l6ZSIsInNpemVUeXBlIiwicmVuZGVySXRlbXMiLCJfdGhpcyIsIl90aGlzJHByb3BzIiwiaWNvblNpemUiLCJsYXlvdXQiLCJmb3JtYXR0ZXIiLCJ2aWV3Qm94IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIml0ZW1TdHlsZSIsImRpc3BsYXkiLCJtYXJnaW5SaWdodCIsInN2Z1N0eWxlIiwidmVydGljYWxBbGlnbiIsIm1hcCIsImVudHJ5IiwiZmluYWxGb3JtYXR0ZXIiLCJlbnRyeVZhbHVlIiwic3R5bGUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wczIiLCJhbGlnbiIsImZpbmFsU3R5bGUiLCJwYWRkaW5nIiwibWFyZ2luIiwidGV4dEFsaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js":
/*!**********************************************************************!*\
!*** ./node_modules/recharts/es6/component/DefaultTooltipContent.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DefaultTooltipContent: () => (/* binding */ DefaultTooltipContent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Default Tooltip Content\n */ \n\n\n\n\nfunction defaultFormatter(value) {\n return Array.isArray(value) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(value[0]) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(value[1]) ? value.join(\" ~ \") : value;\n}\nvar DefaultTooltipContent = function DefaultTooltipContent(props) {\n var _props$separator = props.separator, separator = _props$separator === void 0 ? \" : \" : _props$separator, _props$contentStyle = props.contentStyle, contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle, _props$itemStyle = props.itemStyle, itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle, _props$labelStyle = props.labelStyle, labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle, payload = props.payload, formatter = props.formatter, itemSorter = props.itemSorter, wrapperClassName = props.wrapperClassName, labelClassName = props.labelClassName, label = props.label, labelFormatter = props.labelFormatter, _props$accessibilityL = props.accessibilityLayer, accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n var renderContent = function renderContent() {\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default()(payload, itemSorter) : payload).map(function(entry, i) {\n if (entry.type === \"none\") {\n return null;\n }\n var finalItemStyle = _objectSpread({\n display: \"block\",\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || \"#000\"\n }, itemStyle);\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var value = entry.value, name = entry.name;\n var finalValue = value;\n var finalName = name;\n if (finalFormatter && finalValue != null && finalName != null) {\n var formatted = finalFormatter(value, name, entry, i, payload);\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n finalValue = _formatted[0];\n finalName = _formatted[1];\n } else {\n finalValue = formatted;\n }\n }\n return(/*#__PURE__*/ // eslint-disable-next-line react/no-array-index-key\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(finalName) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, finalName) : null, (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(finalName) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, finalValue), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || \"\")));\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n return null;\n };\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: \"#fff\",\n border: \"1px solid #ccc\",\n whiteSpace: \"nowrap\"\n }, contentStyle);\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n var hasLabel = !lodash_isNil__WEBPACK_IMPORTED_MODULE_2___default()(label);\n var finalLabel = hasLabel ? label : \"\";\n var wrapperCN = (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-default-tooltip\", wrapperClassName);\n var labelCN = (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-tooltip-label\", labelClassName);\n if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n finalLabel = labelFormatter(label, payload);\n }\n var accessibilityAttributes = accessibilityLayer ? {\n role: \"status\",\n \"aria-live\": \"assertive\"\n } : {};\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n className: wrapperCN,\n style: finalStyle\n }, accessibilityAttributes), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9EZWZhdWx0VG9vbHRpcENvbnRlbnQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxlQUFlQyxHQUFHLEVBQUVULENBQUM7SUFBSSxPQUFPVSxnQkFBZ0JELFFBQVFFLHNCQUFzQkYsS0FBS1QsTUFBTVksNEJBQTRCSCxLQUFLVCxNQUFNYTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRC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QUEwQmxDLHFCQUFxQjtRQUNqRG1DLE1BQU07UUFDTixhQUFhO0lBQ2YsSUFBSSxDQUFDO0lBQ0wsT0FBTyxXQUFXLEdBQUU1RCwwREFBbUIsQ0FBQyxPQUFPL0QsU0FBUztRQUN0RDRHLFdBQVdXO1FBQ1hULE9BQU9FO0lBQ1QsR0FBR1UsMEJBQTBCLFdBQVcsR0FBRTNELDBEQUFtQixDQUFDLEtBQUs7UUFDakU2QyxXQUFXWTtRQUNYVixPQUFPTTtJQUNULEdBQUcsV0FBVyxHQUFFckQsMkRBQW9CLENBQUN1RCxjQUFjQSxhQUFhLEdBQUdULE1BQU0sQ0FBQ1MsY0FBYzdCO0FBQzFGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvRGVmYXVsdFRvb2x0aXBDb250ZW50LmpzPzY2MzIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IERlZmF1bHQgVG9vbHRpcCBDb250ZW50XG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1PclN0ciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmZ1bmN0aW9uIGRlZmF1bHRGb3JtYXR0ZXIodmFsdWUpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIGlzTnVtT3JTdHIodmFsdWVbMF0pICYmIGlzTnVtT3JTdHIodmFsdWVbMV0pID8gdmFsdWUuam9pbignIH4gJykgOiB2YWx1ZTtcbn1cbmV4cG9ydCB2YXIgRGVmYXVsdFRvb2x0aXBDb250ZW50ID0gZnVuY3Rpb24gRGVmYXVsdFRvb2x0aXBDb250ZW50KHByb3BzKSB7XG4gIHZhciBfcHJvcHMkc2VwYXJhdG9yID0gcHJvcHMuc2VwYXJhdG9yLFxuICAgIHNlcGFyYXRvciA9IF9wcm9wcyRzZXBhcmF0b3IgPT09IHZvaWQgMCA/ICcgOiAnIDogX3Byb3BzJHNlcGFyYXRvcixcbiAgICBfcHJvcHMkY29udGVudFN0eWxlID0gcHJvcHMuY29udGVudFN0eWxlLFxuICAgIGNvbnRlbnRTdHlsZSA9IF9wcm9wcyRjb250ZW50U3R5bGUgPT09IHZvaWQgMCA/IHt9IDogX3Byb3BzJGNvbnRlbnRTdHlsZSxcbiAgICBfcHJvcHMkaXRlbVN0eWxlID0gcHJvcHMuaXRlbVN0eWxlLFxuICAgIGl0ZW1TdHlsZSA9IF9wcm9wcyRpdGVtU3R5bGUgPT09IHZvaWQgMCA/IHt9IDogX3Byb3BzJGl0ZW1TdHlsZSxcbiAgICBfcHJvcHMkbGFiZWxTdHlsZSA9IHByb3BzLmxhYmVsU3R5bGUsXG4gICAgbGFiZWxTdHlsZSA9IF9wcm9wcyRsYWJlbFN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9wcm9wcyRsYWJlbFN0eWxlLFxuICAgIHBheWxvYWQgPSBwcm9wcy5wYXlsb2FkLFxuICAgIGZvcm1hdHRlciA9IHByb3BzLmZvcm1hdHRlcixcbiAgICBpdGVtU29ydGVyID0gcHJvcHMuaXRlbVNvcnRlcixcbiAgICB3cmFwcGVyQ2xhc3NOYW1lID0gcHJvcHMud3JhcHBlckNsYXNzTmFtZSxcbiAgICBsYWJlbENsYXNzTmFtZSA9IHByb3BzLmxhYmVsQ2xhc3NOYW1lLFxuICAgIGxhYmVsID0gcHJvcHMubGFiZWwsXG4gICAgbGFiZWxGb3JtYXR0ZXIgPSBwcm9wcy5sYWJlbEZvcm1hdHRlcixcbiAgICBfcHJvcHMkYWNjZXNzaWJpbGl0eUwgPSBwcm9wcy5hY2Nlc3NpYmlsaXR5TGF5ZXIsXG4gICAgYWNjZXNzaWJpbGl0eUxheWVyID0gX3Byb3BzJGFjY2Vzc2liaWxpdHlMID09PSB2b2lkIDAgPyBmYWxzZSA6IF9wcm9wcyRhY2Nlc3NpYmlsaXR5TDtcbiAgdmFyIHJlbmRlckNvbnRlbnQgPSBmdW5jdGlvbiByZW5kZXJDb250ZW50KCkge1xuICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWQubGVuZ3RoKSB7XG4gICAgICB2YXIgbGlzdFN0eWxlID0ge1xuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBtYXJnaW46IDBcbiAgICAgIH07XG4gICAgICB2YXIgaXRlbXMgPSAoaXRlbVNvcnRlciA/IHNvcnRCeShwYXlsb2FkLCBpdGVtU29ydGVyKSA6IHBheWxvYWQpLm1hcChmdW5jdGlvbiAoZW50cnksIGkpIHtcbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09ICdub25lJykge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaW5hbEl0ZW1TdHlsZSA9IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgcGFkZGluZ1RvcDogNCxcbiAgICAgICAgICBwYWRkaW5nQm90dG9tOiA0LFxuICAgICAgICAgIGNvbG9yOiBlbnRyeS5jb2xvciB8fCAnIzAwMCdcbiAgICAgICAgfSwgaXRlbVN0eWxlKTtcbiAgICAgICAgdmFyIGZpbmFsRm9ybWF0dGVyID0gZW50cnkuZm9ybWF0dGVyIHx8IGZvcm1hdHRlciB8fCBkZWZhdWx0Rm9ybWF0dGVyO1xuICAgICAgICB2YXIgdmFsdWUgPSBlbnRyeS52YWx1ZSxcbiAgICAgICAgICBuYW1lID0gZW50cnkubmFtZTtcbiAgICAgICAgdmFyIGZpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdmFyIGZpbmFsTmFtZSA9IG5hbWU7XG4gICAgICAgIGlmIChmaW5hbEZvcm1hdHRlciAmJiBmaW5hbFZhbHVlICE9IG51bGwgJiYgZmluYWxOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkID0gZmluYWxGb3JtYXR0ZXIodmFsdWUsIG5hbWUsIGVudHJ5LCBpLCBwYXlsb2FkKTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtYXR0ZWQpKSB7XG4gICAgICAgICAgICB2YXIgX2Zvcm1hdHRlZCA9IF9zbGljZWRUb0FycmF5KGZvcm1hdHRlZCwgMik7XG4gICAgICAgICAgICBmaW5hbFZhbHVlID0gX2Zvcm1hdHRlZFswXTtcbiAgICAgICAgICAgIGZpbmFsTmFtZSA9IF9mb3JtYXR0ZWRbMV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBmb3JtYXR0ZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbVwiLFxuICAgICAgICAgICAga2V5OiBcInRvb2x0aXAtaXRlbS1cIi5jb25jYXQoaSksXG4gICAgICAgICAgICBzdHlsZTogZmluYWxJdGVtU3R5bGVcbiAgICAgICAgICB9LCBpc051bU9yU3RyKGZpbmFsTmFtZSkgPyAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbS1uYW1lXCJcbiAgICAgICAgICB9LCBmaW5hbE5hbWUpIDogbnVsbCwgaXNOdW1PclN0cihmaW5hbE5hbWUpID8gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tc2VwYXJhdG9yXCJcbiAgICAgICAgICB9LCBzZXBhcmF0b3IpIDogbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy10b29sdGlwLWl0ZW0tdmFsdWVcIlxuICAgICAgICAgIH0sIGZpbmFsVmFsdWUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBcInJlY2hhcnRzLXRvb2x0aXAtaXRlbS11bml0XCJcbiAgICAgICAgICB9LCBlbnRyeS51bml0IHx8ICcnKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtdG9vbHRpcC1pdGVtLWxpc3RcIixcbiAgICAgICAgc3R5bGU6IGxpc3RTdHlsZVxuICAgICAgfSwgaXRlbXMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgdmFyIGZpbmFsU3R5bGUgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogMTAsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNjY2MnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gIH0sIGNvbnRlbnRTdHlsZSk7XG4gIHZhciBmaW5hbExhYmVsU3R5bGUgPSBfb2JqZWN0U3ByZWFkKHtcbiAgICBtYXJnaW46IDBcbiAgfSwgbGFiZWxTdHlsZSk7XG4gIHZhciBoYXNMYWJlbCA9ICFpc05pbChsYWJlbCk7XG4gIHZhciBmaW5hbExhYmVsID0gaGFzTGFiZWwgPyBsYWJlbCA6ICcnO1xuICB2YXIgd3JhcHBlckNOID0gY2xzeCgncmVjaGFydHMtZGVmYXVsdC10b29sdGlwJywgd3JhcHBlckNsYXNzTmFtZSk7XG4gIHZhciBsYWJlbENOID0gY2xzeCgncmVjaGFydHMtdG9vbHRpcC1sYWJlbCcsIGxhYmVsQ2xhc3NOYW1lKTtcbiAgaWYgKGhhc0xhYmVsICYmIGxhYmVsRm9ybWF0dGVyICYmIHBheWxvYWQgIT09IHVuZGVmaW5lZCAmJiBwYXlsb2FkICE9PSBudWxsKSB7XG4gICAgZmluYWxMYWJlbCA9IGxhYmVsRm9ybWF0dGVyKGxhYmVsLCBwYXlsb2FkKTtcbiAgfVxuICB2YXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMgPSBhY2Nlc3NpYmlsaXR5TGF5ZXIgPyB7XG4gICAgcm9sZTogJ3N0YXR1cycsXG4gICAgJ2FyaWEtbGl2ZSc6ICdhc3NlcnRpdmUnXG4gIH0gOiB7fTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IHdyYXBwZXJDTixcbiAgICBzdHlsZTogZmluYWxTdHlsZVxuICB9LCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicFwiLCB7XG4gICAgY2xhc3NOYW1lOiBsYWJlbENOLFxuICAgIHN0eWxlOiBmaW5hbExhYmVsU3R5bGVcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGZpbmFsTGFiZWwpID8gZmluYWxMYWJlbCA6IFwiXCIuY29uY2F0KGZpbmFsTGFiZWwpKSwgcmVuZGVyQ29udGVudCgpKTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJyIiwibCIsInQiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiUmVhY3QiLCJzb3J0QnkiLCJpc05pbCIsImNsc3giLCJpc051bU9yU3RyIiwiZGVmYXVsdEZvcm1hdHRlciIsImpvaW4iLCJEZWZhdWx0VG9vbHRpcENvbnRlbnQiLCJwcm9wcyIsIl9wcm9wcyRzZXBhcmF0b3IiLCJzZXBhcmF0b3IiLCJfcHJvcHMkY29udGVudFN0eWxlIiwiY29udGVudFN0eWxlIiwiX3Byb3BzJGl0ZW1TdHlsZSIsIml0ZW1TdHlsZSIsIl9wcm9wcyRsYWJlbFN0eWxlIiwibGFiZWxTdHlsZSIsInBheWxvYWQiLCJmb3JtYXR0ZXIiLCJpdGVtU29ydGVyIiwid3JhcHBlckNsYXNzTmFtZSIsImxhYmVsQ2xhc3NOYW1lIiwibGFiZWwiLCJsYWJlbEZvcm1hdHRlciIsIl9wcm9wcyRhY2Nlc3NpYmlsaXR5TCIsImFjY2Vzc2liaWxpdHlMYXllciIsInJlbmRlckNvbnRlbnQiLCJsaXN0U3R5bGUiLCJwYWRkaW5nIiwibWFyZ2luIiwiaXRlbXMiLCJtYXAiLCJlbnRyeSIsInR5cGUiLCJmaW5hbEl0ZW1TdHlsZSIsImRpc3BsYXkiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImNvbG9yIiwiZmluYWxGb3JtYXR0ZXIiLCJmaW5hbFZhbHVlIiwiZmluYWxOYW1lIiwiZm9ybWF0dGVkIiwiX2Zvcm1hdHRlZCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb25jYXQiLCJzdHlsZSIsInVuaXQiLCJmaW5hbFN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwid2hpdGVTcGFjZSIsImZpbmFsTGFiZWxTdHlsZSIsImhhc0xhYmVsIiwiZmluYWxMYWJlbCIsIndyYXBwZXJDTiIsImxhYmVsQ04iLCJ1bmRlZmluZWQiLCJhY2Nlc3NpYmlsaXR5QXR0cmlidXRlcyIsInJvbGUiLCJpc1ZhbGlkRWxlbWVudCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Label.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/component/Label.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Label: () => (/* binding */ Label)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _Text__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Text */ \"(ssr)/./node_modules/recharts/es6/component/Text.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"offset\"\n];\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\n\n\n\nvar getLabel = function getLabel(props) {\n var value = props.value, formatter = props.formatter;\n var label = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(props.children) ? value : props.children;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(formatter)) {\n return formatter(label);\n }\n return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.mathSign)(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position, viewBox = labelProps.viewBox, offset = labelProps.offset, className = labelProps.className;\n var _ref = viewBox, cx = _ref.cx, cy = _ref.cy, innerRadius = _ref.innerRadius, outerRadius = _ref.outerRadius, startAngle = _ref.startAngle, endAngle = _ref.endAngle, clockWise = _ref.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n if (position === \"insideStart\") {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === \"insideEnd\") {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === \"end\") {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, radius, labelAngle);\n var endPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(labelProps.id) ? (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.uniqueId)(\"recharts-radial-line-\") : labelProps.id;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"recharts-radial-bar-label\", className)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"defs\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n id: id,\n d: path\n })), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox, offset = props.offset, position = props.position;\n var _ref2 = viewBox, cx = _ref2.cx, cy = _ref2.cy, innerRadius = _ref2.innerRadius, outerRadius = _ref2.outerRadius, startAngle = _ref2.startAngle, endAngle = _ref2.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n if (position === \"outside\") {\n var _polarToCartesian = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, outerRadius + offset, midAngle), _x = _polarToCartesian.x, _y = _polarToCartesian.y;\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? \"start\" : \"end\",\n verticalAnchor: \"middle\"\n };\n }\n if (position === \"center\") {\n return {\n x: cx,\n y: cy,\n textAnchor: \"middle\",\n verticalAnchor: \"middle\"\n };\n }\n if (position === \"centerTop\") {\n return {\n x: cx,\n y: cy,\n textAnchor: \"middle\",\n verticalAnchor: \"start\"\n };\n }\n if (position === \"centerBottom\") {\n return {\n x: cx,\n y: cy,\n textAnchor: \"middle\",\n verticalAnchor: \"end\"\n };\n }\n var r = (innerRadius + outerRadius) / 2;\n var _polarToCartesian2 = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_6__.polarToCartesian)(cx, cy, r, midAngle), x = _polarToCartesian2.x, y = _polarToCartesian2.y;\n return {\n x: x,\n y: y,\n textAnchor: \"middle\",\n verticalAnchor: \"middle\"\n };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox, parentViewBox = props.parentViewBox, offset = props.offset, position = props.position;\n var _ref3 = viewBox, x = _ref3.x, y = _ref3.y, width = _ref3.width, height = _ref3.height;\n // Define vertical offsets and position inverts based on the value being positive or negative\n var verticalSign = height >= 0 ? 1 : -1;\n var verticalOffset = verticalSign * offset;\n var verticalEnd = verticalSign > 0 ? \"end\" : \"start\";\n var verticalStart = verticalSign > 0 ? \"start\" : \"end\";\n // Define horizontal offsets and position inverts based on the value being positive or negative\n var horizontalSign = width >= 0 ? 1 : -1;\n var horizontalOffset = horizontalSign * offset;\n var horizontalEnd = horizontalSign > 0 ? \"end\" : \"start\";\n var horizontalStart = horizontalSign > 0 ? \"start\" : \"end\";\n if (position === \"top\") {\n var attrs = {\n x: x + width / 2,\n y: y - verticalSign * offset,\n textAnchor: \"middle\",\n verticalAnchor: verticalEnd\n };\n return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n height: Math.max(y - parentViewBox.y, 0),\n width: width\n } : {});\n }\n if (position === \"bottom\") {\n var _attrs = {\n x: x + width / 2,\n y: y + height + verticalOffset,\n textAnchor: \"middle\",\n verticalAnchor: verticalStart\n };\n return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n width: width\n } : {});\n }\n if (position === \"left\") {\n var _attrs2 = {\n x: x - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: \"middle\"\n };\n return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n width: Math.max(_attrs2.x - parentViewBox.x, 0),\n height: height\n } : {});\n }\n if (position === \"right\") {\n var _attrs3 = {\n x: x + width + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: \"middle\"\n };\n return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n height: height\n } : {});\n }\n var sizeAttrs = parentViewBox ? {\n width: width,\n height: height\n } : {};\n if (position === \"insideLeft\") {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalStart,\n verticalAnchor: \"middle\"\n }, sizeAttrs);\n }\n if (position === \"insideRight\") {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height / 2,\n textAnchor: horizontalEnd,\n verticalAnchor: \"middle\"\n }, sizeAttrs);\n }\n if (position === \"insideTop\") {\n return _objectSpread({\n x: x + width / 2,\n y: y + verticalOffset,\n textAnchor: \"middle\",\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === \"insideBottom\") {\n return _objectSpread({\n x: x + width / 2,\n y: y + height - verticalOffset,\n textAnchor: \"middle\",\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === \"insideTopLeft\") {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === \"insideTopRight\") {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalStart\n }, sizeAttrs);\n }\n if (position === \"insideBottomLeft\") {\n return _objectSpread({\n x: x + horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalStart,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (position === \"insideBottomRight\") {\n return _objectSpread({\n x: x + width - horizontalOffset,\n y: y + height - verticalOffset,\n textAnchor: horizontalEnd,\n verticalAnchor: verticalEnd\n }, sizeAttrs);\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(position) && ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(position.x) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(position.x)) && ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(position.y) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(position.y))) {\n return _objectSpread({\n x: x + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getPercentValue)(position.x, width),\n y: y + (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getPercentValue)(position.y, height),\n textAnchor: \"end\",\n verticalAnchor: \"end\"\n }, sizeAttrs);\n }\n return _objectSpread({\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: \"middle\",\n verticalAnchor: \"middle\"\n }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n return \"cx\" in viewBox && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(viewBox.cx);\n};\nfunction Label(_ref4) {\n var _ref4$offset = _ref4.offset, offset = _ref4$offset === void 0 ? 5 : _ref4$offset, restProps = _objectWithoutProperties(_ref4, _excluded);\n var props = _objectSpread({\n offset: offset\n }, restProps);\n var viewBox = props.viewBox, position = props.position, value = props.value, children = props.children, content = props.content, _props$className = props.className, className = _props$className === void 0 ? \"\" : _props$className, textBreakAll = props.textBreakAll;\n if (!viewBox || lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(value) && lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children) && !/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(content) && !lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(content)) {\n return null;\n }\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(content)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(content, props);\n }\n var label;\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(content)) {\n label = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(content, props);\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n var isPolarLabel = isPolar(viewBox);\n var attrs = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(props, true);\n if (isPolarLabel && (position === \"insideStart\" || position === \"insideEnd\" || position === \"end\")) {\n return renderRadialLabel(props, label, attrs);\n }\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Text__WEBPACK_IMPORTED_MODULE_8__.Text, _extends({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"recharts-label\", className)\n }, attrs, positionAttrs, {\n breakAll: textBreakAll\n }), label);\n}\nLabel.displayName = \"Label\";\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx, cy = props.cy, angle = props.angle, startAngle = props.startAngle, endAngle = props.endAngle, r = props.r, radius = props.radius, innerRadius = props.innerRadius, outerRadius = props.outerRadius, x = props.x, y = props.y, top = props.top, left = props.left, width = props.width, height = props.height, clockWise = props.clockWise, labelViewBox = props.labelViewBox;\n if (labelViewBox) {\n return labelViewBox;\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(width) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(height)) {\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(x) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(top) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(x) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(cx) && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n if (props.viewBox) {\n return props.viewBox;\n }\n return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumOrStr)(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(label)) {\n if (label.type === Label) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChildren = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.findAllByType)(children, Label).map(function(child, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n viewBox: viewBox || parentViewBox,\n // eslint-disable-next-line react/no-array-index-key\n key: \"label-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [\n implicitLabel\n ].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxJQUFJSyxZQUFZO0lBQUM7Q0FBUztBQUMxQixTQUFTQyxtQkFBbUJDLEdBQUc7SUFBSSxPQUFPQyxtQkFBbUJELFFBQVFFLGlCQUFpQkYsUUFBUUcsNEJBQTRCSCxRQUFRSTtBQUFzQjtBQUN4SixTQUFTQTtJQUF1QixNQUFNLElBQUlDLFVBQVU7QUFBeUk7QUFDN0wsU0FBU0YsNEJBQTRCVixDQUFDLEVBQUVhLE1BQU07SUFBSSxJQUFJLENBQUNiLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPYyxrQkFBa0JkLEdBQUdhO0lBQVMsSUFBSUUsSUFBSUMsT0FBT1osU0FBUyxDQUFDYSxRQUFRLENBQUNDLElBQUksQ0FBQ2xCLEdBQUdtQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZZixFQUFFRyxXQUFXLEVBQUVZLElBQUlmLEVBQUVHLFdBQVcsQ0FBQ2lCLElBQUk7SUFBRSxJQUFJTCxNQUFNLFNBQVNBLE1BQU0sT0FBTyxPQUFPTSxNQUFNQyxJQUFJLENBQUN0QjtJQUFJLElBQUllLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FBQ1IsSUFBSSxPQUFPRCxrQkFBa0JkLEdBQUdhO0FBQVM7QUFDL1osU0FBU0osaUJBQWlC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O1FBQ1A7SUFDRjtJQUNBLE9BQU87QUFDVDtBQUNBLElBQUkySSxxQkFBcUIsU0FBU0EsbUJBQW1CQyxXQUFXLEVBQUVyRSxPQUFPO0lBQ3ZFLElBQUlzRSxrQkFBa0I1SCxVQUFVekIsTUFBTSxHQUFHLEtBQUt5QixTQUFTLENBQUMsRUFBRSxLQUFLNkgsWUFBWTdILFNBQVMsQ0FBQyxFQUFFLEdBQUc7SUFDMUYsSUFBSSxDQUFDMkgsZUFBZSxDQUFDQSxZQUFZbEYsUUFBUSxJQUFJbUYsbUJBQW1CLENBQUNELFlBQVluRixLQUFLLEVBQUU7UUFDbEYsT0FBTztJQUNUO0lBQ0EsSUFBSUMsV0FBV2tGLFlBQVlsRixRQUFRO0lBQ25DLElBQUk2QyxnQkFBZ0I2QixhQUFhUTtJQUNqQyxJQUFJRyxtQkFBbUJsRywrREFBYUEsQ0FBQ2EsVUFBVStELE9BQU91QixHQUFHLENBQUMsU0FBVUMsS0FBSyxFQUFFQyxLQUFLO1FBQzlFLE9BQU8sV0FBVyxHQUFFN0csbURBQVlBLENBQUM0RyxPQUFPO1lBQ3RDMUUsU0FBU0EsV0FBV2dDO1lBQ3BCLG9EQUFvRDtZQUNwRHZHLEtBQUssU0FBU3NGLE1BQU0sQ0FBQzREO1FBQ3ZCO0lBQ0Y7SUFDQSxJQUFJLENBQUNMLGlCQUFpQjtRQUNwQixPQUFPRTtJQUNUO0lBQ0EsSUFBSUksZ0JBQWdCVixXQUFXRyxZQUFZbkYsS0FBSyxFQUFFYyxXQUFXZ0M7SUFDN0QsT0FBTztRQUFDNEM7S0FBYyxDQUFDN0QsTUFBTSxDQUFDbkgsbUJBQW1CNEs7QUFDbkQ7QUFDQXRCLE1BQU1XLFlBQVksR0FBR0E7QUFDckJYLE1BQU1rQixrQkFBa0IsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvTGFiZWwuanM/OTQxZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgX2V4Y2x1ZGVkID0gW1wib2Zmc2V0XCJdO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQsIGlzVmFsaWRFbGVtZW50LCBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzTmlsIGZyb20gJ2xvZGFzaC9pc05pbCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vVGV4dCc7XG5pbXBvcnQgeyBmaW5kQWxsQnlUeXBlLCBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBpc051bU9yU3RyLCBpc051bWJlciwgaXNQZXJjZW50LCBnZXRQZXJjZW50VmFsdWUsIHVuaXF1ZUlkLCBtYXRoU2lnbiB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xudmFyIGdldExhYmVsID0gZnVuY3Rpb24gZ2V0TGFiZWwocHJvcHMpIHtcbiAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgZm9ybWF0dGVyID0gcHJvcHMuZm9ybWF0dGVyO1xuICB2YXIgbGFiZWwgPSBpc05pbChwcm9wcy5jaGlsZHJlbikgPyB2YWx1ZSA6IHByb3BzLmNoaWxkcmVuO1xuICBpZiAoaXNGdW5jdGlvbihmb3JtYXR0ZXIpKSB7XG4gICAgcmV0dXJuIGZvcm1hdHRlcihsYWJlbCk7XG4gIH1cbiAgcmV0dXJuIGxhYmVsO1xufTtcbnZhciBnZXREZWx0YUFuZ2xlID0gZnVuY3Rpb24gZ2V0RGVsdGFBbmdsZShzdGFydEFuZ2xlLCBlbmRBbmdsZSkge1xuICB2YXIgc2lnbiA9IG1hdGhTaWduKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSk7XG4gIHZhciBkZWx0YUFuZ2xlID0gTWF0aC5taW4oTWF0aC5hYnMoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKSwgMzYwKTtcbiAgcmV0dXJuIHNpZ24gKiBkZWx0YUFuZ2xlO1xufTtcbnZhciByZW5kZXJSYWRpYWxMYWJlbCA9IGZ1bmN0aW9uIHJlbmRlclJhZGlhbExhYmVsKGxhYmVsUHJvcHMsIGxhYmVsLCBhdHRycykge1xuICB2YXIgcG9zaXRpb24gPSBsYWJlbFByb3BzLnBvc2l0aW9uLFxuICAgIHZpZXdCb3ggPSBsYWJlbFByb3BzLnZpZXdCb3gsXG4gICAgb2Zmc2V0ID0gbGFiZWxQcm9wcy5vZmZzZXQsXG4gICAgY2xhc3NOYW1lID0gbGFiZWxQcm9wcy5jbGFzc05hbWU7XG4gIHZhciBfcmVmID0gdmlld0JveCxcbiAgICBjeCA9IF9yZWYuY3gsXG4gICAgY3kgPSBfcmVmLmN5LFxuICAgIGlubmVyUmFkaXVzID0gX3JlZi5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYub3V0ZXJSYWRpdXMsXG4gICAgc3RhcnRBbmdsZSA9IF9yZWYuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWYuZW5kQW5nbGUsXG4gICAgY2xvY2tXaXNlID0gX3JlZi5jbG9ja1dpc2U7XG4gIHZhciByYWRpdXMgPSAoaW5uZXJSYWRpdXMgKyBvdXRlclJhZGl1cykgLyAyO1xuICB2YXIgZGVsdGFBbmdsZSA9IGdldERlbHRhQW5nbGUoc3RhcnRBbmdsZSwgZW5kQW5nbGUpO1xuICB2YXIgc2lnbiA9IGRlbHRhQW5nbGUgPj0gMCA/IDEgOiAtMTtcbiAgdmFyIGxhYmVsQW5nbGUsIGRpcmVjdGlvbjtcbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlU3RhcnQnKSB7XG4gICAgbGFiZWxBbmdsZSA9IHN0YXJ0QW5nbGUgKyBzaWduICogb2Zmc2V0O1xuICAgIGRpcmVjdGlvbiA9IGNsb2NrV2lzZTtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZUVuZCcpIHtcbiAgICBsYWJlbEFuZ2xlID0gZW5kQW5nbGUgLSBzaWduICogb2Zmc2V0O1xuICAgIGRpcmVjdGlvbiA9ICFjbG9ja1dpc2U7XG4gIH0gZWxzZSBpZiAocG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgbGFiZWxBbmdsZSA9IGVuZEFuZ2xlICsgc2lnbiAqIG9mZnNldDtcbiAgICBkaXJlY3Rpb24gPSBjbG9ja1dpc2U7XG4gIH1cbiAgZGlyZWN0aW9uID0gZGVsdGFBbmdsZSA8PSAwID8gZGlyZWN0aW9uIDogIWRpcmVjdGlvbjtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBsYWJlbEFuZ2xlKTtcbiAgdmFyIGVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgbGFiZWxBbmdsZSArIChkaXJlY3Rpb24gPyAxIDogLTEpICogMzU5KTtcbiAgdmFyIHBhdGggPSBcIk1cIi5jb25jYXQoc3RhcnRQb2ludC54LCBcIixcIikuY29uY2F0KHN0YXJ0UG9pbnQueSwgXCJcXG4gICAgQVwiKS5jb25jYXQocmFkaXVzLCBcIixcIikuY29uY2F0KHJhZGl1cywgXCIsMCwxLFwiKS5jb25jYXQoZGlyZWN0aW9uID8gMCA6IDEsIFwiLFxcbiAgICBcIikuY29uY2F0KGVuZFBvaW50LngsIFwiLFwiKS5jb25jYXQoZW5kUG9pbnQueSk7XG4gIHZhciBpZCA9IGlzTmlsKGxhYmVsUHJvcHMuaWQpID8gdW5pcXVlSWQoJ3JlY2hhcnRzLXJhZGlhbC1saW5lLScpIDogbGFiZWxQcm9wcy5pZDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFwiLCBfZXh0ZW5kcyh7fSwgYXR0cnMsIHtcbiAgICBkb21pbmFudEJhc2VsaW5lOiBcImNlbnRyYWxcIixcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJhZGlhbC1iYXItbGFiZWwnLCBjbGFzc05hbWUpXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlZnNcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgICBpZDogaWQsXG4gICAgZDogcGF0aFxuICB9KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dFBhdGhcIiwge1xuICAgIHhsaW5rSHJlZjogXCIjXCIuY29uY2F0KGlkKVxuICB9LCBsYWJlbCkpO1xufTtcbnZhciBnZXRBdHRyc09mUG9sYXJMYWJlbCA9IGZ1bmN0aW9uIGdldEF0dHJzT2ZQb2xhckxhYmVsKHByb3BzKSB7XG4gIHZhciB2aWV3Qm94ID0gcHJvcHMudmlld0JveCxcbiAgICBvZmZzZXQgPSBwcm9wcy5vZmZzZXQsXG4gICAgcG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbjtcbiAgdmFyIF9yZWYyID0gdmlld0JveCxcbiAgICBjeCA9IF9yZWYyLmN4LFxuICAgIGN5ID0gX3JlZjIuY3ksXG4gICAgaW5uZXJSYWRpdXMgPSBfcmVmMi5pbm5lclJhZGl1cyxcbiAgICBvdXRlclJhZGl1cyA9IF9yZWYyLm91dGVyUmFkaXVzLFxuICAgIHN0YXJ0QW5nbGUgPSBfcmVmMi5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX3JlZjIuZW5kQW5nbGU7XG4gIHZhciBtaWRBbmdsZSA9IChzdGFydEFuZ2xlICsgZW5kQW5nbGUpIC8gMjtcbiAgaWYgKHBvc2l0aW9uID09PSAnb3V0c2lkZScpIHtcbiAgICB2YXIgX3BvbGFyVG9DYXJ0ZXNpYW4gPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgb3V0ZXJSYWRpdXMgKyBvZmZzZXQsIG1pZEFuZ2xlKSxcbiAgICAgIF94ID0gX3BvbGFyVG9DYXJ0ZXNpYW4ueCxcbiAgICAgIF95ID0gX3BvbGFyVG9DYXJ0ZXNpYW4ueTtcbiAgICByZXR1cm4ge1xuICAgICAgeDogX3gsXG4gICAgICB5OiBfeSxcbiAgICAgIHRleHRBbmNob3I6IF94ID49IGN4ID8gJ3N0YXJ0JyA6ICdlbmQnLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdjZW50ZXInKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IGN4LFxuICAgICAgeTogY3ksXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnY2VudGVyVG9wJykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBjeCxcbiAgICAgIHk6IGN5LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ3N0YXJ0J1xuICAgIH07XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnY2VudGVyQm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBjeCxcbiAgICAgIHk6IGN5LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogJ2VuZCdcbiAgICB9O1xuICB9XG4gIHZhciByID0gKGlubmVyUmFkaXVzICsgb3V0ZXJSYWRpdXMpIC8gMjtcbiAgdmFyIF9wb2xhclRvQ2FydGVzaWFuMiA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByLCBtaWRBbmdsZSksXG4gICAgeCA9IF9wb2xhclRvQ2FydGVzaWFuMi54LFxuICAgIHkgPSBfcG9sYXJUb0NhcnRlc2lhbjIueTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4LFxuICAgIHk6IHksXG4gICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gIH07XG59O1xudmFyIGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbCA9IGZ1bmN0aW9uIGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbChwcm9wcykge1xuICB2YXIgdmlld0JveCA9IHByb3BzLnZpZXdCb3gsXG4gICAgcGFyZW50Vmlld0JveCA9IHByb3BzLnBhcmVudFZpZXdCb3gsXG4gICAgb2Zmc2V0ID0gcHJvcHMub2Zmc2V0LFxuICAgIHBvc2l0aW9uID0gcHJvcHMucG9zaXRpb247XG4gIHZhciBfcmVmMyA9IHZpZXdCb3gsXG4gICAgeCA9IF9yZWYzLngsXG4gICAgeSA9IF9yZWYzLnksXG4gICAgd2lkdGggPSBfcmVmMy53aWR0aCxcbiAgICBoZWlnaHQgPSBfcmVmMy5oZWlnaHQ7XG5cbiAgLy8gRGVmaW5lIHZlcnRpY2FsIG9mZnNldHMgYW5kIHBvc2l0aW9uIGludmVydHMgYmFzZWQgb24gdGhlIHZhbHVlIGJlaW5nIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG4gIHZhciB2ZXJ0aWNhbFNpZ24gPSBoZWlnaHQgPj0gMCA/IDEgOiAtMTtcbiAgdmFyIHZlcnRpY2FsT2Zmc2V0ID0gdmVydGljYWxTaWduICogb2Zmc2V0O1xuICB2YXIgdmVydGljYWxFbmQgPSB2ZXJ0aWNhbFNpZ24gPiAwID8gJ2VuZCcgOiAnc3RhcnQnO1xuICB2YXIgdmVydGljYWxTdGFydCA9IHZlcnRpY2FsU2lnbiA+IDAgPyAnc3RhcnQnIDogJ2VuZCc7XG5cbiAgLy8gRGVmaW5lIGhvcml6b250YWwgb2Zmc2V0cyBhbmQgcG9zaXRpb24gaW52ZXJ0cyBiYXNlZCBvbiB0aGUgdmFsdWUgYmVpbmcgcG9zaXRpdmUgb3IgbmVnYXRpdmVcbiAgdmFyIGhvcml6b250YWxTaWduID0gd2lkdGggPj0gMCA/IDEgOiAtMTtcbiAgdmFyIGhvcml6b250YWxPZmZzZXQgPSBob3Jpem9udGFsU2lnbiAqIG9mZnNldDtcbiAgdmFyIGhvcml6b250YWxFbmQgPSBob3Jpem9udGFsU2lnbiA+IDAgPyAnZW5kJyA6ICdzdGFydCc7XG4gIHZhciBob3Jpem9udGFsU3RhcnQgPSBob3Jpem9udGFsU2lnbiA+IDAgPyAnc3RhcnQnIDogJ2VuZCc7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICB2YXIgYXR0cnMgPSB7XG4gICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgeTogeSAtIHZlcnRpY2FsU2lnbiAqIG9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsRW5kXG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhdHRycyksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICBoZWlnaHQ6IE1hdGgubWF4KHkgLSBwYXJlbnRWaWV3Qm94LnksIDApLFxuICAgICAgd2lkdGg6IHdpZHRoXG4gICAgfSA6IHt9KTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20nKSB7XG4gICAgdmFyIF9hdHRycyA9IHtcbiAgICAgIHg6IHggKyB3aWR0aCAvIDIsXG4gICAgICB5OiB5ICsgaGVpZ2h0ICsgdmVydGljYWxPZmZzZXQsXG4gICAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbFN0YXJ0XG4gICAgfTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfYXR0cnMpLCBwYXJlbnRWaWV3Qm94ID8ge1xuICAgICAgaGVpZ2h0OiBNYXRoLm1heChwYXJlbnRWaWV3Qm94LnkgKyBwYXJlbnRWaWV3Qm94LmhlaWdodCAtICh5ICsgaGVpZ2h0KSwgMCksXG4gICAgICB3aWR0aDogd2lkdGhcbiAgICB9IDoge30pO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgdmFyIF9hdHRyczIgPSB7XG4gICAgICB4OiB4IC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbEVuZCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX2F0dHJzMiksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICB3aWR0aDogTWF0aC5tYXgoX2F0dHJzMi54IC0gcGFyZW50Vmlld0JveC54LCAwKSxcbiAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgfSA6IHt9KTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdyaWdodCcpIHtcbiAgICB2YXIgX2F0dHJzMyA9IHtcbiAgICAgIHg6IHggKyB3aWR0aCArIGhvcml6b250YWxPZmZzZXQsXG4gICAgICB5OiB5ICsgaGVpZ2h0IC8gMixcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxTdGFydCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiAnbWlkZGxlJ1xuICAgIH07XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX2F0dHJzMyksIHBhcmVudFZpZXdCb3ggPyB7XG4gICAgICB3aWR0aDogTWF0aC5tYXgocGFyZW50Vmlld0JveC54ICsgcGFyZW50Vmlld0JveC53aWR0aCAtIF9hdHRyczMueCwgMCksXG4gICAgICBoZWlnaHQ6IGhlaWdodFxuICAgIH0gOiB7fSk7XG4gIH1cbiAgdmFyIHNpemVBdHRycyA9IHBhcmVudFZpZXdCb3ggPyB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH0gOiB7fTtcbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlTGVmdCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLyAyLFxuICAgICAgdGV4dEFuY2hvcjogaG9yaXpvbnRhbFN0YXJ0LFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVSaWdodCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLSBob3Jpem9udGFsT2Zmc2V0LFxuICAgICAgeTogeSArIGhlaWdodCAvIDIsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsRW5kLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdtaWRkbGUnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdpbnNpZGVUb3AnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC8gMixcbiAgICAgIHk6IHkgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6ICdtaWRkbGUnLFxuICAgICAgdmVydGljYWxBbmNob3I6IHZlcnRpY2FsU3RhcnRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZUJvdHRvbScpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgd2lkdGggLyAyLFxuICAgICAgeTogeSArIGhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0LFxuICAgICAgdGV4dEFuY2hvcjogJ21pZGRsZScsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxFbmRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVRvcExlZnQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIGhvcml6b250YWxPZmZzZXQsXG4gICAgICB5OiB5ICsgdmVydGljYWxPZmZzZXQsXG4gICAgICB0ZXh0QW5jaG9yOiBob3Jpem9udGFsU3RhcnQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxTdGFydFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlVG9wUmlnaHQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxFbmQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxTdGFydFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlQm90dG9tTGVmdCcpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxTdGFydCxcbiAgICAgIHZlcnRpY2FsQW5jaG9yOiB2ZXJ0aWNhbEVuZFxuICAgIH0sIHNpemVBdHRycyk7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnaW5zaWRlQm90dG9tUmlnaHQnKSB7XG4gICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoe1xuICAgICAgeDogeCArIHdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldCxcbiAgICAgIHk6IHkgKyBoZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldCxcbiAgICAgIHRleHRBbmNob3I6IGhvcml6b250YWxFbmQsXG4gICAgICB2ZXJ0aWNhbEFuY2hvcjogdmVydGljYWxFbmRcbiAgICB9LCBzaXplQXR0cnMpO1xuICB9XG4gIGlmIChpc09iamVjdChwb3NpdGlvbikgJiYgKGlzTnVtYmVyKHBvc2l0aW9uLngpIHx8IGlzUGVyY2VudChwb3NpdGlvbi54KSkgJiYgKGlzTnVtYmVyKHBvc2l0aW9uLnkpIHx8IGlzUGVyY2VudChwb3NpdGlvbi55KSkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgICB4OiB4ICsgZ2V0UGVyY2VudFZhbHVlKHBvc2l0aW9uLngsIHdpZHRoKSxcbiAgICAgIHk6IHkgKyBnZXRQZXJjZW50VmFsdWUocG9zaXRpb24ueSwgaGVpZ2h0KSxcbiAgICAgIHRleHRBbmNob3I6ICdlbmQnLFxuICAgICAgdmVydGljYWxBbmNob3I6ICdlbmQnXG4gICAgfSwgc2l6ZUF0dHJzKTtcbiAgfVxuICByZXR1cm4gX29iamVjdFNwcmVhZCh7XG4gICAgeDogeCArIHdpZHRoIC8gMixcbiAgICB5OiB5ICsgaGVpZ2h0IC8gMixcbiAgICB0ZXh0QW5jaG9yOiAnbWlkZGxlJyxcbiAgICB2ZXJ0aWNhbEFuY2hvcjogJ21pZGRsZSdcbiAgfSwgc2l6ZUF0dHJzKTtcbn07XG52YXIgaXNQb2xhciA9IGZ1bmN0aW9uIGlzUG9sYXIodmlld0JveCkge1xuICByZXR1cm4gJ2N4JyBpbiB2aWV3Qm94ICYmIGlzTnVtYmVyKHZpZXdCb3guY3gpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBMYWJlbChfcmVmNCkge1xuICB2YXIgX3JlZjQkb2Zmc2V0ID0gX3JlZjQub2Zmc2V0LFxuICAgIG9mZnNldCA9IF9yZWY0JG9mZnNldCA9PT0gdm9pZCAwID8gNSA6IF9yZWY0JG9mZnNldCxcbiAgICByZXN0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjQsIF9leGNsdWRlZCk7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgIG9mZnNldDogb2Zmc2V0XG4gIH0sIHJlc3RQcm9wcyk7XG4gIHZhciB2aWV3Qm94ID0gcHJvcHMudmlld0JveCxcbiAgICBwb3NpdGlvbiA9IHByb3BzLnBvc2l0aW9uLFxuICAgIHZhbHVlID0gcHJvcHMudmFsdWUsXG4gICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICBjb250ZW50ID0gcHJvcHMuY29udGVudCxcbiAgICBfcHJvcHMkY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgIGNsYXNzTmFtZSA9IF9wcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGNsYXNzTmFtZSxcbiAgICB0ZXh0QnJlYWtBbGwgPSBwcm9wcy50ZXh0QnJlYWtBbGw7XG4gIGlmICghdmlld0JveCB8fCBpc05pbCh2YWx1ZSkgJiYgaXNOaWwoY2hpbGRyZW4pICYmICEgLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGNvbnRlbnQpICYmICFpc0Z1bmN0aW9uKGNvbnRlbnQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoY29udGVudCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL2Nsb25lRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gIH1cbiAgdmFyIGxhYmVsO1xuICBpZiAoaXNGdW5jdGlvbihjb250ZW50KSkge1xuICAgIGxhYmVsID0gLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICAgIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KGxhYmVsKSkge1xuICAgICAgcmV0dXJuIGxhYmVsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsYWJlbCA9IGdldExhYmVsKHByb3BzKTtcbiAgfVxuICB2YXIgaXNQb2xhckxhYmVsID0gaXNQb2xhcih2aWV3Qm94KTtcbiAgdmFyIGF0dHJzID0gZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpO1xuICBpZiAoaXNQb2xhckxhYmVsICYmIChwb3NpdGlvbiA9PT0gJ2luc2lkZVN0YXJ0JyB8fCBwb3NpdGlvbiA9PT0gJ2luc2lkZUVuZCcgfHwgcG9zaXRpb24gPT09ICdlbmQnKSkge1xuICAgIHJldHVybiByZW5kZXJSYWRpYWxMYWJlbChwcm9wcywgbGFiZWwsIGF0dHJzKTtcbiAgfVxuICB2YXIgcG9zaXRpb25BdHRycyA9IGlzUG9sYXJMYWJlbCA/IGdldEF0dHJzT2ZQb2xhckxhYmVsKHByb3BzKSA6IGdldEF0dHJzT2ZDYXJ0ZXNpYW5MYWJlbChwcm9wcyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1sYWJlbCcsIGNsYXNzTmFtZSlcbiAgfSwgYXR0cnMsIHBvc2l0aW9uQXR0cnMsIHtcbiAgICBicmVha0FsbDogdGV4dEJyZWFrQWxsXG4gIH0pLCBsYWJlbCk7XG59XG5MYWJlbC5kaXNwbGF5TmFtZSA9ICdMYWJlbCc7XG52YXIgcGFyc2VWaWV3Qm94ID0gZnVuY3Rpb24gcGFyc2VWaWV3Qm94KHByb3BzKSB7XG4gIHZhciBjeCA9IHByb3BzLmN4LFxuICAgIGN5ID0gcHJvcHMuY3ksXG4gICAgYW5nbGUgPSBwcm9wcy5hbmdsZSxcbiAgICBzdGFydEFuZ2xlID0gcHJvcHMuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IHByb3BzLmVuZEFuZ2xlLFxuICAgIHIgPSBwcm9wcy5yLFxuICAgIHJhZGl1cyA9IHByb3BzLnJhZGl1cyxcbiAgICBpbm5lclJhZGl1cyA9IHByb3BzLmlubmVyUmFkaXVzLFxuICAgIG91dGVyUmFkaXVzID0gcHJvcHMub3V0ZXJSYWRpdXMsXG4gICAgeCA9IHByb3BzLngsXG4gICAgeSA9IHByb3BzLnksXG4gICAgdG9wID0gcHJvcHMudG9wLFxuICAgIGxlZnQgPSBwcm9wcy5sZWZ0LFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIGNsb2NrV2lzZSA9IHByb3BzLmNsb2NrV2lzZSxcbiAgICBsYWJlbFZpZXdCb3ggPSBwcm9wcy5sYWJlbFZpZXdCb3g7XG4gIGlmIChsYWJlbFZpZXdCb3gpIHtcbiAgICByZXR1cm4gbGFiZWxWaWV3Qm94O1xuICB9XG4gIGlmIChpc051bWJlcih3aWR0aCkgJiYgaXNOdW1iZXIoaGVpZ2h0KSkge1xuICAgIGlmIChpc051bWJlcih4KSAmJiBpc051bWJlcih5KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyKHRvcCkgJiYgaXNOdW1iZXIobGVmdCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHRvcCxcbiAgICAgICAgeTogbGVmdCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHgpICYmIGlzTnVtYmVyKHkpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5LFxuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDBcbiAgICB9O1xuICB9XG4gIGlmIChpc051bWJlcihjeCkgJiYgaXNOdW1iZXIoY3kpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUgfHwgYW5nbGUgfHwgMCxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZSB8fCBhbmdsZSB8fCAwLFxuICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzIHx8IDAsXG4gICAgICBvdXRlclJhZGl1czogb3V0ZXJSYWRpdXMgfHwgcmFkaXVzIHx8IHIgfHwgMCxcbiAgICAgIGNsb2NrV2lzZTogY2xvY2tXaXNlXG4gICAgfTtcbiAgfVxuICBpZiAocHJvcHMudmlld0JveCkge1xuICAgIHJldHVybiBwcm9wcy52aWV3Qm94O1xuICB9XG4gIHJldHVybiB7fTtcbn07XG52YXIgcGFyc2VMYWJlbCA9IGZ1bmN0aW9uIHBhcnNlTGFiZWwobGFiZWwsIHZpZXdCb3gpIHtcbiAgaWYgKCFsYWJlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChsYWJlbCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsLWltcGxpY2l0XCIsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzTnVtT3JTdHIobGFiZWwpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIixcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICB2YWx1ZTogbGFiZWxcbiAgICB9KTtcbiAgfVxuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChsYWJlbCkpIHtcbiAgICBpZiAobGFiZWwudHlwZSA9PT0gTGFiZWwpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGxhYmVsLCB7XG4gICAgICAgIGtleTogJ2xhYmVsLWltcGxpY2l0JyxcbiAgICAgICAgdmlld0JveDogdmlld0JveFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsLWltcGxpY2l0XCIsXG4gICAgICBjb250ZW50OiBsYWJlbCxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICB9KTtcbiAgfVxuICBpZiAoaXNGdW5jdGlvbihsYWJlbCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWwsIHtcbiAgICAgIGtleTogXCJsYWJlbC1pbXBsaWNpdFwiLFxuICAgICAgY29udGVudDogbGFiZWwsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94XG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwgX2V4dGVuZHMoe1xuICAgICAgdmlld0JveDogdmlld0JveFxuICAgIH0sIGxhYmVsLCB7XG4gICAgICBrZXk6IFwibGFiZWwtaW1wbGljaXRcIlxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG52YXIgcmVuZGVyQ2FsbEJ5UGFyZW50ID0gZnVuY3Rpb24gcmVuZGVyQ2FsbEJ5UGFyZW50KHBhcmVudFByb3BzLCB2aWV3Qm94KSB7XG4gIHZhciBjaGVja1Byb3BzTGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIGlmICghcGFyZW50UHJvcHMgfHwgIXBhcmVudFByb3BzLmNoaWxkcmVuICYmIGNoZWNrUHJvcHNMYWJlbCAmJiAhcGFyZW50UHJvcHMubGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBwYXJlbnRQcm9wcy5jaGlsZHJlbjtcbiAgdmFyIHBhcmVudFZpZXdCb3ggPSBwYXJzZVZpZXdCb3gocGFyZW50UHJvcHMpO1xuICB2YXIgZXhwbGljaXRDaGlsZHJlbiA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIExhYmVsKS5tYXAoZnVuY3Rpb24gKGNoaWxkLCBpbmRleCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICB2aWV3Qm94OiB2aWV3Qm94IHx8IHBhcmVudFZpZXdCb3gsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICBrZXk6IFwibGFiZWwtXCIuY29uY2F0KGluZGV4KVxuICAgIH0pO1xuICB9KTtcbiAgaWYgKCFjaGVja1Byb3BzTGFiZWwpIHtcbiAgICByZXR1cm4gZXhwbGljaXRDaGlsZHJlbjtcbiAgfVxuICB2YXIgaW1wbGljaXRMYWJlbCA9IHBhcnNlTGFiZWwocGFyZW50UHJvcHMubGFiZWwsIHZpZXdCb3ggfHwgcGFyZW50Vmlld0JveCk7XG4gIHJldHVybiBbaW1wbGljaXRMYWJlbF0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShleHBsaWNpdENoaWxkcmVuKSk7XG59O1xuTGFiZWwucGFyc2VWaWV3Qm94ID0gcGFyc2VWaWV3Qm94O1xuTGFiZWwucmVuZGVyQ2FsbEJ5UGFyZW50ID0gcmVuZGVyQ2FsbEJ5UGFyZW50OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXhjbHVkZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJrZXlzIiwib3duS2V5cyIsImUiLCJyIiwidCIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsImhhc093blByb3BlcnR5IiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJpc1ZhbGlkRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpc05pbCIsImlzRnVuY3Rpb24iLCJpc09iamVjdCIsImNsc3giLCJUZXh0IiwiZmluZEFsbEJ5VHlwZSIsImZpbHRlclByb3BzIiwiaXNOdW1PclN0ciIsImlzTnVtYmVyIiwiaXNQZXJjZW50IiwiZ2V0UGVyY2VudFZhbHVlIiwidW5pcXVlSWQiLCJtYXRoU2lnbiIsInBvbGFyVG9DYXJ0ZXNpYW4iLCJnZXRMYWJlbCIsInByb3BzIiwiZm9ybWF0dGVyIiwibGFiZWwiLCJjaGlsZHJlbiIsImdldERlbHRhQW5nbGUiLCJzdGFydEFuZ2xlIiwiZW5kQW5nbGUiLCJzaWduIiwiZGVsdGFBbmdsZSIsIk1hdGgiLCJtaW4iLCJhYnMiLCJyZW5kZXJSYWRpYWxMYWJlbCIsImxhYmVsUHJvcHMiLCJhdHRycyIsInBvc2l0aW9uIiwidmlld0JveCIsIm9mZnNldCIsImNsYXNzTmFtZSIsIl9yZWYiLCJjeCIsImN5IiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsImNsb2NrV2lzZSIsInJhZGl1cyIsImxhYmVsQW5nbGUiLCJkaXJlY3Rpb24iLCJzdGFydFBvaW50IiwiZW5kUG9pbnQiLCJwYXRoIiwiY29uY2F0IiwieCIsInkiLCJpZCIsImRvbWluYW50QmFzZWxpbmUiLCJkIiwieGxpbmtIcmVmIiwiZ2V0QXR0cnNPZlBvbGFyTGFiZWwiLCJfcmVmMiIsIm1pZEFuZ2xlIiwiX3BvbGFyVG9DYXJ0ZXNpYW4iLCJfeCIsIl95IiwidGV4dEFuY2hvciIsInZlcnRpY2FsQW5jaG9yIiwiX3BvbGFyVG9DYXJ0ZXNpYW4yIiwiZ2V0QXR0cnNPZkNhcnRlc2lhbkxhYmVsIiwicGFyZW50Vmlld0JveCIsIl9yZWYzIiwid2lkdGgiLCJoZWlnaHQiLCJ2ZXJ0aWNhbFNpZ24iLCJ2ZXJ0aWNhbE9mZnNldCIsInZlcnRpY2FsRW5kIiwidmVydGljYWxTdGFydCIsImhvcml6b250YWxTaWduIiwiaG9yaXpvbnRhbE9mZnNldCIsImhvcml6b250YWxFbmQiLCJob3Jpem9udGFsU3RhcnQiLCJtYXgiLCJfYXR0cnMiLCJfYXR0cnMyIiwiX2F0dHJzMyIsInNpemVBdHRycyIsImlzUG9sYXIiLCJMYWJlbCIsIl9yZWY0IiwiX3JlZjQkb2Zmc2V0IiwicmVzdFByb3BzIiwiY29udGVudCIsIl9wcm9wcyRjbGFzc05hbWUiLCJ0ZXh0QnJlYWtBbGwiLCJpc1BvbGFyTGFiZWwiLCJwb3NpdGlvbkF0dHJzIiwiYnJlYWtBbGwiLCJkaXNwbGF5TmFtZSIsInBhcnNlVmlld0JveCIsImFuZ2xlIiwidG9wIiwibGVmdCIsImxhYmVsVmlld0JveCIsInBhcnNlTGFiZWwiLCJ0eXBlIiwicmVuZGVyQ2FsbEJ5UGFyZW50IiwicGFyZW50UHJvcHMiLCJjaGVja1Byb3BzTGFiZWwiLCJ1bmRlZmluZWQiLCJleHBsaWNpdENoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJpbmRleCIsImltcGxpY2l0TGFiZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Label.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/LabelList.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/component/LabelList.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LabelList: () => (/* binding */ LabelList)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/last */ \"(ssr)/./node_modules/lodash/last.js\");\n/* harmony import */ var lodash_last__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_last__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Label__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Label */ \"(ssr)/./node_modules/recharts/es6/component/Label.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_ChartUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"valueAccessor\"\n], _excluded2 = [\n \"data\",\n \"dataKey\",\n \"clockWise\",\n \"id\",\n \"textBreakAll\"\n];\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\n\n\n\n\n\nvar defaultAccessor = function defaultAccessor(entry) {\n return Array.isArray(entry.value) ? lodash_last__WEBPACK_IMPORTED_MODULE_4___default()(entry.value) : entry.value;\n};\nfunction LabelList(_ref) {\n var _ref$valueAccessor = _ref.valueAccessor, valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor, restProps = _objectWithoutProperties(_ref, _excluded);\n var data = restProps.data, dataKey = restProps.dataKey, clockWise = restProps.clockWise, id = restProps.id, textBreakAll = restProps.textBreakAll, others = _objectWithoutProperties(restProps, _excluded2);\n if (!data || !data.length) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_5__.Layer, {\n className: \"recharts-label-list\"\n }, data.map(function(entry, index) {\n var value = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(dataKey) ? valueAccessor(entry, index) : (0,_util_ChartUtils__WEBPACK_IMPORTED_MODULE_6__.getValueByDataKey)(entry && entry.payload, dataKey);\n var idProps = lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Label__WEBPACK_IMPORTED_MODULE_7__.Label, _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.filterProps)(entry, true), others, idProps, {\n parentViewBox: entry.parentViewBox,\n value: value,\n textBreakAll: textBreakAll,\n viewBox: _Label__WEBPACK_IMPORTED_MODULE_7__.Label.parseViewBox(lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n ,\n index: index\n }));\n }));\n}\nLabelList.displayName = \"LabelList\";\nfunction parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n if (label === true) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(label) || lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default()(label)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n return null;\n}\nfunction renderCallByParent(parentProps, data) {\n var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n return null;\n }\n var children = parentProps.children;\n var explicitChildren = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_8__.findAllByType)(children, LabelList).map(function(child, index) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n data: data,\n // eslint-disable-next-line react/no-array-index-key\n key: \"labelList-\".concat(index)\n });\n });\n if (!checkPropsLabel) {\n return explicitChildren;\n }\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [\n implicitLabelList\n ].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MYWJlbExpc3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULElBQUlLLFlBQVk7SUFBQztDQUFnQixFQUMvQkMsYUFBYTtJQUFDO0lBQVE7SUFBVztJQUFhO0lBQU07Q0FBZTtBQUNyRSxTQUFTQyxtQkFBbUJDLEdBQUc7SUFBSSxPQUFPQyxtQkFBbUJELFFBQVFFLGlCQUFpQkYsUUFBUUcsNEJBQTRCSCxRQUFRSTtBQUFzQjtBQUN4SixTQUFTQTtJQUF1QixNQUFNLElBQUlDLFVBQVU7QUFBeUk7QUFDN0wsU0FBU0YsNEJBQTRCWCxDQUFDLEVBQUVjLE1BQU07SUFBSSxJQUFJLENBQUNkLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPZSxrQkFBa0JmLEdBQUdjO0lBQVMsSUFBSUUsSUFBSUMsT0FBT2IsU0FBUyxDQUFDYyxRQUFRLENBQUNDLElBQUksQ0FBQ25CLEdBQUdvQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZaEIsRUFBRUcsV0FBVyxFQUFFYSxJQUFJaEIsRUFBRUcsV0FBVyxDQUFDa0IsSUFBSTtJQUFFLElBQUlMLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9NLE1BQU1DLElBQUksQ0FBQ3ZCO0lBQUksSUFBSWdCLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FB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R0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvTGFiZWxMaXN0LmpzPzBmZDciXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInZhbHVlQWNjZXNzb3JcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJkYXRhXCIsIFwiZGF0YUtleVwiLCBcImNsb2NrV2lzZVwiLCBcImlkXCIsIFwidGV4dEJyZWFrQWxsXCJdO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc09iamVjdCBmcm9tICdsb2Rhc2gvaXNPYmplY3QnO1xuaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnbG9kYXNoL2lzRnVuY3Rpb24nO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgTGFiZWwgfSBmcm9tICcuL0xhYmVsJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vY29udGFpbmVyL0xheWVyJztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUsIGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGdldFZhbHVlQnlEYXRhS2V5IH0gZnJvbSAnLi4vdXRpbC9DaGFydFV0aWxzJztcbnZhciBkZWZhdWx0QWNjZXNzb3IgPSBmdW5jdGlvbiBkZWZhdWx0QWNjZXNzb3IoZW50cnkpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZW50cnkudmFsdWUpID8gbGFzdChlbnRyeS52YWx1ZSkgOiBlbnRyeS52YWx1ZTtcbn07XG5leHBvcnQgZnVuY3Rpb24gTGFiZWxMaXN0KF9yZWYpIHtcbiAgdmFyIF9yZWYkdmFsdWVBY2Nlc3NvciA9IF9yZWYudmFsdWVBY2Nlc3NvcixcbiAgICB2YWx1ZUFjY2Vzc29yID0gX3JlZiR2YWx1ZUFjY2Vzc29yID09PSB2b2lkIDAgPyBkZWZhdWx0QWNjZXNzb3IgOiBfcmVmJHZhbHVlQWNjZXNzb3IsXG4gICAgcmVzdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBkYXRhID0gcmVzdFByb3BzLmRhdGEsXG4gICAgZGF0YUtleSA9IHJlc3RQcm9wcy5kYXRhS2V5LFxuICAgIGNsb2NrV2lzZSA9IHJlc3RQcm9wcy5jbG9ja1dpc2UsXG4gICAgaWQgPSByZXN0UHJvcHMuaWQsXG4gICAgdGV4dEJyZWFrQWxsID0gcmVzdFByb3BzLnRleHRCcmVha0FsbCxcbiAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocmVzdFByb3BzLCBfZXhjbHVkZWQyKTtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYXllciwge1xuICAgIGNsYXNzTmFtZTogXCJyZWNoYXJ0cy1sYWJlbC1saXN0XCJcbiAgfSwgZGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgIHZhciB2YWx1ZSA9IGlzTmlsKGRhdGFLZXkpID8gdmFsdWVBY2Nlc3NvcihlbnRyeSwgaW5kZXgpIDogZ2V0VmFsdWVCeURhdGFLZXkoZW50cnkgJiYgZW50cnkucGF5bG9hZCwgZGF0YUtleSk7XG4gICAgdmFyIGlkUHJvcHMgPSBpc05pbChpZCkgPyB7fSA6IHtcbiAgICAgIGlkOiBcIlwiLmNvbmNhdChpZCwgXCItXCIpLmNvbmNhdChpbmRleClcbiAgICB9O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwgX2V4dGVuZHMoe30sIGZpbHRlclByb3BzKGVudHJ5LCB0cnVlKSwgb3RoZXJzLCBpZFByb3BzLCB7XG4gICAgICBwYXJlbnRWaWV3Qm94OiBlbnRyeS5wYXJlbnRWaWV3Qm94LFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGV4dEJyZWFrQWxsOiB0ZXh0QnJlYWtBbGwsXG4gICAgICB2aWV3Qm94OiBMYWJlbC5wYXJzZVZpZXdCb3goaXNOaWwoY2xvY2tXaXNlKSA/IGVudHJ5IDogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGNsb2NrV2lzZTogY2xvY2tXaXNlXG4gICAgICB9KSksXG4gICAgICBrZXk6IFwibGFiZWwtXCIuY29uY2F0KGluZGV4KSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuICAgICAgLFxuICAgICAgaW5kZXg6IGluZGV4XG4gICAgfSkpO1xuICB9KSk7XG59XG5MYWJlbExpc3QuZGlzcGxheU5hbWUgPSAnTGFiZWxMaXN0JztcbmZ1bmN0aW9uIHBhcnNlTGFiZWxMaXN0KGxhYmVsLCBkYXRhKSB7XG4gIGlmICghbGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAobGFiZWwgPT09IHRydWUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoTGFiZWxMaXN0LCB7XG4gICAgICBrZXk6IFwibGFiZWxMaXN0LWltcGxpY2l0XCIsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSk7XG4gIH1cbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQobGFiZWwpIHx8IGlzRnVuY3Rpb24obGFiZWwpKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExhYmVsTGlzdCwge1xuICAgICAga2V5OiBcImxhYmVsTGlzdC1pbXBsaWNpdFwiLFxuICAgICAgZGF0YTogZGF0YSxcbiAgICAgIGNvbnRlbnQ6IGxhYmVsXG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0KGxhYmVsKSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbExpc3QsIF9leHRlbmRzKHtcbiAgICAgIGRhdGE6IGRhdGFcbiAgICB9LCBsYWJlbCwge1xuICAgICAga2V5OiBcImxhYmVsTGlzdC1pbXBsaWNpdFwiXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2FsbEJ5UGFyZW50KHBhcmVudFByb3BzLCBkYXRhKSB7XG4gIHZhciBjaGVja1Byb3BzTGFiZWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7XG4gIGlmICghcGFyZW50UHJvcHMgfHwgIXBhcmVudFByb3BzLmNoaWxkcmVuICYmIGNoZWNrUHJvcHNMYWJlbCAmJiAhcGFyZW50UHJvcHMubGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2hpbGRyZW4gPSBwYXJlbnRQcm9wcy5jaGlsZHJlbjtcbiAgdmFyIGV4cGxpY2l0Q2hpbGRyZW4gPSBmaW5kQWxsQnlUeXBlKGNoaWxkcmVuLCBMYWJlbExpc3QpLm1hcChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICBrZXk6IFwibGFiZWxMaXN0LVwiLmNvbmNhdChpbmRleClcbiAgICB9KTtcbiAgfSk7XG4gIGlmICghY2hlY2tQcm9wc0xhYmVsKSB7XG4gICAgcmV0dXJuIGV4cGxpY2l0Q2hpbGRyZW47XG4gIH1cbiAgdmFyIGltcGxpY2l0TGFiZWxMaXN0ID0gcGFyc2VMYWJlbExpc3QocGFyZW50UHJvcHMubGFiZWwsIGRhdGEpO1xuICByZXR1cm4gW2ltcGxpY2l0TGFiZWxMaXN0XS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGV4cGxpY2l0Q2hpbGRyZW4pKTtcbn1cbkxhYmVsTGlzdC5yZW5kZXJDYWxsQnlQYXJlbnQgPSByZW5kZXJDYWxsQnlQYXJlbnQ7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJfZXh0ZW5kcyIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJhcmd1bWVudHMiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiUmVhY3QiLCJjbG9uZUVsZW1lbnQiLCJpc05pbCIsImlzT2JqZWN0IiwiaXNGdW5jdGlvbiIsImxhc3QiLCJMYWJlbCIsIkxheWVyIiwiZmluZEFsbEJ5VHlwZSIsImZpbHRlclByb3BzIiwiZ2V0VmFsdWVCeURhdGFLZXkiLCJkZWZhdWx0QWNjZXNzb3IiLCJlbnRyeSIsIkxhYmVsTGlzdCIsIl9yZWYiLCJfcmVmJHZhbHVlQWNjZXNzb3IiLCJ2YWx1ZUFjY2Vzc29yIiwicmVzdFByb3BzIiwiZGF0YSIsImRhdGFLZXkiLCJjbG9ja1dpc2UiLCJpZCIsInRleHRCcmVha0FsbCIsIm90aGVycyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsInBheWxvYWQiLCJpZFByb3BzIiwiY29uY2F0IiwicGFyZW50Vmlld0JveCIsInZpZXdCb3giLCJwYXJzZVZpZXdCb3giLCJkaXNwbGF5TmFtZSIsInBhcnNlTGFiZWxMaXN0IiwibGFiZWwiLCJpc1ZhbGlkRWxlbWVudCIsImNvbnRlbnQiLCJyZW5kZXJDYWxsQnlQYXJlbnQiLCJwYXJlbnRQcm9wcyIsImNoZWNrUHJvcHNMYWJlbCIsInVuZGVmaW5lZCIsImNoaWxkcmVuIiwiZXhwbGljaXRDaGlsZHJlbiIsImNoaWxkIiwiaW1wbGljaXRMYWJlbExpc3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/LabelList.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Legend.js":
/*!*******************************************************!*\
!*** ./node_modules/recharts/es6/component/Legend.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Legend: () => (/* binding */ Legend)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DefaultLegendContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DefaultLegendContent */ \"(ssr)/./node_modules/recharts/es6/component/DefaultLegendContent.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/payload/getUniqPayload */ \"(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"ref\"\n];\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Legend\n */ \n\n\n\nfunction defaultUniqBy(entry) {\n return entry.value;\n}\nfunction renderContent(content, props) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(content)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(content, props);\n }\n if (typeof content === \"function\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(content, props);\n }\n var ref = props.ref, otherProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_DefaultLegendContent__WEBPACK_IMPORTED_MODULE_1__.DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nvar Legend = /*#__PURE__*/ function(_PureComponent) {\n _inherits(Legend, _PureComponent);\n function Legend() {\n var _this;\n _classCallCheck(this, Legend);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, Legend, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"lastBoundingBox\", {\n width: -1,\n height: -1\n });\n return _this;\n }\n _createClass(Legend, [\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n },\n {\n key: \"getBBox\",\n value: function getBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var _box = this.wrapperNode.getBoundingClientRect();\n _box.height = this.wrapperNode.offsetHeight;\n _box.width = this.wrapperNode.offsetWidth;\n return _box;\n }\n return null;\n }\n },\n {\n key: \"updateBBox\",\n value: function updateBBox() {\n var onBBoxUpdate = this.props.onBBoxUpdate;\n var box = this.getBBox();\n if (box) {\n if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n this.lastBoundingBox.width = box.width;\n this.lastBoundingBox.height = box.height;\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n }\n } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n this.lastBoundingBox.width = -1;\n this.lastBoundingBox.height = -1;\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n }\n }\n },\n {\n key: \"getBBoxSnapshot\",\n value: function getBBoxSnapshot() {\n if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n return _objectSpread({}, this.lastBoundingBox);\n }\n return {\n width: 0,\n height: 0\n };\n }\n },\n {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props, layout = _this$props.layout, align = _this$props.align, verticalAlign = _this$props.verticalAlign, margin = _this$props.margin, chartWidth = _this$props.chartWidth, chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === \"center\" && layout === \"vertical\") {\n var _box2 = this.getBBoxSnapshot();\n hPos = {\n left: ((chartWidth || 0) - _box2.width) / 2\n };\n } else {\n hPos = align === \"right\" ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === \"middle\") {\n var _box3 = this.getBBoxSnapshot();\n vPos = {\n top: ((chartHeight || 0) - _box3.height) / 2\n };\n } else {\n vPos = verticalAlign === \"bottom\" ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n return _objectSpread(_objectSpread({}, hPos), vPos);\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props2 = this.props, content = _this$props2.content, width = _this$props2.width, height = _this$props2.height, wrapperStyle = _this$props2.wrapperStyle, payloadUniqBy = _this$props2.payloadUniqBy, payload = _this$props2.payload;\n var outerStyle = _objectSpread(_objectSpread({\n position: \"absolute\",\n width: width || \"auto\",\n height: height || \"auto\"\n }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: (0,_util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__.getUniqPayload)(payload, payloadUniqBy, defaultUniqBy)\n })));\n }\n }\n ], [\n {\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n if (layout === \"vertical\" && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_3__.isNumber)(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n if (layout === \"horizontal\") {\n return {\n width: item.props.width || chartWidth\n };\n }\n return null;\n }\n }\n ]);\n return Legend;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Legend, \"displayName\", \"Legend\");\n_defineProperty(Legend, \"defaultProps\", {\n iconSize: 14,\n layout: \"horizontal\",\n align: \"center\",\n verticalAlign: \"bottom\"\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9MZWdlbmQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULElBQUlLLFlBQVk7SUFBQztDQUFNO0FBQ3ZCLFNBQVNDLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlaLElBQUlVLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUixDQUFBQSxJQUFJQSxFQUFFYSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1Q7SUFBSTtJQUFFLE9BQU9TO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYs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QUNWM0IsUUFBUTtJQUNSQyxPQUFPO0lBQ1BDLGVBQWU7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvTGVnZW5kLmpzPzdmMmYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInJlZlwiXTtcbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgdHJ5IHsgdmFyIHQgPSAhQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyB9IGNhdGNoICh0KSB7fSByZXR1cm4gKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyByZXR1cm4gISF0OyB9KSgpOyB9XG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IExlZ2VuZFxuICovXG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IERlZmF1bHRMZWdlbmRDb250ZW50IH0gZnJvbSAnLi9EZWZhdWx0TGVnZW5kQ29udGVudCc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmltcG9ydCB7IGdldFVuaXFQYXlsb2FkIH0gZnJvbSAnLi4vdXRpbC9wYXlsb2FkL2dldFVuaXFQYXlsb2FkJztcbmZ1bmN0aW9uIGRlZmF1bHRVbmlxQnkoZW50cnkpIHtcbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29udGVudChjb250ZW50LCBwcm9wcykge1xuICBpZiAoIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjb250ZW50KSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoY29udGVudCwgcHJvcHMpO1xuICB9XG4gIHZhciByZWYgPSBwcm9wcy5yZWYsXG4gICAgb3RoZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KERlZmF1bHRMZWdlbmRDb250ZW50LCBvdGhlclByb3BzKTtcbn1cbnZhciBFUFMgPSAxO1xuZXhwb3J0IHZhciBMZWdlbmQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhMZWdlbmQsIF9QdXJlQ29tcG9uZW50KTtcbiAgZnVuY3Rpb24gTGVnZW5kKCkge1xuICAgIHZhciBfdGhpcztcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGVnZW5kKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIF90aGlzID0gX2NhbGxTdXBlcih0aGlzLCBMZWdlbmQsIFtdLmNvbmNhdChhcmdzKSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImxhc3RCb3VuZGluZ0JveFwiLCB7XG4gICAgICB3aWR0aDogLTEsXG4gICAgICBoZWlnaHQ6IC0xXG4gICAgfSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhMZWdlbmQsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy51cGRhdGVCQm94KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLnVwZGF0ZUJCb3goKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QkJveFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRCQm94KCkge1xuICAgICAgaWYgKHRoaXMud3JhcHBlck5vZGUgJiYgdGhpcy53cmFwcGVyTm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgdmFyIF9ib3ggPSB0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBfYm94LmhlaWdodCA9IHRoaXMud3JhcHBlck5vZGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBfYm94LndpZHRoID0gdGhpcy53cmFwcGVyTm9kZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgcmV0dXJuIF9ib3g7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlQkJveFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVCQm94KCkge1xuICAgICAgdmFyIG9uQkJveFVwZGF0ZSA9IHRoaXMucHJvcHMub25CQm94VXBkYXRlO1xuICAgICAgdmFyIGJveCA9IHRoaXMuZ2V0QkJveCgpO1xuICAgICAgaWYgKGJveCkge1xuICAgICAgICBpZiAoTWF0aC5hYnMoYm94LndpZHRoIC0gdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGgpID4gRVBTIHx8IE1hdGguYWJzKGJveC5oZWlnaHQgLSB0aGlzLmxhc3RCb3VuZGluZ0JveC5oZWlnaHQpID4gRVBTKSB7XG4gICAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggPSBib3gud2lkdGg7XG4gICAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ID0gYm94LmhlaWdodDtcbiAgICAgICAgICBpZiAob25CQm94VXBkYXRlKSB7XG4gICAgICAgICAgICBvbkJCb3hVcGRhdGUoYm94KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggIT09IC0xIHx8IHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3gud2lkdGggPSAtMTtcbiAgICAgICAgdGhpcy5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ID0gLTE7XG4gICAgICAgIGlmIChvbkJCb3hVcGRhdGUpIHtcbiAgICAgICAgICBvbkJCb3hVcGRhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0QkJveFNuYXBzaG90XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEJCb3hTbmFwc2hvdCgpIHtcbiAgICAgIGlmICh0aGlzLmxhc3RCb3VuZGluZ0JveC53aWR0aCA+PSAwICYmIHRoaXMubGFzdEJvdW5kaW5nQm94LmhlaWdodCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmxhc3RCb3VuZGluZ0JveCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgaGVpZ2h0OiAwXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREZWZhdWx0UG9zaXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGVmYXVsdFBvc2l0aW9uKHN0eWxlKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQsXG4gICAgICAgIGFsaWduID0gX3RoaXMkcHJvcHMuYWxpZ24sXG4gICAgICAgIHZlcnRpY2FsQWxpZ24gPSBfdGhpcyRwcm9wcy52ZXJ0aWNhbEFsaWduLFxuICAgICAgICBtYXJnaW4gPSBfdGhpcyRwcm9wcy5tYXJnaW4sXG4gICAgICAgIGNoYXJ0V2lkdGggPSBfdGhpcyRwcm9wcy5jaGFydFdpZHRoLFxuICAgICAgICBjaGFydEhlaWdodCA9IF90aGlzJHByb3BzLmNoYXJ0SGVpZ2h0O1xuICAgICAgdmFyIGhQb3MsIHZQb3M7XG4gICAgICBpZiAoIXN0eWxlIHx8IChzdHlsZS5sZWZ0ID09PSB1bmRlZmluZWQgfHwgc3R5bGUubGVmdCA9PT0gbnVsbCkgJiYgKHN0eWxlLnJpZ2h0ID09PSB1bmRlZmluZWQgfHwgc3R5bGUucmlnaHQgPT09IG51bGwpKSB7XG4gICAgICAgIGlmIChhbGlnbiA9PT0gJ2NlbnRlcicgJiYgbGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgdmFyIF9ib3gyID0gdGhpcy5nZXRCQm94U25hcHNob3QoKTtcbiAgICAgICAgICBoUG9zID0ge1xuICAgICAgICAgICAgbGVmdDogKChjaGFydFdpZHRoIHx8IDApIC0gX2JveDIud2lkdGgpIC8gMlxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaFBvcyA9IGFsaWduID09PSAncmlnaHQnID8ge1xuICAgICAgICAgICAgcmlnaHQ6IG1hcmdpbiAmJiBtYXJnaW4ucmlnaHQgfHwgMFxuICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICBsZWZ0OiBtYXJnaW4gJiYgbWFyZ2luLmxlZnQgfHwgMFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghc3R5bGUgfHwgKHN0eWxlLnRvcCA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLnRvcCA9PT0gbnVsbCkgJiYgKHN0eWxlLmJvdHRvbSA9PT0gdW5kZWZpbmVkIHx8IHN0eWxlLmJvdHRvbSA9PT0gbnVsbCkpIHtcbiAgICAgICAgaWYgKHZlcnRpY2FsQWxpZ24gPT09ICdtaWRkbGUnKSB7XG4gICAgICAgICAgdmFyIF9ib3gzID0gdGhpcy5nZXRCQm94U25hcHNob3QoKTtcbiAgICAgICAgICB2UG9zID0ge1xuICAgICAgICAgICAgdG9wOiAoKGNoYXJ0SGVpZ2h0IHx8IDApIC0gX2JveDMuaGVpZ2h0KSAvIDJcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZQb3MgPSB2ZXJ0aWNhbEFsaWduID09PSAnYm90dG9tJyA/IHtcbiAgICAgICAgICAgIGJvdHRvbTogbWFyZ2luICYmIG1hcmdpbi5ib3R0b20gfHwgMFxuICAgICAgICAgIH0gOiB7XG4gICAgICAgICAgICB0b3A6IG1hcmdpbiAmJiBtYXJnaW4udG9wIHx8IDBcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBoUG9zKSwgdlBvcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICBjb250ZW50ID0gX3RoaXMkcHJvcHMyLmNvbnRlbnQsXG4gICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMyLndpZHRoLFxuICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczIuaGVpZ2h0LFxuICAgICAgICB3cmFwcGVyU3R5bGUgPSBfdGhpcyRwcm9wczIud3JhcHBlclN0eWxlLFxuICAgICAgICBwYXlsb2FkVW5pcUJ5ID0gX3RoaXMkcHJvcHMyLnBheWxvYWRVbmlxQnksXG4gICAgICAgIHBheWxvYWQgPSBfdGhpcyRwcm9wczIucGF5bG9hZDtcbiAgICAgIHZhciBvdXRlclN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHdpZHRoOiB3aWR0aCB8fCAnYXV0bycsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0IHx8ICdhdXRvJ1xuICAgICAgfSwgdGhpcy5nZXREZWZhdWx0UG9zaXRpb24od3JhcHBlclN0eWxlKSksIHdyYXBwZXJTdHlsZSk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwicmVjaGFydHMtbGVnZW5kLXdyYXBwZXJcIixcbiAgICAgICAgc3R5bGU6IG91dGVyU3R5bGUsXG4gICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKG5vZGUpIHtcbiAgICAgICAgICBfdGhpczIud3JhcHBlck5vZGUgPSBub2RlO1xuICAgICAgICB9XG4gICAgICB9LCByZW5kZXJDb250ZW50KGNvbnRlbnQsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy5wcm9wcyksIHt9LCB7XG4gICAgICAgIHBheWxvYWQ6IGdldFVuaXFQYXlsb2FkKHBheWxvYWQsIHBheWxvYWRVbmlxQnksIGRlZmF1bHRVbmlxQnkpXG4gICAgICB9KSkpO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldFdpdGhIZWlnaHRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V2l0aEhlaWdodChpdGVtLCBjaGFydFdpZHRoKSB7XG4gICAgICB2YXIgbGF5b3V0ID0gaXRlbS5wcm9wcy5sYXlvdXQ7XG4gICAgICBpZiAobGF5b3V0ID09PSAndmVydGljYWwnICYmIGlzTnVtYmVyKGl0ZW0ucHJvcHMuaGVpZ2h0KSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlaWdodDogaXRlbS5wcm9wcy5oZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmIChsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdpZHRoOiBpdGVtLnByb3BzLndpZHRoIHx8IGNoYXJ0V2lkdGhcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gTGVnZW5kO1xufShQdXJlQ29tcG9uZW50KTtcbl9kZWZpbmVQcm9wZXJ0eShMZWdlbmQsIFwiZGlzcGxheU5hbWVcIiwgJ0xlZ2VuZCcpO1xuX2RlZmluZVByb3BlcnR5KExlZ2VuZCwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBpY29uU2l6ZTogMTQsXG4gIGxheW91dDogJ2hvcml6b250YWwnLFxuICBhbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdib3R0b20nXG59KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4Y2x1ZGVkIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJjYWxsIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRGVmYXVsdExlZ2VuZENvbnRlbnQiLCJpc051bWJlciIsImdldFVuaXFQYXlsb2FkIiwiZGVmYXVsdFVuaXFCeSIsImVudHJ5IiwicmVuZGVyQ29udGVudCIsImNvbnRlbnQiLCJpc1ZhbGlkRWxlbWVudCIsImNsb25lRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJvdGhlclByb3BzIiwiRVBTIiwiTGVnZW5kIiwiX1B1cmVDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0Iiwid2lkdGgiLCJoZWlnaHQiLCJjb21wb25lbnREaWRNb3VudCIsInVwZGF0ZUJCb3giLCJjb21wb25lbnREaWRVcGRhdGUiLCJnZXRCQm94Iiwid3JhcHBlck5vZGUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJfYm94Iiwib2Zmc2V0SGVpZ2h0Iiwib2Zmc2V0V2lkdGgiLCJvbkJCb3hVcGRhdGUiLCJib3giLCJNYXRoIiwiYWJzIiwibGFzdEJvdW5kaW5nQm94IiwiZ2V0QkJveFNuYXBzaG90IiwiZ2V0RGVmYXVsdFBvc2l0aW9uIiwic3R5bGUiLCJfdGhpcyRwcm9wcyIsImxheW91dCIsImFsaWduIiwidmVydGljYWxBbGlnbiIsIm1hcmdpbiIsImNoYXJ0V2lkdGgiLCJjaGFydEhlaWdodCIsImhQb3MiLCJ2UG9zIiwibGVmdCIsInVuZGVmaW5lZCIsInJpZ2h0IiwiX2JveDIiLCJ0b3AiLCJib3R0b20iLCJfYm94MyIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzMiIsIndyYXBwZXJTdHlsZSIsInBheWxvYWRVbmlxQnkiLCJwYXlsb2FkIiwib3V0ZXJTdHlsZSIsInBvc2l0aW9uIiwiY2xhc3NOYW1lIiwibm9kZSIsImdldFdpdGhIZWlnaHQiLCJpdGVtIiwiaWNvblNpemUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Legend.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/component/ResponsiveContainer.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ResponsiveContainer: () => (/* binding */ ResponsiveContainer)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/throttle */ \"(ssr)/./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-is */ \"(ssr)/./node_modules/react-is/index.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_LogUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/LogUtils */ \"(ssr)/./node_modules/recharts/es6/util/LogUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */ \n\n\n\n\n\n\nvar ResponsiveContainer = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function(_ref, ref) {\n var aspect = _ref.aspect, _ref$initialDimension = _ref.initialDimension, initialDimension = _ref$initialDimension === void 0 ? {\n width: -1,\n height: -1\n } : _ref$initialDimension, _ref$width = _ref.width, width = _ref$width === void 0 ? \"100%\" : _ref$width, _ref$height = _ref.height, height = _ref$height === void 0 ? \"100%\" : _ref$height, _ref$minWidth = _ref.minWidth, minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth, minHeight = _ref.minHeight, maxHeight = _ref.maxHeight, children = _ref.children, _ref$debounce = _ref.debounce, debounce = _ref$debounce === void 0 ? 0 : _ref$debounce, id = _ref.id, className = _ref.className, onResize = _ref.onResize, _ref$style = _ref.style, style = _ref$style === void 0 ? {} : _ref$style;\n var containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n var onResizeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n onResizeRef.current = onResize;\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useImperativeHandle)(ref, function() {\n return Object.defineProperty(containerRef.current, \"current\", {\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn(\"The usage of ref.current.current is deprecated and will no longer be supported.\");\n return containerRef.current;\n },\n configurable: true\n });\n });\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n containerWidth: initialDimension.width,\n containerHeight: initialDimension.height\n }), _useState2 = _slicedToArray(_useState, 2), sizes = _useState2[0], setSizes = _useState2[1];\n var setContainerSize = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(function(newWidth, newHeight) {\n setSizes(function(prevState) {\n var roundedWidth = Math.round(newWidth);\n var roundedHeight = Math.round(newHeight);\n if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n return prevState;\n }\n return {\n containerWidth: roundedWidth,\n containerHeight: roundedHeight\n };\n });\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n var callback = function callback(entries) {\n var _onResizeRef$current;\n var _entries$0$contentRec = entries[0].contentRect, containerWidth = _entries$0$contentRec.width, containerHeight = _entries$0$contentRec.height;\n setContainerSize(containerWidth, containerHeight);\n (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n };\n if (debounce > 0) {\n callback = lodash_throttle__WEBPACK_IMPORTED_MODULE_2___default()(callback, debounce, {\n trailing: true,\n leading: false\n });\n }\n var observer = new ResizeObserver(callback);\n var _containerRef$current = containerRef.current.getBoundingClientRect(), containerWidth = _containerRef$current.width, containerHeight = _containerRef$current.height;\n setContainerSize(containerWidth, containerHeight);\n observer.observe(containerRef.current);\n return function() {\n observer.disconnect();\n };\n }, [\n setContainerSize,\n debounce\n ]);\n var chartContent = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function() {\n var containerWidth = sizes.containerWidth, containerHeight = sizes.containerHeight;\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_4__.warn)((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(width) || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_4__.warn)(!aspect || aspect > 0, \"The aspect(%s) must be greater than zero.\", aspect);\n var calculatedWidth = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(width) ? containerWidth : width;\n var calculatedHeight = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isPercent)(height) ? containerHeight : height;\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n }\n // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n (0,_util_LogUtils__WEBPACK_IMPORTED_MODULE_4__.warn)(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n var isCharts = !Array.isArray(children) && (0,react_is__WEBPACK_IMPORTED_MODULE_3__.isElement)(children) && (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.getDisplayName)(children.type).endsWith(\"Chart\");\n return react__WEBPACK_IMPORTED_MODULE_1___default().Children.map(children, function(child) {\n if ((0,react_is__WEBPACK_IMPORTED_MODULE_3__.isElement)(child)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(child, _objectSpread({\n width: calculatedWidth,\n height: calculatedHeight\n }, isCharts ? {\n style: _objectSpread({\n height: \"100%\",\n width: \"100%\",\n maxHeight: calculatedHeight,\n maxWidth: calculatedWidth\n }, child.props.style)\n } : {}));\n }\n return child;\n });\n }, [\n aspect,\n children,\n height,\n maxHeight,\n minHeight,\n minWidth,\n sizes,\n width\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(\"div\", {\n id: id ? \"\".concat(id) : undefined,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"recharts-responsive-container\", className),\n style: _objectSpread(_objectSpread({}, style), {}, {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n }),\n ref: containerRef\n }, chartContent);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9SZXNwb25zaXZlQ29udGFpbmVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0ssUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSUMsT0FBT0MsSUFBSSxDQUFDSjtJQUFJLElBQUlHLE9BQU9FLHFCQUFxQixFQUFFO1FBQUUsSUFBSVgsSUFBSVMsT0FBT0UscUJBQXFCLENBQUNMO1FBQUlDLEtBQU1QLENBQUFBLElBQUlBLEVBQUVZLE1BQU0sQ0FBQyxTQUFVTCxDQUFDO1lBQUksT0FBT0UsT0FBT0ksd0JBQXdCLENBQUNQLEdBQUdDLEdBQUdPLFVBQVU7UUFBRSxFQUFDLEdBQUlOLEVBQUVPLElBQUksQ0FBQ0MsS0FBSyxDQUFDUixHQUFHUjtJQUFJO0lBQUUsT0FBT1E7QUFBRztBQUM5UCxTQUFTUyxjQUFjWCxDQUFDO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlXLFVBQVVDLE1BQU0sRUFBRVosSUFBSztRQUFFLElBQUlDLElBQUksUUFBUVUsU0FBUyxDQUFDWCxFQUFFLEdBQUdXLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHLENBQUM7UUFBR0EsSUFBSSxJQUFJRixRQUFRSSxPQUFPRCxJQUFJLENBQUMsR0FBR1ksT0FBTyxDQUFDLFNBQVViLENBQUM7WUFBSWMsZ0JBQWdCZixHQUFHQyxHQUFH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ZSxTQUFTNEMsSUFBSSxFQUFFQyxRQUFRLENBQUM7UUFDekcsT0FBT3pFLHFEQUFjLENBQUMyRSxHQUFHLENBQUMvQyxVQUFVLFNBQVVnRCxLQUFLO1lBQ2pELElBQUlsRSxtREFBU0EsQ0FBQ2tFLFFBQVE7Z0JBQ3BCLE9BQU8sV0FBVyxHQUFFMUUsbURBQVlBLENBQUMwRSxPQUFPMUgsY0FBYztvQkFDcERrRSxPQUFPaUQ7b0JBQ1BoRCxRQUFRaUQ7Z0JBQ1YsR0FBR0MsV0FBVztvQkFDWnBDLE9BQU9qRixjQUFjO3dCQUNuQm1FLFFBQVE7d0JBQ1JELE9BQU87d0JBQ1BPLFdBQVcyQzt3QkFDWE8sVUFBVVI7b0JBQ1osR0FBR08sTUFBTUUsS0FBSyxDQUFDM0MsS0FBSztnQkFDdEIsSUFBSSxDQUFDO1lBQ1A7WUFDQSxPQUFPeUM7UUFDVDtJQUNGLEdBQUc7UUFBQzNEO1FBQVFXO1FBQVVQO1FBQVFNO1FBQVdEO1FBQVdEO1FBQVVvQjtRQUFPekI7S0FBTTtJQUMzRSxPQUFPLFdBQVcsR0FBRXBCLDBEQUFtQixDQUFDLE9BQU87UUFDN0MrQixJQUFJQSxLQUFLLEdBQUdpRCxNQUFNLENBQUNqRCxNQUFNa0Q7UUFDekJqRCxXQUFXakMsZ0RBQUlBLENBQUMsaUNBQWlDaUM7UUFDakRHLE9BQU9qRixjQUFjQSxjQUFjLENBQUMsR0FBR2lGLFFBQVEsQ0FBQyxHQUFHO1lBQ2pEZixPQUFPQTtZQUNQQyxRQUFRQTtZQUNSSSxVQUFVQTtZQUNWQyxXQUFXQTtZQUNYQyxXQUFXQTtRQUNiO1FBQ0FYLEtBQUtvQjtJQUNQLEdBQUdnQztBQUNMLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvUmVzcG9uc2l2ZUNvbnRhaW5lci5qcz8wYWZjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7IHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07IGlmIChudWxsICE9IHQpIHsgdmFyIGUsIG4sIGksIHUsIGEgPSBbXSwgZiA9ICEwLCBvID0gITE7IHRyeSB7IGlmIChpID0gKHQgPSB0LmNhbGwocikpLm5leHQsIDAgPT09IGwpIHsgaWYgKE9iamVjdCh0KSAhPT0gdCkgcmV0dXJuOyBmID0gITE7IH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTsgfSBjYXRjaCAocikgeyBvID0gITAsIG4gPSByOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47IH0gZmluYWxseSB7IGlmIChvKSB0aHJvdyBuOyB9IH0gcmV0dXJuIGE7IH0gfVxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgV3JhcHBlciBjb21wb25lbnQgdG8gbWFrZSBjaGFydHMgYWRhcHQgdG8gdGhlIHNpemUgb2YgcGFyZW50ICogRE9NXG4gKi9cbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIGNsb25lRWxlbWVudCwgdXNlU3RhdGUsIHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSAncmVhY3QtaXMnO1xuaW1wb3J0IHsgaXNQZXJjZW50IH0gZnJvbSAnLi4vdXRpbC9EYXRhVXRpbHMnO1xuaW1wb3J0IHsgd2FybiB9IGZyb20gJy4uL3V0aWwvTG9nVXRpbHMnO1xuaW1wb3J0IHsgZ2V0RGlzcGxheU5hbWUgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuZXhwb3J0IHZhciBSZXNwb25zaXZlQ29udGFpbmVyID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgYXNwZWN0ID0gX3JlZi5hc3BlY3QsXG4gICAgX3JlZiRpbml0aWFsRGltZW5zaW9uID0gX3JlZi5pbml0aWFsRGltZW5zaW9uLFxuICAgIGluaXRpYWxEaW1lbnNpb24gPSBfcmVmJGluaXRpYWxEaW1lbnNpb24gPT09IHZvaWQgMCA/IHtcbiAgICAgIHdpZHRoOiAtMSxcbiAgICAgIGhlaWdodDogLTFcbiAgICB9IDogX3JlZiRpbml0aWFsRGltZW5zaW9uLFxuICAgIF9yZWYkd2lkdGggPSBfcmVmLndpZHRoLFxuICAgIHdpZHRoID0gX3JlZiR3aWR0aCA9PT0gdm9pZCAwID8gJzEwMCUnIDogX3JlZiR3aWR0aCxcbiAgICBfcmVmJGhlaWdodCA9IF9yZWYuaGVpZ2h0LFxuICAgIGhlaWdodCA9IF9yZWYkaGVpZ2h0ID09PSB2b2lkIDAgPyAnMTAwJScgOiBfcmVmJGhlaWdodCxcbiAgICBfcmVmJG1pbldpZHRoID0gX3JlZi5taW5XaWR0aCxcbiAgICBtaW5XaWR0aCA9IF9yZWYkbWluV2lkdGggPT09IHZvaWQgMCA/IDAgOiBfcmVmJG1pbldpZHRoLFxuICAgIG1pbkhlaWdodCA9IF9yZWYubWluSGVpZ2h0LFxuICAgIG1heEhlaWdodCA9IF9yZWYubWF4SGVpZ2h0LFxuICAgIGNoaWxkcmVuID0gX3JlZi5jaGlsZHJlbixcbiAgICBfcmVmJGRlYm91bmNlID0gX3JlZi5kZWJvdW5jZSxcbiAgICBkZWJvdW5jZSA9IF9yZWYkZGVib3VuY2UgPT09IHZvaWQgMCA/IDAgOiBfcmVmJGRlYm91bmNlLFxuICAgIGlkID0gX3JlZi5pZCxcbiAgICBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICBvblJlc2l6ZSA9IF9yZWYub25SZXNpemUsXG4gICAgX3JlZiRzdHlsZSA9IF9yZWYuc3R5bGUsXG4gICAgc3R5bGUgPSBfcmVmJHN0eWxlID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkc3R5bGU7XG4gIHZhciBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBvblJlc2l6ZVJlZiA9IHVzZVJlZigpO1xuICBvblJlc2l6ZVJlZi5jdXJyZW50ID0gb25SZXNpemU7XG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250YWluZXJSZWYuY3VycmVudCwgJ2N1cnJlbnQnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgdXNhZ2Ugb2YgcmVmLmN1cnJlbnQuY3VycmVudCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vIGxvbmdlciBiZSBzdXBwb3J0ZWQuJyk7XG4gICAgICAgIHJldHVybiBjb250YWluZXJSZWYuY3VycmVudDtcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfSk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7XG4gICAgICBjb250YWluZXJXaWR0aDogaW5pdGlhbERpbWVuc2lvbi53aWR0aCxcbiAgICAgIGNvbnRhaW5lckhlaWdodDogaW5pdGlhbERpbWVuc2lvbi5oZWlnaHRcbiAgICB9KSxcbiAgICBfdXNlU3RhdGUyID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlLCAyKSxcbiAgICBzaXplcyA9IF91c2VTdGF0ZTJbMF0sXG4gICAgc2V0U2l6ZXMgPSBfdXNlU3RhdGUyWzFdO1xuICB2YXIgc2V0Q29udGFpbmVyU2l6ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuZXdXaWR0aCwgbmV3SGVpZ2h0KSB7XG4gICAgc2V0U2l6ZXMoZnVuY3Rpb24gKHByZXZTdGF0ZSkge1xuICAgICAgdmFyIHJvdW5kZWRXaWR0aCA9IE1hdGgucm91bmQobmV3V2lkdGgpO1xuICAgICAgdmFyIHJvdW5kZWRIZWlnaHQgPSBNYXRoLnJvdW5kKG5ld0hlaWdodCk7XG4gICAgICBpZiAocHJldlN0YXRlLmNvbnRhaW5lcldpZHRoID09PSByb3VuZGVkV2lkdGggJiYgcHJldlN0YXRlLmNvbnRhaW5lckhlaWdodCA9PT0gcm91bmRlZEhlaWdodCkge1xuICAgICAgICByZXR1cm4gcHJldlN0YXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGFpbmVyV2lkdGg6IHJvdW5kZWRXaWR0aCxcbiAgICAgICAgY29udGFpbmVySGVpZ2h0OiByb3VuZGVkSGVpZ2h0XG4gICAgICB9O1xuICAgIH0pO1xuICB9LCBbXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZW50cmllcykge1xuICAgICAgdmFyIF9vblJlc2l6ZVJlZiRjdXJyZW50O1xuICAgICAgdmFyIF9lbnRyaWVzJDAkY29udGVudFJlYyA9IGVudHJpZXNbMF0uY29udGVudFJlY3QsXG4gICAgICAgIGNvbnRhaW5lcldpZHRoID0gX2VudHJpZXMkMCRjb250ZW50UmVjLndpZHRoLFxuICAgICAgICBjb250YWluZXJIZWlnaHQgPSBfZW50cmllcyQwJGNvbnRlbnRSZWMuaGVpZ2h0O1xuICAgICAgc2V0Q29udGFpbmVyU2l6ZShjb250YWluZXJXaWR0aCwgY29udGFpbmVySGVpZ2h0KTtcbiAgICAgIChfb25SZXNpemVSZWYkY3VycmVudCA9IG9uUmVzaXplUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9vblJlc2l6ZVJlZiRjdXJyZW50ID09PSB2b2lkIDAgfHwgX29uUmVzaXplUmVmJGN1cnJlbnQuY2FsbChvblJlc2l6ZVJlZiwgY29udGFpbmVyV2lkdGgsIGNvbnRhaW5lckhlaWdodCk7XG4gICAgfTtcbiAgICBpZiAoZGVib3VuY2UgPiAwKSB7XG4gICAgICBjYWxsYmFjayA9IHRocm90dGxlKGNhbGxiYWNrLCBkZWJvdW5jZSwge1xuICAgICAgICB0cmFpbGluZzogdHJ1ZSxcbiAgICAgICAgbGVhZGluZzogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgIHZhciBfY29udGFpbmVyUmVmJGN1cnJlbnQgPSBjb250YWluZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIGNvbnRhaW5lcldpZHRoID0gX2NvbnRhaW5lclJlZiRjdXJyZW50LndpZHRoLFxuICAgICAgY29udGFpbmVySGVpZ2h0ID0gX2NvbnRhaW5lclJlZiRjdXJyZW50LmhlaWdodDtcbiAgICBzZXRDb250YWluZXJTaXplKGNvbnRhaW5lcldpZHRoLCBjb250YWluZXJIZWlnaHQpO1xuICAgIG9ic2VydmVyLm9ic2VydmUoY29udGFpbmVyUmVmLmN1cnJlbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfTtcbiAgfSwgW3NldENvbnRhaW5lclNpemUsIGRlYm91bmNlXSk7XG4gIHZhciBjaGFydENvbnRlbnQgPSB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY29udGFpbmVyV2lkdGggPSBzaXplcy5jb250YWluZXJXaWR0aCxcbiAgICAgIGNvbnRhaW5lckhlaWdodCA9IHNpemVzLmNvbnRhaW5lckhlaWdodDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPCAwIHx8IGNvbnRhaW5lckhlaWdodCA8IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB3YXJuKGlzUGVyY2VudCh3aWR0aCkgfHwgaXNQZXJjZW50KGhlaWdodCksIFwiVGhlIHdpZHRoKCVzKSBhbmQgaGVpZ2h0KCVzKSBhcmUgYm90aCBmaXhlZCBudW1iZXJzLFxcbiAgICAgICBtYXliZSB5b3UgZG9uJ3QgbmVlZCB0byB1c2UgYSBSZXNwb25zaXZlQ29udGFpbmVyLlwiLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB3YXJuKCFhc3BlY3QgfHwgYXNwZWN0ID4gMCwgJ1RoZSBhc3BlY3QoJXMpIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uJywgYXNwZWN0KTtcbiAgICB2YXIgY2FsY3VsYXRlZFdpZHRoID0gaXNQZXJjZW50KHdpZHRoKSA/IGNvbnRhaW5lcldpZHRoIDogd2lkdGg7XG4gICAgdmFyIGNhbGN1bGF0ZWRIZWlnaHQgPSBpc1BlcmNlbnQoaGVpZ2h0KSA/IGNvbnRhaW5lckhlaWdodCA6IGhlaWdodDtcbiAgICBpZiAoYXNwZWN0ICYmIGFzcGVjdCA+IDApIHtcbiAgICAgIC8vIFByZXNlcnZlIHRoZSBkZXNpcmVkIGFzcGVjdCByYXRpb1xuICAgICAgaWYgKGNhbGN1bGF0ZWRXaWR0aCkge1xuICAgICAgICAvLyBXaWxsIGRlZmF1bHQgdG8gdXNpbmcgd2lkdGggZm9yIGFzcGVjdCByYXRpb1xuICAgICAgICBjYWxjdWxhdGVkSGVpZ2h0ID0gY2FsY3VsYXRlZFdpZHRoIC8gYXNwZWN0O1xuICAgICAgfSBlbHNlIGlmIChjYWxjdWxhdGVkSGVpZ2h0KSB7XG4gICAgICAgIC8vIEJ1dCB3ZSBzaG91bGQgYWxzbyB0YWtlIGhlaWdodCBpbnRvIGNvbnNpZGVyYXRpb25cbiAgICAgICAgY2FsY3VsYXRlZFdpZHRoID0gY2FsY3VsYXRlZEhlaWdodCAqIGFzcGVjdDtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbWF4SGVpZ2h0IGlzIHNldCwgb3ZlcndyaXRlIGlmIGNhbGN1bGF0ZWRIZWlnaHQgaXMgZ3JlYXRlciB0aGFuIG1heEhlaWdodFxuICAgICAgaWYgKG1heEhlaWdodCAmJiBjYWxjdWxhdGVkSGVpZ2h0ID4gbWF4SGVpZ2h0KSB7XG4gICAgICAgIGNhbGN1bGF0ZWRIZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHdhcm4oY2FsY3VsYXRlZFdpZHRoID4gMCB8fCBjYWxjdWxhdGVkSGVpZ2h0ID4gMCwgXCJUaGUgd2lkdGgoJXMpIGFuZCBoZWlnaHQoJXMpIG9mIGNoYXJ0IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMCxcXG4gICAgICAgcGxlYXNlIGNoZWNrIHRoZSBzdHlsZSBvZiBjb250YWluZXIsIG9yIHRoZSBwcm9wcyB3aWR0aCglcykgYW5kIGhlaWdodCglcyksXFxuICAgICAgIG9yIGFkZCBhIG1pbldpZHRoKCVzKSBvciBtaW5IZWlnaHQoJXMpIG9yIHVzZSBhc3BlY3QoJXMpIHRvIGNvbnRyb2wgdGhlXFxuICAgICAgIGhlaWdodCBhbmQgd2lkdGguXCIsIGNhbGN1bGF0ZWRXaWR0aCwgY2FsY3VsYXRlZEhlaWdodCwgd2lkdGgsIGhlaWdodCwgbWluV2lkdGgsIG1pbkhlaWdodCwgYXNwZWN0KTtcbiAgICB2YXIgaXNDaGFydHMgPSAhQXJyYXkuaXNBcnJheShjaGlsZHJlbikgJiYgaXNFbGVtZW50KGNoaWxkcmVuKSAmJiBnZXREaXNwbGF5TmFtZShjaGlsZHJlbi50eXBlKS5lbmRzV2l0aCgnQ2hhcnQnKTtcbiAgICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4ubWFwKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGNoaWxkLCBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB3aWR0aDogY2FsY3VsYXRlZFdpZHRoLFxuICAgICAgICAgIGhlaWdodDogY2FsY3VsYXRlZEhlaWdodFxuICAgICAgICB9LCBpc0NoYXJ0cyA/IHtcbiAgICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IGNhbGN1bGF0ZWRIZWlnaHQsXG4gICAgICAgICAgICBtYXhXaWR0aDogY2FsY3VsYXRlZFdpZHRoXG4gICAgICAgICAgfSwgY2hpbGQucHJvcHMuc3R5bGUpXG4gICAgICAgIH0gOiB7fSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH0pO1xuICB9LCBbYXNwZWN0LCBjaGlsZHJlbiwgaGVpZ2h0LCBtYXhIZWlnaHQsIG1pbkhlaWdodCwgbWluV2lkdGgsIHNpemVzLCB3aWR0aF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGlkOiBpZCA/IFwiXCIuY29uY2F0KGlkKSA6IHVuZGVmaW5lZCxcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLXJlc3BvbnNpdmUtY29udGFpbmVyJywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzdHlsZSksIHt9LCB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1pbldpZHRoOiBtaW5XaWR0aCxcbiAgICAgIG1pbkhlaWdodDogbWluSGVpZ2h0LFxuICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHRcbiAgICB9KSxcbiAgICByZWY6IGNvbnRhaW5lclJlZlxuICB9LCBjaGFydENvbnRlbnQpO1xufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwibCIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwiaXNBcnJheSIsImNsc3giLCJSZWFjdCIsImZvcndhcmRSZWYiLCJjbG9uZUVsZW1lbnQiLCJ1c2VTdGF0ZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlQ2FsbGJhY2siLCJ0aHJvdHRsZSIsImlzRWxlbWVudCIsImlzUGVyY2VudCIsIndhcm4iLCJnZXREaXNwbGF5TmFtZSIsIlJlc3BvbnNpdmVDb250YWluZXIiLCJfcmVmIiwicmVmIiwiYXNwZWN0IiwiX3JlZiRpbml0aWFsRGltZW5zaW9uIiwiaW5pdGlhbERpbWVuc2lvbiIsIndpZHRoIiwiaGVpZ2h0IiwiX3JlZiR3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiX3JlZiRtaW5XaWR0aCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiY2hpbGRyZW4iLCJfcmVmJGRlYm91bmNlIiwiZGVib3VuY2UiLCJpZCIsImNsYXNzTmFtZSIsIm9uUmVzaXplIiwiX3JlZiRzdHlsZSIsInN0eWxlIiwiY29udGFpbmVyUmVmIiwib25SZXNpemVSZWYiLCJjdXJyZW50IiwiZ2V0IiwiY29uc29sZSIsIl91c2VTdGF0ZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVySGVpZ2h0IiwiX3VzZVN0YXRlMiIsInNpemVzIiwic2V0U2l6ZXMiLCJzZXRDb250YWluZXJTaXplIiwibmV3V2lkdGgiLCJuZXdIZWlnaHQiLCJwcmV2U3RhdGUiLCJyb3VuZGVkV2lkdGgiLCJNYXRoIiwicm91bmQiLCJyb3VuZGVkSGVpZ2h0IiwiY2FsbGJhY2siLCJlbnRyaWVzIiwiX29uUmVzaXplUmVmJGN1cnJlbnQiLCJfZW50cmllcyQwJGNvbnRlbnRSZWMiLCJjb250ZW50UmVjdCIsInRyYWlsaW5nIiwibGVhZGluZyIsIm9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJfY29udGFpbmVyUmVmJGN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsImNoYXJ0Q29udGVudCIsImNhbGN1bGF0ZWRXaWR0aCIsImNhbGN1bGF0ZWRIZWlnaHQiLCJpc0NoYXJ0cyIsInR5cGUiLCJlbmRzV2l0aCIsIkNoaWxkcmVuIiwibWFwIiwiY2hpbGQiLCJtYXhXaWR0aCIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImNvbmNhdCIsInVuZGVmaW5lZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/ResponsiveContainer.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Text.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/component/Text.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Text: () => (/* binding */ Text)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/DOMUtils */ \"(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\");\n/* harmony import */ var _util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReduceCSSCalc */ \"(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js\");\nvar _excluded = [\n \"x\",\n \"y\",\n \"lineHeight\",\n \"capHeight\",\n \"scaleToFit\",\n \"textAnchor\",\n \"verticalAnchor\",\n \"fill\"\n], _excluded2 = [\n \"dx\",\n \"dy\",\n \"angle\",\n \"className\",\n \"breakAll\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\n\n\n\n\n\n\n\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n var children = _ref.children, breakAll = _ref.breakAll, style = _ref.style;\n try {\n var words = [];\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children)) {\n if (breakAll) {\n words = children.toString().split(\"\");\n } else {\n words = children.toString().split(BREAKING_SPACES);\n }\n }\n var wordsWithComputedWidth = words.map(function(word) {\n return {\n word: word,\n width: (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__.getStringSize)(word, style).width\n };\n });\n var spaceWidth = breakAll ? 0 : (0,_util_DOMUtils__WEBPACK_IMPORTED_MODULE_3__.getStringSize)(\"\\xa0\", style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n var maxLines = _ref2.maxLines, children = _ref2.children, style = _ref2.style, breakAll = _ref2.breakAll;\n var shouldLimitLines = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(maxLines);\n var text = children;\n var calculate = function calculate() {\n var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return words.reduce(function(result, _ref3) {\n var word = _ref3.word, width = _ref3.width;\n var currentLine = result[result.length - 1];\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [\n word\n ],\n width: width\n };\n result.push(newLine);\n }\n return result;\n }, []);\n };\n var originalResult = calculate(initialWordsWithComputedWith);\n var findLongestLine = function findLongestLine(words) {\n return words.reduce(function(a, b) {\n return a.width > b.width ? a : b;\n });\n };\n if (!shouldLimitLines) {\n return originalResult;\n }\n var suffix = \"…\";\n var checkOverflow = function checkOverflow(index) {\n var tempText = text.slice(0, index);\n var words = calculateWordWidths({\n breakAll: breakAll,\n style: style,\n children: tempText + suffix\n }).wordsWithComputedWidth;\n var result = calculate(words);\n var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n return [\n doesOverflow,\n result\n ];\n };\n var start = 0;\n var end = text.length - 1;\n var iterations = 0;\n var trimmedResult;\n while(start <= end && iterations <= text.length - 1){\n var middle = Math.floor((start + end) / 2);\n var prev = middle - 1;\n var _checkOverflow = checkOverflow(prev), _checkOverflow2 = _slicedToArray(_checkOverflow, 2), doesPrevOverflow = _checkOverflow2[0], result = _checkOverflow2[1];\n var _checkOverflow3 = checkOverflow(middle), _checkOverflow4 = _slicedToArray(_checkOverflow3, 1), doesMiddleOverflow = _checkOverflow4[0];\n if (!doesPrevOverflow && !doesMiddleOverflow) {\n start = middle + 1;\n }\n if (doesPrevOverflow && doesMiddleOverflow) {\n end = middle - 1;\n }\n if (!doesPrevOverflow && doesMiddleOverflow) {\n trimmedResult = result;\n break;\n }\n iterations++;\n }\n // Fallback to originalResult (result without trimming) if we cannot find the\n // where to trim. This should not happen :tm:\n return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n var words = !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(children) ? children.toString().split(BREAKING_SPACES) : [];\n return [\n {\n words: words\n }\n ];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n var width = _ref4.width, scaleToFit = _ref4.scaleToFit, children = _ref4.children, style = _ref4.style, breakAll = _ref4.breakAll, maxLines = _ref4.maxLines;\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((width || scaleToFit) && !_util_Global__WEBPACK_IMPORTED_MODULE_5__.Global.isSsr) {\n var wordsWithComputedWidth, spaceWidth;\n var wordWidths = calculateWordWidths({\n breakAll: breakAll,\n children: children,\n style: style\n });\n if (wordWidths) {\n var wcw = wordWidths.wordsWithComputedWidth, sw = wordWidths.spaceWidth;\n wordsWithComputedWidth = wcw;\n spaceWidth = sw;\n } else {\n return getWordsWithoutCalculate(children);\n }\n return calculateWordsByLines({\n breakAll: breakAll,\n children: children,\n maxLines: maxLines,\n style: style\n }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n }\n return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = \"#808080\";\nvar Text = function Text(_ref5) {\n var _ref5$x = _ref5.x, propsX = _ref5$x === void 0 ? 0 : _ref5$x, _ref5$y = _ref5.y, propsY = _ref5$y === void 0 ? 0 : _ref5$y, _ref5$lineHeight = _ref5.lineHeight, lineHeight = _ref5$lineHeight === void 0 ? \"1em\" : _ref5$lineHeight, _ref5$capHeight = _ref5.capHeight, capHeight = _ref5$capHeight === void 0 ? \"0.71em\" : _ref5$capHeight, _ref5$scaleToFit = _ref5.scaleToFit, scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit, _ref5$textAnchor = _ref5.textAnchor, textAnchor = _ref5$textAnchor === void 0 ? \"start\" : _ref5$textAnchor, _ref5$verticalAnchor = _ref5.verticalAnchor, verticalAnchor = _ref5$verticalAnchor === void 0 ? \"end\" : _ref5$verticalAnchor, _ref5$fill = _ref5.fill, fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill, props = _objectWithoutProperties(_ref5, _excluded);\n var wordsByLines = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return getWordsByLines({\n breakAll: props.breakAll,\n children: props.children,\n maxLines: props.maxLines,\n scaleToFit: scaleToFit,\n style: props.style,\n width: props.width\n });\n }, [\n props.breakAll,\n props.children,\n props.maxLines,\n scaleToFit,\n props.style,\n props.width\n ]);\n var dx = props.dx, dy = props.dy, angle = props.angle, className = props.className, breakAll = props.breakAll, textProps = _objectWithoutProperties(props, _excluded2);\n if (!(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(propsX) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumOrStr)(propsY)) {\n return null;\n }\n var x = propsX + ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(dx) ? dx : 0);\n var y = propsY + ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(dy) ? dy : 0);\n var startDy;\n switch(verticalAnchor){\n case \"start\":\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat(capHeight, \")\"));\n break;\n case \"middle\":\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n default:\n startDy = (0,_util_ReduceCSSCalc__WEBPACK_IMPORTED_MODULE_6__.reduceCSSCalc)(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n var transforms = [];\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n var width = props.width;\n transforms.push(\"scale(\".concat(((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_4__.isNumber)(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n }\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n if (transforms.length) {\n textProps.transform = transforms.join(\" \");\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"text\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_7__.filterProps)(textProps, true), {\n x: x,\n y: y,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\"recharts-text\", className),\n textAnchor: textAnchor,\n fill: fill.includes(\"url\") ? DEFAULT_FILL : fill\n }), wordsByLines.map(function(line, index) {\n var words = line.words.join(breakAll ? \"\" : \" \");\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: words\n }, words);\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9UZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQUs7SUFBSztJQUFjO0lBQWE7SUFBYztJQUFjO0lBQWtCO0NBQU8sRUFDekdDLGFBQWE7SUFBQztJQUFNO0lBQU07SUFBUztJQUFhO0NBQVc7QUFDN0QsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNS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QUs7UUFDckMsSUFBSUEsUUFBUW1FLE1BQU1uRSxLQUFLO1FBQ3ZCNEUsV0FBV3BHLElBQUksQ0FBQyxTQUFTbUcsTUFBTSxDQUFDLENBQUM1Rix5REFBUUEsQ0FBQ2lCLFNBQVNBLFFBQVFLLFlBQVksS0FBS0EsV0FBVztJQUN6RjtJQUNBLElBQUlrRSxPQUFPO1FBQ1RLLFdBQVdwRyxJQUFJLENBQUMsVUFBVW1HLE1BQU0sQ0FBQ0osT0FBTyxNQUFNSSxNQUFNLENBQUN4QixHQUFHLE1BQU13QixNQUFNLENBQUNyQixHQUFHO0lBQzFFO0lBQ0EsSUFBSXNCLFdBQVduSixNQUFNLEVBQUU7UUFDckJnSixVQUFVSSxTQUFTLEdBQUdELFdBQVdFLElBQUksQ0FBQztJQUN4QztJQUNBLE9BQU8sV0FBVyxHQUFFbkcsMERBQW1CLENBQUMsUUFBUXpELFNBQVMsQ0FBQyxHQUFHZ0UsNkRBQVdBLENBQUN1RixXQUFXLE9BQU87UUFDekZ0QixHQUFHQTtRQUNIRyxHQUFHQTtRQUNIa0IsV0FBVzFGLGdEQUFJQSxDQUFDLGlCQUFpQjBGO1FBQ2pDVixZQUFZQTtRQUNaSSxNQUFNQSxLQUFLYyxRQUFRLENBQUMsU0FBU2pDLGVBQWVtQjtJQUM5QyxJQUFJRSxhQUFhdEUsR0FBRyxDQUFDLFNBQVVtRixJQUFJLEVBQUUxRCxLQUFLO1FBQ3hDLElBQUk1QixRQUFRc0YsS0FBS3RGLEtBQUssQ0FBQ21GLElBQUksQ0FBQ3JGLFdBQVcsS0FBSztRQUM1QyxPQUFPLFdBQVcsR0FBRWQsMERBQW1CLENBQUMsU0FBUztZQUMvQ3dFLEdBQUdBO1lBQ0htQixJQUFJL0MsVUFBVSxJQUFJbUQsVUFBVWpCO1lBQzVCOUgsS0FBS2dFO1FBQ1AsR0FBR0E7SUFDTDtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvVGV4dC5qcz83YzYxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJ4XCIsIFwieVwiLCBcImxpbmVIZWlnaHRcIiwgXCJjYXBIZWlnaHRcIiwgXCJzY2FsZVRvRml0XCIsIFwidGV4dEFuY2hvclwiLCBcInZlcnRpY2FsQW5jaG9yXCIsIFwiZmlsbFwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcImR4XCIsIFwiZHlcIiwgXCJhbmdsZVwiLCBcImNsYXNzTmFtZVwiLCBcImJyZWFrQWxsXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTnVtT3JTdHIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuLi91dGlsL0dsb2JhbCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBnZXRTdHJpbmdTaXplIH0gZnJvbSAnLi4vdXRpbC9ET01VdGlscyc7XG5pbXBvcnQgeyByZWR1Y2VDU1NDYWxjIH0gZnJvbSAnLi4vdXRpbC9SZWR1Y2VDU1NDYWxjJztcbnZhciBCUkVBS0lOR19TUEFDRVMgPSAvWyBcXGZcXG5cXHJcXHRcXHZcXHUyMDI4XFx1MjAyOV0rLztcbnZhciBjYWxjdWxhdGVXb3JkV2lkdGhzID0gZnVuY3Rpb24gY2FsY3VsYXRlV29yZFdpZHRocyhfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgYnJlYWtBbGwgPSBfcmVmLmJyZWFrQWxsLFxuICAgIHN0eWxlID0gX3JlZi5zdHlsZTtcbiAgdHJ5IHtcbiAgICB2YXIgd29yZHMgPSBbXTtcbiAgICBpZiAoIWlzTmlsKGNoaWxkcmVuKSkge1xuICAgICAgaWYgKGJyZWFrQWxsKSB7XG4gICAgICAgIHdvcmRzID0gY2hpbGRyZW4udG9TdHJpbmcoKS5zcGxpdCgnJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3b3JkcyA9IGNoaWxkcmVuLnRvU3RyaW5nKCkuc3BsaXQoQlJFQUtJTkdfU1BBQ0VTKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHdvcmRzV2l0aENvbXB1dGVkV2lkdGggPSB3b3Jkcy5tYXAoZnVuY3Rpb24gKHdvcmQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdvcmQ6IHdvcmQsXG4gICAgICAgIHdpZHRoOiBnZXRTdHJpbmdTaXplKHdvcmQsIHN0eWxlKS53aWR0aFxuICAgICAgfTtcbiAgICB9KTtcbiAgICB2YXIgc3BhY2VXaWR0aCA9IGJyZWFrQWxsID8gMCA6IGdldFN0cmluZ1NpemUoXCJcXHhBMFwiLCBzdHlsZSkud2lkdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmRzV2l0aENvbXB1dGVkV2lkdGg6IHdvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICBzcGFjZVdpZHRoOiBzcGFjZVdpZHRoXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xudmFyIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyA9IGZ1bmN0aW9uIGNhbGN1bGF0ZVdvcmRzQnlMaW5lcyhfcmVmMiwgaW5pdGlhbFdvcmRzV2l0aENvbXB1dGVkV2l0aCwgc3BhY2VXaWR0aCwgbGluZVdpZHRoLCBzY2FsZVRvRml0KSB7XG4gIHZhciBtYXhMaW5lcyA9IF9yZWYyLm1heExpbmVzLFxuICAgIGNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgc3R5bGUgPSBfcmVmMi5zdHlsZSxcbiAgICBicmVha0FsbCA9IF9yZWYyLmJyZWFrQWxsO1xuICB2YXIgc2hvdWxkTGltaXRMaW5lcyA9IGlzTnVtYmVyKG1heExpbmVzKTtcbiAgdmFyIHRleHQgPSBjaGlsZHJlbjtcbiAgdmFyIGNhbGN1bGF0ZSA9IGZ1bmN0aW9uIGNhbGN1bGF0ZSgpIHtcbiAgICB2YXIgd29yZHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdO1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgX3JlZjMpIHtcbiAgICAgIHZhciB3b3JkID0gX3JlZjMud29yZCxcbiAgICAgICAgd2lkdGggPSBfcmVmMy53aWR0aDtcbiAgICAgIHZhciBjdXJyZW50TGluZSA9IHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoY3VycmVudExpbmUgJiYgKGxpbmVXaWR0aCA9PSBudWxsIHx8IHNjYWxlVG9GaXQgfHwgY3VycmVudExpbmUud2lkdGggKyB3aWR0aCArIHNwYWNlV2lkdGggPCBOdW1iZXIobGluZVdpZHRoKSkpIHtcbiAgICAgICAgLy8gV29yZCBjYW4gYmUgYWRkZWQgdG8gYW4gZXhpc3RpbmcgbGluZVxuICAgICAgICBjdXJyZW50TGluZS53b3Jkcy5wdXNoKHdvcmQpO1xuICAgICAgICBjdXJyZW50TGluZS53aWR0aCArPSB3aWR0aCArIHNwYWNlV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgZmlyc3Qgd29yZCB0byBsaW5lIG9yIHdvcmQgaXMgdG9vIGxvbmcgdG8gc2NhbGVUb0ZpdCBvbiBleGlzdGluZyBsaW5lXG4gICAgICAgIHZhciBuZXdMaW5lID0ge1xuICAgICAgICAgIHdvcmRzOiBbd29yZF0sXG4gICAgICAgICAgd2lkdGg6IHdpZHRoXG4gICAgICAgIH07XG4gICAgICAgIHJlc3VsdC5wdXNoKG5ld0xpbmUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBbXSk7XG4gIH07XG4gIHZhciBvcmlnaW5hbFJlc3VsdCA9IGNhbGN1bGF0ZShpbml0aWFsV29yZHNXaXRoQ29tcHV0ZWRXaXRoKTtcbiAgdmFyIGZpbmRMb25nZXN0TGluZSA9IGZ1bmN0aW9uIGZpbmRMb25nZXN0TGluZSh3b3Jkcykge1xuICAgIHJldHVybiB3b3Jkcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLndpZHRoID4gYi53aWR0aCA/IGEgOiBiO1xuICAgIH0pO1xuICB9O1xuICBpZiAoIXNob3VsZExpbWl0TGluZXMpIHtcbiAgICByZXR1cm4gb3JpZ2luYWxSZXN1bHQ7XG4gIH1cbiAgdmFyIHN1ZmZpeCA9ICfigKYnO1xuICB2YXIgY2hlY2tPdmVyZmxvdyA9IGZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coaW5kZXgpIHtcbiAgICB2YXIgdGVtcFRleHQgPSB0ZXh0LnNsaWNlKDAsIGluZGV4KTtcbiAgICB2YXIgd29yZHMgPSBjYWxjdWxhdGVXb3JkV2lkdGhzKHtcbiAgICAgIGJyZWFrQWxsOiBicmVha0FsbCxcbiAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgIGNoaWxkcmVuOiB0ZW1wVGV4dCArIHN1ZmZpeFxuICAgIH0pLndvcmRzV2l0aENvbXB1dGVkV2lkdGg7XG4gICAgdmFyIHJlc3VsdCA9IGNhbGN1bGF0ZSh3b3Jkcyk7XG4gICAgdmFyIGRvZXNPdmVyZmxvdyA9IHJlc3VsdC5sZW5ndGggPiBtYXhMaW5lcyB8fCBmaW5kTG9uZ2VzdExpbmUocmVzdWx0KS53aWR0aCA+IE51bWJlcihsaW5lV2lkdGgpO1xuICAgIHJldHVybiBbZG9lc092ZXJmbG93LCByZXN1bHRdO1xuICB9O1xuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgZW5kID0gdGV4dC5sZW5ndGggLSAxO1xuICB2YXIgaXRlcmF0aW9ucyA9IDA7XG4gIHZhciB0cmltbWVkUmVzdWx0O1xuICB3aGlsZSAoc3RhcnQgPD0gZW5kICYmIGl0ZXJhdGlvbnMgPD0gdGV4dC5sZW5ndGggLSAxKSB7XG4gICAgdmFyIG1pZGRsZSA9IE1hdGguZmxvb3IoKHN0YXJ0ICsgZW5kKSAvIDIpO1xuICAgIHZhciBwcmV2ID0gbWlkZGxlIC0gMTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3cgPSBjaGVja092ZXJmbG93KHByZXYpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3cyID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3csIDIpLFxuICAgICAgZG9lc1ByZXZPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93MlswXSxcbiAgICAgIHJlc3VsdCA9IF9jaGVja092ZXJmbG93MlsxXTtcbiAgICB2YXIgX2NoZWNrT3ZlcmZsb3czID0gY2hlY2tPdmVyZmxvdyhtaWRkbGUpLFxuICAgICAgX2NoZWNrT3ZlcmZsb3c0ID0gX3NsaWNlZFRvQXJyYXkoX2NoZWNrT3ZlcmZsb3czLCAxKSxcbiAgICAgIGRvZXNNaWRkbGVPdmVyZmxvdyA9IF9jaGVja092ZXJmbG93NFswXTtcbiAgICBpZiAoIWRvZXNQcmV2T3ZlcmZsb3cgJiYgIWRvZXNNaWRkbGVPdmVyZmxvdykge1xuICAgICAgc3RhcnQgPSBtaWRkbGUgKyAxO1xuICAgIH1cbiAgICBpZiAoZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIGVuZCA9IG1pZGRsZSAtIDE7XG4gICAgfVxuICAgIGlmICghZG9lc1ByZXZPdmVyZmxvdyAmJiBkb2VzTWlkZGxlT3ZlcmZsb3cpIHtcbiAgICAgIHRyaW1tZWRSZXN1bHQgPSByZXN1bHQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaXRlcmF0aW9ucysrO1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gb3JpZ2luYWxSZXN1bHQgKHJlc3VsdCB3aXRob3V0IHRyaW1taW5nKSBpZiB3ZSBjYW5ub3QgZmluZCB0aGVcbiAgLy8gd2hlcmUgdG8gdHJpbS4gIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gOnRtOlxuICByZXR1cm4gdHJpbW1lZFJlc3VsdCB8fCBvcmlnaW5hbFJlc3VsdDtcbn07XG52YXIgZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlID0gZnVuY3Rpb24gZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlKGNoaWxkcmVuKSB7XG4gIHZhciB3b3JkcyA9ICFpc05pbChjaGlsZHJlbikgPyBjaGlsZHJlbi50b1N0cmluZygpLnNwbGl0KEJSRUFLSU5HX1NQQUNFUykgOiBbXTtcbiAgcmV0dXJuIFt7XG4gICAgd29yZHM6IHdvcmRzXG4gIH1dO1xufTtcbnZhciBnZXRXb3Jkc0J5TGluZXMgPSBmdW5jdGlvbiBnZXRXb3Jkc0J5TGluZXMoX3JlZjQpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjQud2lkdGgsXG4gICAgc2NhbGVUb0ZpdCA9IF9yZWY0LnNjYWxlVG9GaXQsXG4gICAgY2hpbGRyZW4gPSBfcmVmNC5jaGlsZHJlbixcbiAgICBzdHlsZSA9IF9yZWY0LnN0eWxlLFxuICAgIGJyZWFrQWxsID0gX3JlZjQuYnJlYWtBbGwsXG4gICAgbWF4TGluZXMgPSBfcmVmNC5tYXhMaW5lcztcbiAgLy8gT25seSBwZXJmb3JtIGNhbGN1bGF0aW9ucyBpZiB1c2luZyBmZWF0dXJlcyB0aGF0IHJlcXVpcmUgdGhlbSAobXVsdGlsaW5lLCBzY2FsZVRvRml0KVxuICBpZiAoKHdpZHRoIHx8IHNjYWxlVG9GaXQpICYmICFHbG9iYWwuaXNTc3IpIHtcbiAgICB2YXIgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aDtcbiAgICB2YXIgd29yZFdpZHRocyA9IGNhbGN1bGF0ZVdvcmRXaWR0aHMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSk7XG4gICAgaWYgKHdvcmRXaWR0aHMpIHtcbiAgICAgIHZhciB3Y3cgPSB3b3JkV2lkdGhzLndvcmRzV2l0aENvbXB1dGVkV2lkdGgsXG4gICAgICAgIHN3ID0gd29yZFdpZHRocy5zcGFjZVdpZHRoO1xuICAgICAgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCA9IHdjdztcbiAgICAgIHNwYWNlV2lkdGggPSBzdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldFdvcmRzV2l0aG91dENhbGN1bGF0ZShjaGlsZHJlbik7XG4gICAgfVxuICAgIHJldHVybiBjYWxjdWxhdGVXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IGJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IG1heExpbmVzLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSwgd29yZHNXaXRoQ29tcHV0ZWRXaWR0aCwgc3BhY2VXaWR0aCwgd2lkdGgsIHNjYWxlVG9GaXQpO1xuICB9XG4gIHJldHVybiBnZXRXb3Jkc1dpdGhvdXRDYWxjdWxhdGUoY2hpbGRyZW4pO1xufTtcbnZhciBERUZBVUxUX0ZJTEwgPSAnIzgwODA4MCc7XG5leHBvcnQgdmFyIFRleHQgPSBmdW5jdGlvbiBUZXh0KF9yZWY1KSB7XG4gIHZhciBfcmVmNSR4ID0gX3JlZjUueCxcbiAgICBwcm9wc1ggPSBfcmVmNSR4ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeCxcbiAgICBfcmVmNSR5ID0gX3JlZjUueSxcbiAgICBwcm9wc1kgPSBfcmVmNSR5ID09PSB2b2lkIDAgPyAwIDogX3JlZjUkeSxcbiAgICBfcmVmNSRsaW5lSGVpZ2h0ID0gX3JlZjUubGluZUhlaWdodCxcbiAgICBsaW5lSGVpZ2h0ID0gX3JlZjUkbGluZUhlaWdodCA9PT0gdm9pZCAwID8gJzFlbScgOiBfcmVmNSRsaW5lSGVpZ2h0LFxuICAgIF9yZWY1JGNhcEhlaWdodCA9IF9yZWY1LmNhcEhlaWdodCxcbiAgICBjYXBIZWlnaHQgPSBfcmVmNSRjYXBIZWlnaHQgPT09IHZvaWQgMCA/ICcwLjcxZW0nIDogX3JlZjUkY2FwSGVpZ2h0LFxuICAgIF9yZWY1JHNjYWxlVG9GaXQgPSBfcmVmNS5zY2FsZVRvRml0LFxuICAgIHNjYWxlVG9GaXQgPSBfcmVmNSRzY2FsZVRvRml0ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9yZWY1JHNjYWxlVG9GaXQsXG4gICAgX3JlZjUkdGV4dEFuY2hvciA9IF9yZWY1LnRleHRBbmNob3IsXG4gICAgdGV4dEFuY2hvciA9IF9yZWY1JHRleHRBbmNob3IgPT09IHZvaWQgMCA/ICdzdGFydCcgOiBfcmVmNSR0ZXh0QW5jaG9yLFxuICAgIF9yZWY1JHZlcnRpY2FsQW5jaG9yID0gX3JlZjUudmVydGljYWxBbmNob3IsXG4gICAgdmVydGljYWxBbmNob3IgPSBfcmVmNSR2ZXJ0aWNhbEFuY2hvciA9PT0gdm9pZCAwID8gJ2VuZCcgOiBfcmVmNSR2ZXJ0aWNhbEFuY2hvcixcbiAgICBfcmVmNSRmaWxsID0gX3JlZjUuZmlsbCxcbiAgICBmaWxsID0gX3JlZjUkZmlsbCA9PT0gdm9pZCAwID8gREVGQVVMVF9GSUxMIDogX3JlZjUkZmlsbCxcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmNSwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHdvcmRzQnlMaW5lcyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRXb3Jkc0J5TGluZXMoe1xuICAgICAgYnJlYWtBbGw6IHByb3BzLmJyZWFrQWxsLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLFxuICAgICAgbWF4TGluZXM6IHByb3BzLm1heExpbmVzLFxuICAgICAgc2NhbGVUb0ZpdDogc2NhbGVUb0ZpdCxcbiAgICAgIHN0eWxlOiBwcm9wcy5zdHlsZSxcbiAgICAgIHdpZHRoOiBwcm9wcy53aWR0aFxuICAgIH0pO1xuICB9LCBbcHJvcHMuYnJlYWtBbGwsIHByb3BzLmNoaWxkcmVuLCBwcm9wcy5tYXhMaW5lcywgc2NhbGVUb0ZpdCwgcHJvcHMuc3R5bGUsIHByb3BzLndpZHRoXSk7XG4gIHZhciBkeCA9IHByb3BzLmR4LFxuICAgIGR5ID0gcHJvcHMuZHksXG4gICAgYW5nbGUgPSBwcm9wcy5hbmdsZSxcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgYnJlYWtBbGwgPSBwcm9wcy5icmVha0FsbCxcbiAgICB0ZXh0UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDIpO1xuICBpZiAoIWlzTnVtT3JTdHIocHJvcHNYKSB8fCAhaXNOdW1PclN0cihwcm9wc1kpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIHggPSBwcm9wc1ggKyAoaXNOdW1iZXIoZHgpID8gZHggOiAwKTtcbiAgdmFyIHkgPSBwcm9wc1kgKyAoaXNOdW1iZXIoZHkpID8gZHkgOiAwKTtcbiAgdmFyIHN0YXJ0RHk7XG4gIHN3aXRjaCAodmVydGljYWxBbmNob3IpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KGNhcEhlaWdodCwgXCIpXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICBzdGFydER5ID0gcmVkdWNlQ1NTQ2FsYyhcImNhbGMoXCIuY29uY2F0KCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSkgLyAyLCBcIiAqIC1cIikuY29uY2F0KGxpbmVIZWlnaHQsIFwiICsgKFwiKS5jb25jYXQoY2FwSGVpZ2h0LCBcIiAvIDIpKVwiKSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhcnREeSA9IHJlZHVjZUNTU0NhbGMoXCJjYWxjKFwiLmNvbmNhdCh3b3Jkc0J5TGluZXMubGVuZ3RoIC0gMSwgXCIgKiAtXCIpLmNvbmNhdChsaW5lSGVpZ2h0LCBcIilcIikpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgdmFyIHRyYW5zZm9ybXMgPSBbXTtcbiAgaWYgKHNjYWxlVG9GaXQpIHtcbiAgICB2YXIgbGluZVdpZHRoID0gd29yZHNCeUxpbmVzWzBdLndpZHRoO1xuICAgIHZhciB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHRyYW5zZm9ybXMucHVzaChcInNjYWxlKFwiLmNvbmNhdCgoaXNOdW1iZXIod2lkdGgpID8gd2lkdGggLyBsaW5lV2lkdGggOiAxKSAvIGxpbmVXaWR0aCwgXCIpXCIpKTtcbiAgfVxuICBpZiAoYW5nbGUpIHtcbiAgICB0cmFuc2Zvcm1zLnB1c2goXCJyb3RhdGUoXCIuY29uY2F0KGFuZ2xlLCBcIiwgXCIpLmNvbmNhdCh4LCBcIiwgXCIpLmNvbmNhdCh5LCBcIilcIikpO1xuICB9XG4gIGlmICh0cmFuc2Zvcm1zLmxlbmd0aCkge1xuICAgIHRleHRQcm9wcy50cmFuc2Zvcm0gPSB0cmFuc2Zvcm1zLmpvaW4oJyAnKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0ZXh0UHJvcHMsIHRydWUpLCB7XG4gICAgeDogeCxcbiAgICB5OiB5LFxuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtdGV4dCcsIGNsYXNzTmFtZSksXG4gICAgdGV4dEFuY2hvcjogdGV4dEFuY2hvcixcbiAgICBmaWxsOiBmaWxsLmluY2x1ZGVzKCd1cmwnKSA/IERFRkFVTFRfRklMTCA6IGZpbGxcbiAgfSksIHdvcmRzQnlMaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmUsIGluZGV4KSB7XG4gICAgdmFyIHdvcmRzID0gbGluZS53b3Jkcy5qb2luKGJyZWFrQWxsID8gJycgOiAnICcpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInRzcGFuXCIsIHtcbiAgICAgIHg6IHgsXG4gICAgICBkeTogaW5kZXggPT09IDAgPyBzdGFydER5IDogbGluZUhlaWdodCxcbiAgICAgIGtleTogd29yZHNcbiAgICB9LCB3b3Jkcyk7XG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJrZXlzIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInIiLCJsIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIlJlYWN0IiwidXNlTWVtbyIsImlzTmlsIiwiY2xzeCIsImlzTnVtYmVyIiwiaXNOdW1PclN0ciIsIkdsb2JhbCIsImZpbHRlclByb3BzIiwiZ2V0U3RyaW5nU2l6ZSIsInJlZHVjZUNTU0NhbGMiLCJCUkVBS0lOR19TUEFDRVMiLCJjYWxjdWxhdGVXb3JkV2lkdGhzIiwiX3JlZiIsImNoaWxkcmVuIiwiYnJlYWtBbGwiLCJzdHlsZSIsIndvcmRzIiwic3BsaXQiLCJ3b3Jkc1dpdGhDb21wdXRlZFdpZHRoIiwibWFwIiwid29yZCIsIndpZHRoIiwic3BhY2VXaWR0aCIsImNhbGN1bGF0ZVdvcmRzQnlMaW5lcyIsIl9yZWYyIiwiaW5pdGlhbFdvcmRzV2l0aENvbXB1dGVkV2l0aCIsImxpbmVXaWR0aCIsInNjYWxlVG9GaXQiLCJtYXhMaW5lcyIsInNob3VsZExpbWl0TGluZXMiLCJ0ZXh0IiwiY2FsY3VsYXRlIiwidW5kZWZpbmVkIiwicmVkdWNlIiwicmVzdWx0IiwiX3JlZjMiLCJjdXJyZW50TGluZSIsIk51bWJlciIsIm5ld0xpbmUiLCJvcmlnaW5hbFJlc3VsdCIsImZpbmRMb25nZXN0TGluZSIsImIiLCJzdWZmaXgiLCJjaGVja092ZXJmbG93IiwiaW5kZXgiLCJ0ZW1wVGV4dCIsImRvZXNPdmVyZmxvdyIsInN0YXJ0IiwiZW5kIiwiaXRlcmF0aW9ucyIsInRyaW1tZWRSZXN1bHQiLCJtaWRkbGUiLCJNYXRoIiwiZmxvb3IiLCJwcmV2IiwiX2NoZWNrT3ZlcmZsb3ciLCJfY2hlY2tPdmVyZmxvdzIiLCJkb2VzUHJldk92ZXJmbG93IiwiX2NoZWNrT3ZlcmZsb3czIiwiX2NoZWNrT3ZlcmZsb3c0IiwiZG9lc01pZGRsZU92ZXJmbG93IiwiZ2V0V29yZHNXaXRob3V0Q2FsY3VsYXRlIiwiZ2V0V29yZHNCeUxpbmVzIiwiX3JlZjQiLCJpc1NzciIsIndvcmRXaWR0aHMiLCJ3Y3ciLCJzdyIsIkRFRkFVTFRfRklMTCIsIlRleHQiLCJfcmVmNSIsIl9yZWY1JHgiLCJ4IiwicHJvcHNYIiwiX3JlZjUkeSIsInkiLCJwcm9wc1kiLCJfcmVmNSRsaW5lSGVpZ2h0IiwibGluZUhlaWdodCIsIl9yZWY1JGNhcEhlaWdodCIsImNhcEhlaWdodCIsIl9yZWY1JHNjYWxlVG9GaXQiLCJfcmVmNSR0ZXh0QW5jaG9yIiwidGV4dEFuY2hvciIsIl9yZWY1JHZlcnRpY2FsQW5jaG9yIiwidmVydGljYWxBbmNob3IiLCJfcmVmNSRmaWxsIiwiZmlsbCIsInByb3BzIiwid29yZHNCeUxpbmVzIiwiZHgiLCJkeSIsImFuZ2xlIiwiY2xhc3NOYW1lIiwidGV4dFByb3BzIiwic3RhcnREeSIsImNvbmNhdCIsInRyYW5zZm9ybXMiLCJ0cmFuc2Zvcm0iLCJqb2luIiwiY3JlYXRlRWxlbWVudCIsImluY2x1ZGVzIiwibGluZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Text.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/Tooltip.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/component/Tooltip.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Tooltip: () => (/* binding */ Tooltip)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DefaultTooltipContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DefaultTooltipContent */ \"(ssr)/./node_modules/recharts/es6/component/DefaultTooltipContent.js\");\n/* harmony import */ var _TooltipBoundingBox__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TooltipBoundingBox */ \"(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js\");\n/* harmony import */ var _util_Global__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\n/* harmony import */ var _util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/payload/getUniqPayload */ \"(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Tooltip\n */ \n\n\n\n\nfunction defaultUniqBy(entry) {\n return entry.dataKey;\n}\nfunction renderContent(content, props) {\n if (/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(content)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(content, props);\n }\n if (typeof content === \"function\") {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(content, props);\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_DefaultTooltipContent__WEBPACK_IMPORTED_MODULE_1__.DefaultTooltipContent, props);\n}\nvar Tooltip = /*#__PURE__*/ function(_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n function Tooltip() {\n _classCallCheck(this, Tooltip);\n return _callSuper(this, Tooltip, arguments);\n }\n _createClass(Tooltip, [\n {\n key: \"render\",\n value: function render() {\n var _this = this;\n var _this$props = this.props, active = _this$props.active, allowEscapeViewBox = _this$props.allowEscapeViewBox, animationDuration = _this$props.animationDuration, animationEasing = _this$props.animationEasing, content = _this$props.content, coordinate = _this$props.coordinate, filterNull = _this$props.filterNull, isAnimationActive = _this$props.isAnimationActive, offset = _this$props.offset, payload = _this$props.payload, payloadUniqBy = _this$props.payloadUniqBy, position = _this$props.position, reverseDirection = _this$props.reverseDirection, useTranslate3d = _this$props.useTranslate3d, viewBox = _this$props.viewBox, wrapperStyle = _this$props.wrapperStyle;\n var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n if (filterNull && finalPayload.length) {\n finalPayload = (0,_util_payload_getUniqPayload__WEBPACK_IMPORTED_MODULE_2__.getUniqPayload)(payload.filter(function(entry) {\n return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n }), payloadUniqBy, defaultUniqBy);\n }\n var hasPayload = finalPayload.length > 0;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_TooltipBoundingBox__WEBPACK_IMPORTED_MODULE_3__.TooltipBoundingBox, {\n allowEscapeViewBox: allowEscapeViewBox,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n active: active,\n coordinate: coordinate,\n hasPayload: hasPayload,\n offset: offset,\n position: position,\n reverseDirection: reverseDirection,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox,\n wrapperStyle: wrapperStyle\n }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n payload: finalPayload\n })));\n }\n }\n ]);\n return Tooltip;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n_defineProperty(Tooltip, \"displayName\", \"Tooltip\");\n_defineProperty(Tooltip, \"defaultProps\", {\n accessibilityLayer: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n animationDuration: 400,\n animationEasing: \"ease\",\n contentStyle: {},\n coordinate: {\n x: 0,\n y: 0\n },\n cursor: true,\n cursorStyle: {},\n filterNull: true,\n isAnimationActive: !_util_Global__WEBPACK_IMPORTED_MODULE_4__.Global.isSsr,\n itemStyle: {},\n labelStyle: {},\n offset: 10,\n reverseDirection: {\n x: false,\n y: false\n },\n separator: \" : \",\n trigger: \"hover\",\n useTranslate3d: false,\n viewBox: {\n x: 0,\n y: 0,\n height: 0,\n width: 0\n },\n wrapperStyle: {}\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0ssUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSUMsT0FBT0MsSUFBSSxDQUFDSjtJQUFJLElBQUlHLE9BQU9FLHFCQUFxQixFQUFFO1FBQUUsSUFBSVgsSUFBSVMsT0FBT0UscUJBQXFCLENBQUNMO1FBQUlDLEtBQU1QLENBQUFBLElBQUlBLEVBQUVZLE1BQU0sQ0FBQyxTQUFVTCxDQUFDO1lBQUksT0FBT0UsT0FBT0ksd0JBQXdCLENBQUNQLEdBQUdDLEdBQUdPLFVBQVU7UUFBRSxFQUFDLEdBQUlOLEVBQUVPLElBQUksQ0FBQ0MsS0FBSyxDQUFDUixHQUFHUjtJQUFJO0lBQUUsT0FBT1E7QUFBRztBQUM5UCxTQUFTUyxjQUFjWCxDQUFDO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlXLFVBQVVDLE1BQU0sRUFBRVosSUFBSztRQUFFLElBQUlDLElBQUksUUFBUVUsU0FBUyxDQUFDWCxFQUFFLEdBQUdXLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHLENBQUM7UUFBR0EsSUFBSSxJQUFJRixRQUFRSSxPQUFPRCxJQUFJLENBQUMsR0FBR1ksT0FBTyxDQUFDLFNBQVViLENBQUM7WUFBSWMsZ0JBQWdCZixHQUFHQyxHQUFHQyxDQUFDLENBQUNELEVBQUU7UUFBRyxLQUFLRSxPQUFPYSx5QkFBeUIsR0FBR2IsT0FBT2MsZ0JBQWdCLENBQUNqQixHQUFHRyxPQUFPYSx5QkFBeUIsQ0FBQ2QsTUFBTUgsUUFBUUksT0FBT0QsSUFBSVksT0FBTyxDQUFDLFNBQVViLENBQUM7WUFBSUUsT0FBT2UsY0FBYyxDQUFDbEIsR0FBR0MsR0FBR0UsT0FBT0ksd0JBQXdCLENBQUNMLEdBQUdEO1FBQUs7SUFBSTtJQUFFLE9BQU9EO0FBQUc7QUFDdGIsU0FBU21CLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1aLE1BQU0sRUFBRWEsSUFBSztRQUFFLElBQUlDLGFBQWFGLEtBQUssQ0FBQ0MsRUFBRTtRQUFFQyxXQUFXbkIsVUFBVSxHQUFHbUIsV0FBV25CLFVBQVUsSUFBSTtRQUFPbUIsV0FBV0MsWUFBWSxHQUFHO1FBQU0sSUFBSSxXQUFXRCxZQUFZQSxXQUFXRSxRQUFRLEdBQUc7UUFBTTFCLE9BQU9lLGNBQWMsQ0FBQ00sUUFBUU0sZUFBZUgsV0FBV0ksR0FBRyxHQUFHSjtJQUFhO0FBQUU7QUFDNVUsU0FBU0ssYUFBYVgsV0FBVyxFQUFFWSxVQUFVLEVBQUVDLFdBQVc7SUFBSSxJQUFJRCxZQUFZVixrQkFBa0JGLFlBQVl2QixTQUFTLEVBQUVtQztJQUFhLElBQUlDLGFBQWFYLGtCQUFrQkYsYUFBYWE7SUFBYy9CLE9BQU9lLGNBQWMsQ0FBQ0csYUFBYSxhQUFhO1FBQUVRLFVBQVU7SUFBTTtJQUFJLE9BQU9SO0FBQWE7QUFDNVIsU0FBU2MsV0FBV2pDLENBQUMsRUFBRVIsQ0FBQyxFQUFFTSxDQUFDO0lBQUksT0FBT04sSUFBSTBDLGdCQUFnQjFDLElBQUkyQywyQkFBMkJuQyxHQUFHb0MsOEJBQThCQyxRQUFRQyxTQUFTLENBQUM5QyxHQUFHTSxLQUFLLEVBQUUsRUFBRW9DLGdCQUFnQmxDLEdBQUdMLFdBQVcsSUFBSUgsRUFBRWdCLEtBQUssQ0FBQ1IsR0FBR0Y7QUFBSztBQUMxTSxTQUFTcUMsMkJBQTJCSSxJQUFJLEVBQUVDLElBQUk7SUFBSSxJQUFJQSxRQUFTakQsQ0FBQUEsUUFBUWlELFVBQVUsWUFBWSxPQUFPQSxTQUFTLFVBQVMsR0FBSTtRQUFFLE9BQU9BO0lBQU0sT0FBTyxJQUFJQSxTQUFTLEtBQUssR0FBRztRQUFFLE1BQU0sSUFBSXBCLFVBQVU7SUFBNkQ7SUFBRSxPQUFPcUIsdUJBQXVCRjtBQUFPO0FBQy9SLFNBQVNFLHVCQUF1QkYsSUFBSTtJQUFJLElBQUlBLFNBQVMsS0FBSyxHQUFHO1FBQUUsTUFBTSxJQUFJRyxlQUFlO0lBQThEO0lBQUUsT0FBT0g7QUFBTTtBQUNySyxTQUFTSDtJQUE4QixJQUFJO1FBQUUsSUFBSXBDLElBQUksQ0FBQzJDLFFBQVEvQyxTQUFTLENBQUNnRCxPQUFPLENBQUNKLElBQUksQ0FBQ0gsUUFBUUMsU0FBUyxDQUFDSyxTQUFTLEVBQUUsRUFBRSxZQUFhO0lBQUssRUFBRSxPQUFPM0MsR0FBRyxDQUFDO0lBQUUsT0FBTyxDQUFDb0MsNEJBQTRCLFNBQVNBO1FBQThCLE9BQU8sQ0FBQyxDQUFDcEM7SUFBRztBQUFNO0FBQ2xQLFNBQVNrQyxnQkFBZ0IxQyxDQUFDO0lBQUkwQyxrQkFBa0JqQyxPQUFPNEMsY0FBYyxHQUFHNUMsT0FBTzZDLGNBQWMsQ0FBQ0MsSUFBSSxLQUFLLFNBQVNiLGdCQUFnQjFDLENBQUM7UUFBSSxPQUFPQSxFQUFFd0QsU0FBUyxJQUFJL0MsT0FBTzZDLGNBQWMsQ0FBQ3REO0lBQUk7SUFBRyxPQUFPMEMsZ0JBQWdCMUM7QUFBSTtBQUNuTixTQUFTeUQsVUFBVUMsUUFBUSxFQUFFQyxVQUFVO0lBQUksSUFBSSxPQUFPQSxlQUFlLGNBQWNBLGVBQWUsTUFBTTtRQUFFLE1BQU0sSUFBSS9CLFVBQVU7SUFBdUQ7SUFBRThCLFNBQVN0RCxTQUFTLEdBQUdLLE9BQU9tRCxNQUFNLENBQUNELGNBQWNBLFdBQVd2RCxTQUFTLEVBQUU7UUFBRUQsYUFBYTtZQUFFMEQsT0FBT0g7WUFBVXZCLFVBQVU7WUFBTUQsY0FBYztRQUFLO0lBQUU7SUFBSXpCLE9BQU9lLGNBQWMsQ0FBQ2tDLFVBQVUsYUFBYTtRQUFFdkIsVUFBVTtJQUFNO0lBQUksSUFBSXdCLFlBQVlHLGdCQUFnQkosVUFBVUM7QUFBYTtBQUNuYyxTQUFTRyxnQkFBZ0I5RCxDQUFDLEVBQUUrRCxDQUFDO0lBQUlELGtCQUFrQnJELE9BQU80QyxjQUFjLEdBQUc1QyxPQUFPNEMsY0FBYyxDQUFDRSxJQUFJLEtBQUssU0FBU08sZ0JBQWdCOUQsQ0FBQyxFQUFFK0QsQ0FBQztRQUFJL0QsRUFBRXdELFNBQVMsR0FBR087UUFBRyxPQUFPL0Q7SUFBRztJQUFHLE9BQU84RCxnQkFBZ0I5RCxHQUFHK0Q7QUFBSTtBQUN2TSxTQUFTMUMsZ0JBQWdCMkMsR0FBRyxFQUFFM0IsR0FBRyxFQUFFd0IsS0FBSztJQUFJeEIsTUFBTUQsZUFBZUM7SUFBTSxJQUFJQSxPQUFPMkIsS0FBSztRQUFFdkQsT0FBT2UsY0FBYyxDQUFDd0MsS0FBSzNCLEtBQUs7WUFBRXdCLE9BQU9BO1lBQU8vQyxZQUFZO1lBQU1vQixjQUFjO1lBQU1DLFVBQVU7UUFBSztJQUFJLE9BQU87UUFBRTZCLEdBQUcsQ0FBQzNCLElBQUksR0FBR3dCO0lBQU87SUFBRSxPQUFPRztBQUFLO0FBQzNPLFNBQVM1QixlQUFlNUIsQ0FBQztJQUFJLElBQUl3QixJQUFJaUMsYUFBYXpELEdBQUc7SUFBVyxPQUFPLFlBQVlULFFBQVFpQyxLQUFLQSxJQUFJa0MsT0FBT2xDO0FBQUk7QUFDL0csU0FBU2lDLGFBQWF6RCxDQUFDLEVBQUVELENBQUM7SUFBSSxJQUFJLFlBQVlSLFFBQVFTLE1BQU0sQ0FBQ0EsR0FBRyxPQUFPQTtJQUFHLElBQUlGLElBQUlFLENBQUMsQ0FBQ1AsT0FBT2tFLFdBQVcsQ0FBQztJQUFFLElBQUksS0FBSyxNQUFNN0QsR0FBRztRQUFFLElBQUkwQixJQUFJMUIsRUFBRTBDLElBQUksQ0FBQ3hDLEdBQUdELEtBQUs7UUFBWSxJQUFJLFlBQVlSLFFBQVFpQyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJSixVQUFVO0lBQWlEO0lBQUUsT0FBTyxDQUFDLGFBQWFyQixJQUFJMkQsU0FBU0UsTUFBSyxFQUFHNUQ7QUFBSTtBQUMzVDs7Q0FFQyxHQUM0QztBQUNtQjtBQUNOO0FBQ2xCO0FBQ3dCO0FBQ2hFLFNBQVNtRSxjQUFjQyxLQUFLO0lBQzFCLE9BQU9BLE1BQU1DLE9BQU87QUFDdEI7QUFDQSxTQUFTQyxjQUFjQyxPQUFPLEVBQUVoRCxLQUFLO0lBQ25DLElBQUssV0FBVyxHQUFFc0MsMkRBQW9CLENBQUNVLFVBQVU7UUFDL0MsT0FBTyxXQUFXLEdBQUVWLHlEQUFrQixDQUFDVSxTQUFTaEQ7SUFDbEQ7SUFDQSxJQUFJLE9BQU9nRCxZQUFZLFlBQVk7UUFDakMsT0FBTyxXQUFXLEdBQUVWLDBEQUFtQixDQUFDVSxTQUFTaEQ7SUFDbkQ7SUFDQSxPQUFPLFdBQVcsR0FBRXNDLDBEQUFtQixDQUFDRSx5RUFBcUJBLEVBQUV4QztBQUNqRTtBQUNPLElBQUlvRCxVQUFVLFdBQVcsR0FBRSxTQUFVQyxjQUFjO0lBQ3hEM0IsVUFBVTBCLFNBQVNDO0lBQ25CLFNBQVNEO1FBQ1AxRCxnQkFBZ0IsSUFBSSxFQUFFMEQ7UUFDdEIsT0FBTzFDLFdBQVcsSUFBSSxFQUFFMEMsU0FBU2pFO0lBQ25DO0lBQ0FvQixhQUFhNkMsU0FBUztRQUFDO1lBQ3JCOUMsS0FBSztZQUNMd0IsT0FBTyxTQUFTd0I7Z0JBQ2QsSUFBSUMsUUFBUSxJQUFJO2dCQUNoQixJQUFJQyxjQUFjLElBQUksQ0FBQ3hELEtBQUssRUFDMUJ5RCxTQUFTRCxZQUFZQyxNQUFNLEVBQzNCQyxxQkFBcUJGLFlBQVlFLGtCQUFrQixFQUNuREMsb0JBQW9CSCxZQUFZRyxpQkFBaUIsRUFDakRDLGtCQUFrQkosWUFBWUksZUFBZSxFQUM3Q1osVUFBVVEsWUFBWVIsT0FBTyxFQUM3QmEsYUFBYUwsWUFBWUssVUFBVSxFQUNuQ0MsYUFBYU4sWUFBWU0sVUFBVSxFQUNuQ0Msb0JBQW9CUCxZQUFZTyxpQkFBaUIsRUFDakRDLFNBQVNSLFlBQVlRLE1BQU0sRUFDM0JDLFVBQVVULFlBQVlTLE9BQU8sRUFDN0JDLGdCQUFnQlYsWUFBWVUsYUFBYSxFQUN6Q0MsV0FBV1gsWUFBWVcsUUFBUSxFQUMvQkMsbUJBQW1CWixZQUFZWSxnQkFBZ0IsRUFDL0NDLGlCQUFpQmIsWUFBWWEsY0FBYyxFQUMzQ0MsVUFBVWQsWUFBWWMsT0FBTyxFQUM3QkMsZUFBZWYsWUFBWWUsWUFBWTtnQkFDekMsSUFBSUMsZUFBZVAsWUFBWSxRQUFRQSxZQUFZLEtBQUssSUFBSUEsVUFBVSxFQUFFO2dCQUN4RSxJQUFJSCxjQUFjVSxhQUFhcEYsTUFBTSxFQUFFO29CQUNyQ29GLGVBQWU3Qiw0RUFBY0EsQ0FBQ3NCLFFBQVFwRixNQUFNLENBQUMsU0FBVWdFLEtBQUs7d0JBQzFELE9BQU9BLE1BQU1mLEtBQUssSUFBSSxRQUFTZSxDQUFBQSxNQUFNNEIsSUFBSSxLQUFLLFFBQVFsQixNQUFNdkQsS0FBSyxDQUFDMEUsYUFBYTtvQkFDakYsSUFBSVIsZUFBZXRCO2dCQUNyQjtnQkFDQSxJQUFJK0IsYUFBYUgsYUFBYXBGLE1BQU0sR0FBRztnQkFDdkMsT0FBTyxXQUFXLEdBQUVrRCwwREFBbUIsQ0FBQ0csbUVBQWtCQSxFQUFFO29CQUMxRGlCLG9CQUFvQkE7b0JBQ3BCQyxtQkFBbUJBO29CQUNuQkMsaUJBQWlCQTtvQkFDakJHLG1CQUFtQkE7b0JBQ25CTixRQUFRQTtvQkFDUkksWUFBWUE7b0JBQ1pjLFlBQVlBO29CQUNaWCxRQUFRQTtvQkFDUkcsVUFBVUE7b0JBQ1ZDLGtCQUFrQkE7b0JBQ2xCQyxnQkFBZ0JBO29CQUNoQkMsU0FBU0E7b0JBQ1RDLGNBQWNBO2dCQUNoQixHQUFHeEIsY0FBY0MsU0FBUzlELGNBQWNBLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQ2MsS0FBSyxHQUFHLENBQUMsR0FBRztvQkFDekVpRSxTQUFTTztnQkFDWDtZQUNGO1FBQ0Y7S0FBRTtJQUNGLE9BQU9wQjtBQUNULEVBQUViLGdEQUFhQSxFQUFFO0FBQ2pCakQsZ0JBQWdCOEQsU0FBUyxlQUFlO0FBQ3hDOUQsZ0JBQWdCOEQsU0FBUyxnQkFBZ0I7SUFDdkN3QixvQkFBb0I7SUFDcEJsQixvQkFBb0I7UUFDbEJtQixHQUFHO1FBQ0hDLEdBQUc7SUFDTDtJQUNBbkIsbUJBQW1CO0lBQ25CQyxpQkFBaUI7SUFDakJtQixjQUFjLENBQUM7SUFDZmxCLFlBQVk7UUFDVmdCLEdBQUc7UUFDSEMsR0FBRztJQUNMO0lBQ0FFLFFBQVE7SUFDUkMsYUFBYSxDQUFDO0lBQ2RuQixZQUFZO0lBQ1pDLG1CQUFtQixDQUFDckIsZ0RBQU1BLENBQUN3QyxLQUFLO0lBQ2hDQyxXQUFXLENBQUM7SUFDWkMsWUFBWSxDQUFDO0lBQ2JwQixRQUFRO0lBQ1JJLGtCQUFrQjtRQUNoQlMsR0FBRztRQUNIQyxHQUFHO0lBQ0w7SUFDQU8sV0FBVztJQUNYQyxTQUFTO0lBQ1RqQixnQkFBZ0I7SUFDaEJDLFNBQVM7UUFDUE8sR0FBRztRQUNIQyxHQUFHO1FBQ0hTLFFBQVE7UUFDUkMsT0FBTztJQUNUO0lBQ0FqQixjQUFjLENBQUM7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb21wb25lbnQvVG9vbHRpcC5qcz9hMGQ3Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX2NhbGxTdXBlcih0LCBvLCBlKSB7IHJldHVybiBvID0gX2dldFByb3RvdHlwZU9mKG8pLCBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgPyBSZWZsZWN0LmNvbnN0cnVjdChvLCBlIHx8IFtdLCBfZ2V0UHJvdG90eXBlT2YodCkuY29uc3RydWN0b3IpIDogby5hcHBseSh0LCBlKSk7IH1cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyB0cnkgeyB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IH0gY2F0Y2ggKHQpIHt9IHJldHVybiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IGZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHJldHVybiAhIXQ7IH0pKCk7IH1cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBUb29sdGlwXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2x0aXBDb250ZW50IH0gZnJvbSAnLi9EZWZhdWx0VG9vbHRpcENvbnRlbnQnO1xuaW1wb3J0IHsgVG9vbHRpcEJvdW5kaW5nQm94IH0gZnJvbSAnLi9Ub29sdGlwQm91bmRpbmdCb3gnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnLi4vdXRpbC9HbG9iYWwnO1xuaW1wb3J0IHsgZ2V0VW5pcVBheWxvYWQgfSBmcm9tICcuLi91dGlsL3BheWxvYWQvZ2V0VW5pcVBheWxvYWQnO1xuZnVuY3Rpb24gZGVmYXVsdFVuaXFCeShlbnRyeSkge1xuICByZXR1cm4gZW50cnkuZGF0YUtleTtcbn1cbmZ1bmN0aW9uIHJlbmRlckNvbnRlbnQoY29udGVudCwgcHJvcHMpIHtcbiAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY29udGVudCkpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjb250ZW50LCBwcm9wcyk7XG4gIH1cbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KGNvbnRlbnQsIHByb3BzKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRGVmYXVsdFRvb2x0aXBDb250ZW50LCBwcm9wcyk7XG59XG5leHBvcnQgdmFyIFRvb2x0aXAgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QdXJlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUb29sdGlwLCBfUHVyZUNvbXBvbmVudCk7XG4gIGZ1bmN0aW9uIFRvb2x0aXAoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvb2x0aXApO1xuICAgIHJldHVybiBfY2FsbFN1cGVyKHRoaXMsIFRvb2x0aXAsIGFyZ3VtZW50cyk7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFRvb2x0aXAsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYWN0aXZlID0gX3RoaXMkcHJvcHMuYWN0aXZlLFxuICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfdGhpcyRwcm9wcy5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZyA9IF90aGlzJHByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgY29udGVudCA9IF90aGlzJHByb3BzLmNvbnRlbnQsXG4gICAgICAgIGNvb3JkaW5hdGUgPSBfdGhpcyRwcm9wcy5jb29yZGluYXRlLFxuICAgICAgICBmaWx0ZXJOdWxsID0gX3RoaXMkcHJvcHMuZmlsdGVyTnVsbCxcbiAgICAgICAgaXNBbmltYXRpb25BY3RpdmUgPSBfdGhpcyRwcm9wcy5pc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgb2Zmc2V0ID0gX3RoaXMkcHJvcHMub2Zmc2V0LFxuICAgICAgICBwYXlsb2FkID0gX3RoaXMkcHJvcHMucGF5bG9hZCxcbiAgICAgICAgcGF5bG9hZFVuaXFCeSA9IF90aGlzJHByb3BzLnBheWxvYWRVbmlxQnksXG4gICAgICAgIHBvc2l0aW9uID0gX3RoaXMkcHJvcHMucG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5yZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgICB1c2VUcmFuc2xhdGUzZCA9IF90aGlzJHByb3BzLnVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICB2aWV3Qm94ID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlID0gX3RoaXMkcHJvcHMud3JhcHBlclN0eWxlO1xuICAgICAgdmFyIGZpbmFsUGF5bG9hZCA9IHBheWxvYWQgIT09IG51bGwgJiYgcGF5bG9hZCAhPT0gdm9pZCAwID8gcGF5bG9hZCA6IFtdO1xuICAgICAgaWYgKGZpbHRlck51bGwgJiYgZmluYWxQYXlsb2FkLmxlbmd0aCkge1xuICAgICAgICBmaW5hbFBheWxvYWQgPSBnZXRVbmlxUGF5bG9hZChwYXlsb2FkLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgICAgICByZXR1cm4gZW50cnkudmFsdWUgIT0gbnVsbCAmJiAoZW50cnkuaGlkZSAhPT0gdHJ1ZSB8fCBfdGhpcy5wcm9wcy5pbmNsdWRlSGlkZGVuKTtcbiAgICAgICAgfSksIHBheWxvYWRVbmlxQnksIGRlZmF1bHRVbmlxQnkpO1xuICAgICAgfVxuICAgICAgdmFyIGhhc1BheWxvYWQgPSBmaW5hbFBheWxvYWQubGVuZ3RoID4gMDtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQm91bmRpbmdCb3gsIHtcbiAgICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRWFzaW5nOiBhbmltYXRpb25FYXNpbmcsXG4gICAgICAgIGlzQW5pbWF0aW9uQWN0aXZlOiBpc0FuaW1hdGlvbkFjdGl2ZSxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmUsXG4gICAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICAgIGhhc1BheWxvYWQ6IGhhc1BheWxvYWQsXG4gICAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb246IHJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgIHVzZVRyYW5zbGF0ZTNkOiB1c2VUcmFuc2xhdGUzZCxcbiAgICAgICAgdmlld0JveDogdmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlOiB3cmFwcGVyU3R5bGVcbiAgICAgIH0sIHJlbmRlckNvbnRlbnQoY29udGVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLnByb3BzKSwge30sIHtcbiAgICAgICAgcGF5bG9hZDogZmluYWxQYXlsb2FkXG4gICAgICB9KSkpO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVG9vbHRpcDtcbn0oUHVyZUNvbXBvbmVudCk7XG5fZGVmaW5lUHJvcGVydHkoVG9vbHRpcCwgXCJkaXNwbGF5TmFtZVwiLCAnVG9vbHRpcCcpO1xuX2RlZmluZVByb3BlcnR5KFRvb2x0aXAsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgYWNjZXNzaWJpbGl0eUxheWVyOiBmYWxzZSxcbiAgYWxsb3dFc2NhcGVWaWV3Qm94OiB7XG4gICAgeDogZmFsc2UsXG4gICAgeTogZmFsc2VcbiAgfSxcbiAgYW5pbWF0aW9uRHVyYXRpb246IDQwMCxcbiAgYW5pbWF0aW9uRWFzaW5nOiAnZWFzZScsXG4gIGNvbnRlbnRTdHlsZToge30sXG4gIGNvb3JkaW5hdGU6IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfSxcbiAgY3Vyc29yOiB0cnVlLFxuICBjdXJzb3JTdHlsZToge30sXG4gIGZpbHRlck51bGw6IHRydWUsXG4gIGlzQW5pbWF0aW9uQWN0aXZlOiAhR2xvYmFsLmlzU3NyLFxuICBpdGVtU3R5bGU6IHt9LFxuICBsYWJlbFN0eWxlOiB7fSxcbiAgb2Zmc2V0OiAxMCxcbiAgcmV2ZXJzZURpcmVjdGlvbjoge1xuICAgIHg6IGZhbHNlLFxuICAgIHk6IGZhbHNlXG4gIH0sXG4gIHNlcGFyYXRvcjogJyA6ICcsXG4gIHRyaWdnZXI6ICdob3ZlcicsXG4gIHVzZVRyYW5zbGF0ZTNkOiBmYWxzZSxcbiAgdmlld0JveDoge1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgd2lkdGg6IDBcbiAgfSxcbiAgd3JhcHBlclN0eWxlOiB7fVxufSk7Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJUeXBlRXJyb3IiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiaSIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzZWxmIiwiY2FsbCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJ2YWx1ZSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJvYmoiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwiUHVyZUNvbXBvbmVudCIsIkRlZmF1bHRUb29sdGlwQ29udGVudCIsIlRvb2x0aXBCb3VuZGluZ0JveCIsIkdsb2JhbCIsImdldFVuaXFQYXlsb2FkIiwiZGVmYXVsdFVuaXFCeSIsImVudHJ5IiwiZGF0YUtleSIsInJlbmRlckNvbnRlbnQiLCJjb250ZW50IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiVG9vbHRpcCIsIl9QdXJlQ29tcG9uZW50IiwicmVuZGVyIiwiX3RoaXMiLCJfdGhpcyRwcm9wcyIsImFjdGl2ZSIsImFsbG93RXNjYXBlVmlld0JveCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiY29vcmRpbmF0ZSIsImZpbHRlck51bGwiLCJpc0FuaW1hdGlvbkFjdGl2ZSIsIm9mZnNldCIsInBheWxvYWQiLCJwYXlsb2FkVW5pcUJ5IiwicG9zaXRpb24iLCJyZXZlcnNlRGlyZWN0aW9uIiwidXNlVHJhbnNsYXRlM2QiLCJ2aWV3Qm94Iiwid3JhcHBlclN0eWxlIiwiZmluYWxQYXlsb2FkIiwiaGlkZSIsImluY2x1ZGVIaWRkZW4iLCJoYXNQYXlsb2FkIiwiYWNjZXNzaWJpbGl0eUxheWVyIiwieCIsInkiLCJjb250ZW50U3R5bGUiLCJjdXJzb3IiLCJjdXJzb3JTdHlsZSIsImlzU3NyIiwiaXRlbVN0eWxlIiwibGFiZWxTdHlsZSIsInNlcGFyYXRvciIsInRyaWdnZXIiLCJoZWlnaHQiLCJ3aWR0aCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/Tooltip.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js":
/*!*******************************************************************!*\
!*** ./node_modules/recharts/es6/component/TooltipBoundingBox.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TooltipBoundingBox: () => (/* binding */ TooltipBoundingBox)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _util_tooltip_translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/tooltip/translate */ \"(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _callSuper(t, o, e) {\n return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\nvar EPSILON = 1;\nvar TooltipBoundingBox = /*#__PURE__*/ function(_PureComponent) {\n _inherits(TooltipBoundingBox, _PureComponent);\n function TooltipBoundingBox() {\n var _this;\n _classCallCheck(this, TooltipBoundingBox);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n dismissed: false,\n dismissedAtCoordinate: {\n x: 0,\n y: 0\n },\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function(event) {\n if (event.key === \"Escape\") {\n var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n _this.setState({\n dismissed: true,\n dismissedAtCoordinate: {\n x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n }\n });\n }\n });\n return _this;\n }\n _createClass(TooltipBoundingBox, [\n {\n key: \"updateBBox\",\n value: function updateBBox() {\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n this.setState({\n lastBoundingBox: {\n width: box.width,\n height: box.height\n }\n });\n }\n } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n this.setState({\n lastBoundingBox: {\n width: -1,\n height: -1\n }\n });\n }\n }\n },\n {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener(\"keydown\", this.handleKeyDown);\n this.updateBBox();\n }\n },\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.handleKeyDown);\n }\n },\n {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n var _this$props$coordinat5, _this$props$coordinat6;\n if (this.props.active) {\n this.updateBBox();\n }\n if (!this.state.dismissed) {\n return;\n }\n if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n this.state.dismissed = false;\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props, active = _this$props.active, allowEscapeViewBox = _this$props.allowEscapeViewBox, animationDuration = _this$props.animationDuration, animationEasing = _this$props.animationEasing, children = _this$props.children, coordinate = _this$props.coordinate, hasPayload = _this$props.hasPayload, isAnimationActive = _this$props.isAnimationActive, offset = _this$props.offset, position = _this$props.position, reverseDirection = _this$props.reverseDirection, useTranslate3d = _this$props.useTranslate3d, viewBox = _this$props.viewBox, wrapperStyle = _this$props.wrapperStyle;\n var _getTooltipTranslate = (0,_util_tooltip_translate__WEBPACK_IMPORTED_MODULE_1__.getTooltipTranslate)({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n offsetTopLeft: offset,\n position: position,\n reverseDirection: reverseDirection,\n tooltipBox: this.state.lastBoundingBox,\n useTranslate3d: useTranslate3d,\n viewBox: viewBox\n }), cssClasses = _getTooltipTranslate.cssClasses, cssProperties = _getTooltipTranslate.cssProperties;\n var outerStyle = _objectSpread(_objectSpread({\n transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n }, cssProperties), {}, {\n pointerEvents: \"none\",\n visibility: !this.state.dismissed && active && hasPayload ? \"visible\" : \"hidden\",\n position: \"absolute\",\n top: 0,\n left: 0\n }, wrapperStyle);\n return(/*#__PURE__*/ // This element allow listening to the `Escape` key.\n // See https://github.com/recharts/recharts/pull/2925\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n tabIndex: -1,\n className: cssClasses,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, children));\n }\n }\n ]);\n return TooltipBoundingBox;\n}(react__WEBPACK_IMPORTED_MODULE_0__.PureComponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwQm91bmRpbmdCb3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMs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S0FBSztvQkFDTEMsTUFBTTtnQkFDUixHQUFHWjtnQkFDSCxPQUNFLFdBQVcsR0FDWCxvREFBb0Q7Z0JBQ3BELHFEQUFxRDtnQkFDckR6RCwwREFBbUIsQ0FBQyxPQUFPO29CQUN6QnVFLFVBQVUsQ0FBQztvQkFDWEMsV0FBV1g7b0JBQ1hZLE9BQU9WO29CQUNQVyxLQUFLLFNBQVNBLElBQUlDLElBQUk7d0JBQ3BCL0IsT0FBT2pCLFdBQVcsR0FBR2dEO29CQUN2QjtnQkFDRixHQUFHMUI7WUFFUDtRQUNGO0tBQUU7SUFDRixPQUFPN0M7QUFDVCxFQUFFSCxnREFBYUEsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbXBvbmVudC9Ub29sdGlwQm91bmRpbmdCb3guanM/NGZkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIF90b1Byb3BlcnR5S2V5KGRlc2NyaXB0b3Iua2V5KSwgZGVzY3JpcHRvcik7IH0gfVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cbmZ1bmN0aW9uIF9jYWxsU3VwZXIodCwgbywgZSkgeyByZXR1cm4gbyA9IF9nZXRQcm90b3R5cGVPZihvKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpID8gUmVmbGVjdC5jb25zdHJ1Y3QobywgZSB8fCBbXSwgX2dldFByb3RvdHlwZU9mKHQpLmNvbnN0cnVjdG9yKSA6IG8uYXBwbHkodCwgZSkpOyB9XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IGVsc2UgaWYgKGNhbGwgIT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IHRyeSB7IHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgfSBjYXRjaCAodCkge30gcmV0dXJuIChfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgcmV0dXJuICEhdDsgfSkoKTsgfVxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldFRvb2x0aXBUcmFuc2xhdGUgfSBmcm9tICcuLi91dGlsL3Rvb2x0aXAvdHJhbnNsYXRlJztcbnZhciBFUFNJTE9OID0gMTtcbmV4cG9ydCB2YXIgVG9vbHRpcEJvdW5kaW5nQm94ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVG9vbHRpcEJvdW5kaW5nQm94LCBfUHVyZUNvbXBvbmVudCk7XG4gIGZ1bmN0aW9uIFRvb2x0aXBCb3VuZGluZ0JveCgpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvb2x0aXBCb3VuZGluZ0JveCk7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBfdGhpcyA9IF9jYWxsU3VwZXIodGhpcywgVG9vbHRpcEJvdW5kaW5nQm94LCBbXS5jb25jYXQoYXJncykpO1xuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7XG4gICAgICBkaXNtaXNzZWQ6IGZhbHNlLFxuICAgICAgZGlzbWlzc2VkQXRDb29yZGluYXRlOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH0sXG4gICAgICBsYXN0Qm91bmRpbmdCb3g6IHtcbiAgICAgICAgd2lkdGg6IC0xLFxuICAgICAgICBoZWlnaHQ6IC0xXG4gICAgICB9XG4gICAgfSk7XG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkY29vcmRpbmF0LCBfdGhpcyRwcm9wcyRjb29yZGluYXQyLCBfdGhpcyRwcm9wcyRjb29yZGluYXQzLCBfdGhpcyRwcm9wcyRjb29yZGluYXQ0O1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgZGlzbWlzc2VkOiB0cnVlLFxuICAgICAgICAgIGRpc21pc3NlZEF0Q29vcmRpbmF0ZToge1xuICAgICAgICAgICAgeDogKF90aGlzJHByb3BzJGNvb3JkaW5hdCA9IChfdGhpcyRwcm9wcyRjb29yZGluYXQyID0gX3RoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0Mi54KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRjb29yZGluYXQgIT09IHZvaWQgMCA/IF90aGlzJHByb3BzJGNvb3JkaW5hdCA6IDAsXG4gICAgICAgICAgICB5OiAoX3RoaXMkcHJvcHMkY29vcmRpbmF0MyA9IChfdGhpcyRwcm9wcyRjb29yZGluYXQ0ID0gX3RoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0NC55KSAhPT0gbnVsbCAmJiBfdGhpcyRwcm9wcyRjb29yZGluYXQzICE9PSB2b2lkIDAgPyBfdGhpcyRwcm9wcyRjb29yZGluYXQzIDogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIF9jcmVhdGVDbGFzcyhUb29sdGlwQm91bmRpbmdCb3gsIFt7XG4gICAga2V5OiBcInVwZGF0ZUJCb3hcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlQkJveCgpIHtcbiAgICAgIGlmICh0aGlzLndyYXBwZXJOb2RlICYmIHRoaXMud3JhcHBlck5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSB7XG4gICAgICAgIHZhciBib3ggPSB0aGlzLndyYXBwZXJOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAoTWF0aC5hYnMoYm94LndpZHRoIC0gdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gud2lkdGgpID4gRVBTSUxPTiB8fCBNYXRoLmFicyhib3guaGVpZ2h0IC0gdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0KSA+IEVQU0lMT04pIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGxhc3RCb3VuZGluZ0JveDoge1xuICAgICAgICAgICAgICB3aWR0aDogYm94LndpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGJveC5oZWlnaHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmxhc3RCb3VuZGluZ0JveC53aWR0aCAhPT0gLTEgfHwgdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3guaGVpZ2h0ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBsYXN0Qm91bmRpbmdCb3g6IHtcbiAgICAgICAgICAgIHdpZHRoOiAtMSxcbiAgICAgICAgICAgIGhlaWdodDogLTFcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleURvd24pO1xuICAgICAgdGhpcy51cGRhdGVCQm94KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMkY29vcmRpbmF0NSwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NjtcbiAgICAgIGlmICh0aGlzLnByb3BzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZUJCb3goKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zdGF0ZS5kaXNtaXNzZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCgoX3RoaXMkcHJvcHMkY29vcmRpbmF0NSA9IHRoaXMucHJvcHMuY29vcmRpbmF0ZSkgPT09IG51bGwgfHwgX3RoaXMkcHJvcHMkY29vcmRpbmF0NSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkY29vcmRpbmF0NS54KSAhPT0gdGhpcy5zdGF0ZS5kaXNtaXNzZWRBdENvb3JkaW5hdGUueCB8fCAoKF90aGlzJHByb3BzJGNvb3JkaW5hdDYgPSB0aGlzLnByb3BzLmNvb3JkaW5hdGUpID09PSBudWxsIHx8IF90aGlzJHByb3BzJGNvb3JkaW5hdDYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGNvb3JkaW5hdDYueSkgIT09IHRoaXMuc3RhdGUuZGlzbWlzc2VkQXRDb29yZGluYXRlLnkpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5kaXNtaXNzZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgYWN0aXZlID0gX3RoaXMkcHJvcHMuYWN0aXZlLFxuICAgICAgICBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfdGhpcyRwcm9wcy5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvbkVhc2luZyA9IF90aGlzJHByb3BzLmFuaW1hdGlvbkVhc2luZyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgY29vcmRpbmF0ZSA9IF90aGlzJHByb3BzLmNvb3JkaW5hdGUsXG4gICAgICAgIGhhc1BheWxvYWQgPSBfdGhpcyRwcm9wcy5oYXNQYXlsb2FkLFxuICAgICAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IF90aGlzJHByb3BzLmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgICAgICBvZmZzZXQgPSBfdGhpcyRwcm9wcy5vZmZzZXQsXG4gICAgICAgIHBvc2l0aW9uID0gX3RoaXMkcHJvcHMucG9zaXRpb24sXG4gICAgICAgIHJldmVyc2VEaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5yZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgICB1c2VUcmFuc2xhdGUzZCA9IF90aGlzJHByb3BzLnVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICB2aWV3Qm94ID0gX3RoaXMkcHJvcHMudmlld0JveCxcbiAgICAgICAgd3JhcHBlclN0eWxlID0gX3RoaXMkcHJvcHMud3JhcHBlclN0eWxlO1xuICAgICAgdmFyIF9nZXRUb29sdGlwVHJhbnNsYXRlID0gZ2V0VG9vbHRpcFRyYW5zbGF0ZSh7XG4gICAgICAgICAgYWxsb3dFc2NhcGVWaWV3Qm94OiBhbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgICAgICAgY29vcmRpbmF0ZTogY29vcmRpbmF0ZSxcbiAgICAgICAgICBvZmZzZXRUb3BMZWZ0OiBvZmZzZXQsXG4gICAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICAgIHJldmVyc2VEaXJlY3Rpb246IHJldmVyc2VEaXJlY3Rpb24sXG4gICAgICAgICAgdG9vbHRpcEJveDogdGhpcy5zdGF0ZS5sYXN0Qm91bmRpbmdCb3gsXG4gICAgICAgICAgdXNlVHJhbnNsYXRlM2Q6IHVzZVRyYW5zbGF0ZTNkLFxuICAgICAgICAgIHZpZXdCb3g6IHZpZXdCb3hcbiAgICAgICAgfSksXG4gICAgICAgIGNzc0NsYXNzZXMgPSBfZ2V0VG9vbHRpcFRyYW5zbGF0ZS5jc3NDbGFzc2VzLFxuICAgICAgICBjc3NQcm9wZXJ0aWVzID0gX2dldFRvb2x0aXBUcmFuc2xhdGUuY3NzUHJvcGVydGllcztcbiAgICAgIHZhciBvdXRlclN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgdHJhbnNpdGlvbjogaXNBbmltYXRpb25BY3RpdmUgJiYgYWN0aXZlID8gXCJ0cmFuc2Zvcm0gXCIuY29uY2F0KGFuaW1hdGlvbkR1cmF0aW9uLCBcIm1zIFwiKS5jb25jYXQoYW5pbWF0aW9uRWFzaW5nKSA6IHVuZGVmaW5lZFxuICAgICAgfSwgY3NzUHJvcGVydGllcyksIHt9LCB7XG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgdmlzaWJpbGl0eTogIXRoaXMuc3RhdGUuZGlzbWlzc2VkICYmIGFjdGl2ZSAmJiBoYXNQYXlsb2FkID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDBcbiAgICAgIH0sIHdyYXBwZXJTdHlsZSk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgIC8vIFRoaXMgZWxlbWVudCBhbGxvdyBsaXN0ZW5pbmcgdG8gdGhlIGBFc2NhcGVgIGtleS5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWNoYXJ0cy9yZWNoYXJ0cy9wdWxsLzI5MjVcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgIGNsYXNzTmFtZTogY3NzQ2xhc3NlcyxcbiAgICAgICAgICBzdHlsZTogb3V0ZXJTdHlsZSxcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihub2RlKSB7XG4gICAgICAgICAgICBfdGhpczIud3JhcHBlck5vZGUgPSBub2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgY2hpbGRyZW4pXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuICByZXR1cm4gVG9vbHRpcEJvdW5kaW5nQm94O1xufShQdXJlQ29tcG9uZW50KTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwiZGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsInNlbGYiLCJjYWxsIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIm9iaiIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiZ2V0VG9vbHRpcFRyYW5zbGF0ZSIsIkVQU0lMT04iLCJUb29sdGlwQm91bmRpbmdCb3giLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJkaXNtaXNzZWQiLCJkaXNtaXNzZWRBdENvb3JkaW5hdGUiLCJ4IiwieSIsImxhc3RCb3VuZGluZ0JveCIsIndpZHRoIiwiaGVpZ2h0IiwiZXZlbnQiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQyIiwiX3RoaXMkcHJvcHMkY29vcmRpbmF0MyIsIl90aGlzJHByb3BzJGNvb3JkaW5hdDQiLCJzZXRTdGF0ZSIsImNvb3JkaW5hdGUiLCJ1cGRhdGVCQm94Iiwid3JhcHBlck5vZGUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3giLCJNYXRoIiwiYWJzIiwic3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUtleURvd24iLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwcm9wcyRjb29yZGluYXQ1IiwiX3RoaXMkcHJvcHMkY29vcmRpbmF0NiIsImFjdGl2ZSIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzIiwiYWxsb3dFc2NhcGVWaWV3Qm94IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJjaGlsZHJlbiIsImhhc1BheWxvYWQiLCJpc0FuaW1hdGlvbkFjdGl2ZSIsIm9mZnNldCIsInBvc2l0aW9uIiwicmV2ZXJzZURpcmVjdGlvbiIsInVzZVRyYW5zbGF0ZTNkIiwidmlld0JveCIsIndyYXBwZXJTdHlsZSIsIl9nZXRUb29sdGlwVHJhbnNsYXRlIiwib2Zmc2V0VG9wTGVmdCIsInRvb2x0aXBCb3giLCJjc3NDbGFzc2VzIiwiY3NzUHJvcGVydGllcyIsIm91dGVyU3R5bGUiLCJ0cmFuc2l0aW9uIiwidW5kZWZpbmVkIiwicG9pbnRlckV2ZW50cyIsInZpc2liaWxpdHkiLCJ0b3AiLCJsZWZ0IiwiY3JlYXRlRWxlbWVudCIsInRhYkluZGV4IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZWYiLCJub2RlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/component/TooltipBoundingBox.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/container/Layer.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/container/Layer.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Layer: () => (/* binding */ Layer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"children\",\n \"className\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\nvar Layer = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef(function(props, ref) {\n var children = props.children, className = props.className, others = _objectWithoutProperties(props, _excluded);\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-layer\", className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", _extends({\n className: layerClass\n }, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true), {\n ref: ref\n }), children);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9MYXllci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUlBLFlBQVk7SUFBQztJQUFZO0NBQVk7QUFDekMsU0FBU0M7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPUyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTYSxLQUFLLENBQUMsSUFBSSxFQUFFUDtBQUFZO0FBQ2xWLFNBQVNRLHlCQUF5Qk4sTUFBTSxFQUFFTyxRQUFRO0lBQUksSUFBSVAsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlKLFNBQVNZLDhCQUE4QlIsUUFBUU87SUFBVyxJQUFJTixLQUFLSjtJQUFHLElBQUlKLE9BQU9nQixxQkFBcUIsRUFBRTtRQUFFLElBQUlDLG1CQUFtQmpCLE9BQU9nQixxQkFBcUIsQ0FBQ1Q7UUFBUyxJQUFLSCxJQUFJLEdBQUdBLElBQUlhLGlCQUFpQlgsTUFBTSxFQUFFRixJQUFLO1lBQUVJLE1BQU1TLGdCQUFnQixDQUFDYixFQUFFO1lBQUUsSUFBSVUsU0FBU0ksT0FBTyxDQUFDVixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNSLE9BQU9TLFNBQVMsQ0FBQ1Usb0JBQW9CLENBQUNSLElBQUksQ0FBQ0osUUFBUUMsTUFBTTtZQUFVTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9MO0FBQVE7QUFDM2UsU0FBU1ksOEJBQThCUixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBUyxDQUFDO0lBQUcsSUFBSWlCLGFBQWFwQixPQUFPcUIsSUFBSSxDQUFDZDtJQUFTLElBQUlDLEtBQUtKO0lBQUcsSUFBS0EsSUFBSSxHQUFHQSxJQUFJZ0IsV0FBV2QsTUFBTSxFQUFFRixJQUFLO1FBQUVJLE1BQU1ZLFVBQVUsQ0FBQ2hCLEVBQUU7UUFBRSxJQUFJVSxTQUFTSSxPQUFPLENBQUNWLFFBQVEsR0FBRztRQUFVTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO0lBQUU7SUFBRSxPQUFPTDtBQUFRO0FBQ3hSO0FBQ0Y7QUFDeUI7QUFDMUMsSUFBSXNCLFFBQVEsV0FBVyxHQUFFSCx1REFBZ0IsQ0FBQyxTQUFVSyxLQUFLLEVBQUVDLEdBQUc7SUFDbkUsSUFBSUMsV0FBV0YsTUFBTUUsUUFBUSxFQUMzQkMsWUFBWUgsTUFBTUcsU0FBUyxFQUMzQkMsU0FBU2xCLHlCQUF5QmMsT0FBTzdCO0lBQzNDLElBQUlrQyxhQUFhVCxnREFBSUEsQ0FBQyxrQkFBa0JPO0lBQ3hDLE9BQU8sV0FBVyxHQUFFUiwwREFBbUIsQ0FBQyxLQUFLdkIsU0FBUztRQUNwRCtCLFdBQVdFO0lBQ2IsR0FBR1IsNkRBQVdBLENBQUNPLFFBQVEsT0FBTztRQUM1QkgsS0FBS0E7SUFDUCxJQUFJQztBQUNOLEdBQUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvTGF5ZXIuanM/NzM1MiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIl07XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuZXhwb3J0IHZhciBMYXllciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBvdGhlcnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZCk7XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtbGF5ZXInLCBjbGFzc05hbWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJnXCIsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3NcbiAgfSwgZmlsdGVyUHJvcHMob3RoZXJzLCB0cnVlKSwge1xuICAgIHJlZjogcmVmXG4gIH0pLCBjaGlsZHJlbik7XG59KTsiXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIlJlYWN0IiwiY2xzeCIsImZpbHRlclByb3BzIiwiTGF5ZXIiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm90aGVycyIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/container/Layer.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/container/Surface.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/container/Surface.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Surface: () => (/* binding */ Surface)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nvar _excluded = [\n \"children\",\n \"width\",\n \"height\",\n \"viewBox\",\n \"className\",\n \"style\",\n \"title\",\n \"desc\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Surface\n */ \n\n\nfunction Surface(props) {\n var children = props.children, width = props.width, height = props.height, viewBox = props.viewBox, className = props.className, style = props.style, title = props.title, desc = props.desc, others = _objectWithoutProperties(props, _excluded);\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-surface\", className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(others, true, \"svg\"), {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"title\", null, title), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"desc\", null, desc), children);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRhaW5lci9TdXJmYWNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQVk7SUFBUztJQUFVO0lBQVc7SUFBYTtJQUFTO0lBQVM7Q0FBTztBQUNqRyxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFYsU0FBU1EseUJBQXlCTixNQUFNLEVBQUVPLFFBQVE7SUFBSSxJQUFJUCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUosU0FBU1ksOEJBQThCUixRQUFRTztJQUFXLElBQUlOLEtBQUtKO0lBQUcsSUFBSUosT0FBT2dCLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CakIsT0FBT2dCLHFCQUFxQixDQUFDVDtRQUFTLElBQUtILElBQUksR0FBR0EsSUFBSWEsaUJBQWlCWCxNQUFNLEVBQUVGLElBQUs7WUFBRUksTUFBTVMsZ0JBQWdCLENBQUNiLEVBQUU7WUFBRSxJQUFJVSxTQUFTSSxPQUFPLENBQUNWLFFBQVEsR0FBRztZQUFVLElBQUksQ0FBQ1IsT0FBT1MsU0FBUyxDQUFDVSxvQkFBb0IsQ0FBQ1IsSUFBSSxDQUFDSixRQUFRQyxNQUFNO1lBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7UUFBRTtJQUFFO0lBQUUsT0FBT0w7QUFBUTtBQUMzZSxTQUFTWSw4QkFBOEJSLE1BQU0sRUFBRU8sUUFBUTtJQUFJLElBQUlQLFVBQVUsTUFBTSxPQUFPLENBQUM7SUFBRyxJQUFJSixTQUFTLENBQUM7SUFBRyxJQUFJaUIsYUFBYXBCLE9BQU9xQixJQUFJLENBQUNkO0lBQVMsSUFBSUMsS0FBS0o7SUFBRyxJQUFLQSxJQUFJLEdBQUdBLElBQUlnQixXQUFXZCxNQUFNLEVBQUVGLElBQUs7UUFBRUksTUFBTVksVUFBVSxDQUFDaEIsRUFBRTtRQUFFLElBQUlVLFNBQVNJLE9BQU8sQ0FBQ1YsUUFBUSxHQUFHO1FBQVVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7SUFBRTtJQUFFLE9BQU9MO0FBQVE7QUFDbFQ7O0NBRUMsR0FDeUI7QUFDRjtBQUN5QjtBQUMxQyxTQUFTc0IsUUFBUUMsS0FBSztJQUMzQixJQUFJQyxXQUFXRCxNQUFNQyxRQUFRLEVBQzNCQyxRQUFRRixNQUFNRSxLQUFLLEVBQ25CQyxTQUFTSCxNQUFNRyxNQUFNLEVBQ3JCQyxVQUFVSixNQUFNSSxPQUFPLEVBQ3ZCQyxZQUFZTCxNQUFNSyxTQUFTLEVBQzNCQyxRQUFRTixNQUFNTSxLQUFLLEVBQ25CQyxRQUFRUCxNQUFNTyxLQUFLLEVBQ25CQyxPQUFPUixNQUFNUSxJQUFJLEVBQ2pCQyxTQUFTdEIseUJBQXlCYSxPQUFPNUI7SUFDM0MsSUFBSXNDLFVBQVVOLFdBQVc7UUFDdkJGLE9BQU9BO1FBQ1BDLFFBQVFBO1FBQ1JRLEdBQUc7UUFDSEMsR0FBRztJQUNMO0lBQ0EsSUFBSUMsYUFBYWhCLGdEQUFJQSxDQUFDLG9CQUFvQlE7SUFDMUMsT0FBTyxXQUFXLEdBQUVULDBEQUFtQixDQUFDLE9BQU92QixTQUFTLENBQUMsR0FBR3lCLDZEQUFXQSxDQUFDVyxRQUFRLE1BQU0sUUFBUTtRQUM1RkosV0FBV1E7UUFDWFgsT0FBT0E7UUFDUEMsUUFBUUE7UUFDUkcsT0FBT0E7UUFDUEYsU0FBUyxHQUFHVyxNQUFNLENBQUNMLFFBQVFDLENBQUMsRUFBRSxLQUFLSSxNQUFNLENBQUNMLFFBQVFFLENBQUMsRUFBRSxLQUFLRyxNQUFNLENBQUNMLFFBQVFSLEtBQUssRUFBRSxLQUFLYSxNQUFNLENBQUNMLFFBQVFQLE1BQU07SUFDNUcsSUFBSSxXQUFXLEdBQUVQLDBEQUFtQixDQUFDLFNBQVMsTUFBTVcsUUFBUSxXQUFXLEdBQUVYLDBEQUFtQixDQUFDLFFBQVEsTUFBTVksT0FBT1A7QUFDcEgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9jb250YWluZXIvU3VyZmFjZS5qcz8wNjk4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwidmlld0JveFwiLCBcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwidGl0bGVcIiwgXCJkZXNjXCJdO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbi8qKlxuICogQGZpbGVPdmVydmlldyBTdXJmYWNlXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGZpbHRlclByb3BzIH0gZnJvbSAnLi4vdXRpbC9SZWFjdFV0aWxzJztcbmV4cG9ydCBmdW5jdGlvbiBTdXJmYWNlKHByb3BzKSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LFxuICAgIHZpZXdCb3ggPSBwcm9wcy52aWV3Qm94LFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgIHRpdGxlID0gcHJvcHMudGl0bGUsXG4gICAgZGVzYyA9IHByb3BzLmRlc2MsXG4gICAgb3RoZXJzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHByb3BzLCBfZXhjbHVkZWQpO1xuICB2YXIgc3ZnVmlldyA9IHZpZXdCb3ggfHwge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbiAgdmFyIGxheWVyQ2xhc3MgPSBjbHN4KCdyZWNoYXJ0cy1zdXJmYWNlJywgY2xhc3NOYW1lKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhvdGhlcnMsIHRydWUsICdzdmcnKSwge1xuICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIHZpZXdCb3g6IFwiXCIuY29uY2F0KHN2Z1ZpZXcueCwgXCIgXCIpLmNvbmNhdChzdmdWaWV3LnksIFwiIFwiKS5jb25jYXQoc3ZnVmlldy53aWR0aCwgXCIgXCIpLmNvbmNhdChzdmdWaWV3LmhlaWdodClcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIiwgbnVsbCwgdGl0bGUpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImRlc2NcIiwgbnVsbCwgZGVzYyksIGNoaWxkcmVuKTtcbn0iXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIlJlYWN0IiwiY2xzeCIsImZpbHRlclByb3BzIiwiU3VyZmFjZSIsInByb3BzIiwiY2hpbGRyZW4iLCJ3aWR0aCIsImhlaWdodCIsInZpZXdCb3giLCJjbGFzc05hbWUiLCJzdHlsZSIsInRpdGxlIiwiZGVzYyIsIm90aGVycyIsInN2Z1ZpZXciLCJ4IiwieSIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50IiwiY29uY2F0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/container/Surface.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js":
/*!*****************************************************************!*\
!*** ./node_modules/recharts/es6/context/chartLayoutContext.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChartHeightContext: () => (/* binding */ ChartHeightContext),\n/* harmony export */ ChartLayoutContextProvider: () => (/* binding */ ChartLayoutContextProvider),\n/* harmony export */ ChartWidthContext: () => (/* binding */ ChartWidthContext),\n/* harmony export */ ClipPathIdContext: () => (/* binding */ ClipPathIdContext),\n/* harmony export */ OffsetContext: () => (/* binding */ OffsetContext),\n/* harmony export */ ViewBoxContext: () => (/* binding */ ViewBoxContext),\n/* harmony export */ XAxisContext: () => (/* binding */ XAxisContext),\n/* harmony export */ YAxisContext: () => (/* binding */ YAxisContext),\n/* harmony export */ useArbitraryXAxis: () => (/* binding */ useArbitraryXAxis),\n/* harmony export */ useArbitraryYAxis: () => (/* binding */ useArbitraryYAxis),\n/* harmony export */ useChartHeight: () => (/* binding */ useChartHeight),\n/* harmony export */ useChartWidth: () => (/* binding */ useChartWidth),\n/* harmony export */ useClipPathId: () => (/* binding */ useClipPathId),\n/* harmony export */ useOffset: () => (/* binding */ useOffset),\n/* harmony export */ useViewBox: () => (/* binding */ useViewBox),\n/* harmony export */ useXAxisOrThrow: () => (/* binding */ useXAxisOrThrow),\n/* harmony export */ useYAxisOrThrow: () => (/* binding */ useYAxisOrThrow),\n/* harmony export */ useYAxisWithFiniteDomainOrRandom: () => (/* binding */ useYAxisWithFiniteDomainOrRandom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/find */ \"(ssr)/./node_modules/lodash/find.js\");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/every */ \"(ssr)/./node_modules/lodash/every.js\");\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_every__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _util_calculateViewBox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/calculateViewBox */ \"(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n\n\n\n\nvar XAxisContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar YAxisContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar ViewBoxContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar OffsetContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({});\nvar ClipPathIdContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);\nvar ChartHeightContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(0);\nvar ChartWidthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(0);\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */ var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n var _props$state = props.state, xAxisMap = _props$state.xAxisMap, yAxisMap = _props$state.yAxisMap, offset = _props$state.offset, clipPathId = props.clipPathId, children = props.children, width = props.width, height = props.height;\n /**\n * Perhaps we should compute this property when reading? Let's see what is more often used\n */ var viewBox = (0,_util_calculateViewBox__WEBPACK_IMPORTED_MODULE_4__.calculateViewBox)(offset);\n /*\n * This pretends to be a single context but actually is split into multiple smaller ones.\n * Why?\n * Because one React Context only allows to set one value.\n * But we need to set multiple values.\n * If we do that with one context, then we force re-render on components that might not even be interested\n * in the part of the state that has changed.\n *\n * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n *\n * To actually achieve the optimal re-render, it is necessary to use React.memo().\n * See the test file for details.\n */ return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(XAxisContext.Provider, {\n value: xAxisMap\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(YAxisContext.Provider, {\n value: yAxisMap\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(OffsetContext.Provider, {\n value: offset\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ViewBoxContext.Provider, {\n value: viewBox\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ClipPathIdContext.Provider, {\n value: clipPathId\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ChartHeightContext.Provider, {\n value: height\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ChartWidthContext.Provider, {\n value: width\n }, children)))))));\n};\nvar useClipPathId = function useClipPathId() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return \"There are no available ids.\";\n }\n return \"Available ids are: \".concat(keys, \".\");\n}\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <XAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */ var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n var xAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(XAxisContext);\n !(xAxisMap != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?\") : 0 : void 0;\n var xAxis = xAxisMap[xAxisId];\n !(xAxis != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'Could not find xAxis by id \"'.concat(xAxisId, '\" [').concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : 0 : void 0;\n return xAxis;\n};\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */ var useArbitraryXAxis = function useArbitraryXAxis() {\n var xAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(XAxisContext);\n return (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(xAxisMap);\n};\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */ var useArbitraryYAxis = function useArbitraryYAxis() {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n return (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(yAxisMap);\n};\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */ var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n var yAxisWithFiniteDomain = lodash_find__WEBPACK_IMPORTED_MODULE_2___default()(yAxisMap, function(axis) {\n return lodash_every__WEBPACK_IMPORTED_MODULE_3___default()(axis.domain, Number.isFinite);\n });\n return yAxisWithFiniteDomain || (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.getAnyElementOfObject)(yAxisMap);\n};\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <YAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */ var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n var yAxisMap = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(YAxisContext);\n !(yAxisMap != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?\") : 0 : void 0;\n var yAxis = yAxisMap[yAxisId];\n !(yAxis != null) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'Could not find yAxis by id \"'.concat(yAxisId, '\" [').concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : 0 : void 0;\n return yAxis;\n};\nvar useViewBox = function useViewBox() {\n var viewBox = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ViewBoxContext);\n return viewBox;\n};\nvar useOffset = function useOffset() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OffsetContext);\n};\nvar useChartWidth = function useChartWidth() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ChartWidthContext);\n};\nvar useChartHeight = function useChartHeight() {\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ChartHeightContext);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L2NvbnRleHQvY2hhcnRMYXlvdXRDb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUNwUTtBQUNsQjtBQUNSO0FBQ0U7QUFDMkI7QUFDRjtBQUNuRCxJQUFJYSxlQUFlLFdBQVcsR0FBRVAsb0RBQWFBLENBQUNRLFdBQVc7QUFDekQsSUFBSUMsZUFBZSxXQUFXLEdBQUVULG9EQUFhQSxDQUFDUSxXQUFXO0FBQ3pELElBQUlFLGlCQUFpQixXQUFXLEdBQUVWLG9EQUFhQSxDQUFDUSxXQUFXO0FBQzNELElBQUlHLGdCQUFnQixXQUFXLEdBQUVYLG9EQUFhQSxDQUFDLENBQUMsR0FBRztBQUNuRCxJQUFJWSxvQkFBb0IsV0FBVyxHQUFFWixvREFBYUEsQ0FBQ1EsV0FBVztBQUM5RCxJQUFJSyxxQkFBcUIsV0FBVyxHQUFFYixvREFBYUEsQ0FBQyxHQUFHO0FBQ3ZELElBQUljLG9CQUFvQixXQUFXLEdBQUVkLG9EQUFhQSxDQUFDLEdBQUc7QUFFN0Q7Ozs7Ozs7Q0FPQyxHQUNNLElBQUllLDZCQUE2QixTQUFTQSwyQkFBMkJDLEtBQUs7SUFDL0UsSUFBSUMsZUFBZUQsTUFBTUUsS0FBSyxFQUM1QkMsV0FBV0YsYUFBYUUsUUFBUSxFQUNoQ0MsV0FBV0gsYUFBYUcsUUFBUSxFQUNoQ0MsU0FBU0osYUFBYUksTUFBTSxFQUM1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VyxDQUFBQSxZQUFZLElBQUcsSUFBS21CLEtBQXFDLEdBQUdyQywwREFBU0EsQ0FBQyxPQUFPLHlHQUF5R0EsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2hOLElBQUlpRCxRQUFRL0IsUUFBUSxDQUFDOEIsUUFBUTtJQUM3QixDQUFFQyxDQUFBQSxTQUFTLElBQUcsSUFBS1osS0FBcUMsR0FBR3JDLDBEQUFTQSxDQUFDLE9BQU8sK0JBQWdDa0MsTUFBTSxDQUFDYyxTQUFTLE9BQVFkLE1BQU0sQ0FBQzNDLFFBQVF5RCxVQUFVLE9BQU9kLE1BQU0sQ0FBQ0wsZ0JBQWdCWCxjQUFjbEIsQ0FBZ0IsR0FBRyxLQUFLO0lBQ2pPLE9BQU9pRDtBQUNULEVBQUU7QUFDSyxJQUFJQyxhQUFhLFNBQVNBO0lBQy9CLElBQUkxQixVQUFVekIsaURBQVVBLENBQUNTO0lBQ3pCLE9BQU9nQjtBQUNULEVBQUU7QUFDSyxJQUFJMkIsWUFBWSxTQUFTQTtJQUM5QixPQUFPcEQsaURBQVVBLENBQUNVO0FBQ3BCLEVBQUU7QUFDSyxJQUFJMkMsZ0JBQWdCLFNBQVNBO0lBQ2xDLE9BQU9yRCxpREFBVUEsQ0FBQ2E7QUFDcEIsRUFBRTtBQUNLLElBQUl5QyxpQkFBaUIsU0FBU0E7SUFDbkMsT0FBT3RELGlEQUFVQSxDQUFDWTtBQUNwQixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvY29udGV4dC9jaGFydExheW91dENvbnRleHQuanM/N2JjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnO1xuaW1wb3J0IGV2ZXJ5IGZyb20gJ2xvZGFzaC9ldmVyeSc7XG5pbXBvcnQgeyBjYWxjdWxhdGVWaWV3Qm94IH0gZnJvbSAnLi4vdXRpbC9jYWxjdWxhdGVWaWV3Qm94JztcbmltcG9ydCB7IGdldEFueUVsZW1lbnRPZk9iamVjdCB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbmV4cG9ydCB2YXIgWEF4aXNDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmV4cG9ydCB2YXIgWUF4aXNDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbmV4cG9ydCB2YXIgVmlld0JveENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpO1xuZXhwb3J0IHZhciBPZmZzZXRDb250ZXh0ID0gLyojX19QVVJFX18qL2NyZWF0ZUNvbnRleHQoe30pO1xuZXhwb3J0IHZhciBDbGlwUGF0aElkQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5leHBvcnQgdmFyIENoYXJ0SGVpZ2h0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KDApO1xuZXhwb3J0IHZhciBDaGFydFdpZHRoQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KDApO1xuXG4vKipcbiAqIFdpbGwgYWRkIGFsbCB0aGUgcHJvcGVydGllcyByZXF1aXJlZCB0byByZW5kZXIgYWxsIGluZGl2aWR1YWwgUmVjaGFydHMgY29tcG9uZW50cyBpbnRvIGEgUmVhY3QgQ29udGV4dC5cbiAqXG4gKiBJZiB5b3Ugd2FudCB0byByZWFkIHRoZXNlIHByb3BlcnRpZXMsIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBob29rcyBleHBvcnRlZCBmcm9tIHRoaXMgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHMgQ2F0ZWdvcmljYWxDaGFydFN0YXRlLCBwbHVzIGNoaWxkcmVuXG4gKiBAcmV0dXJucyB7UmVhY3RFbGVtZW50fSBSZWFjdCBDb250ZXh0IFByb3ZpZGVyXG4gKi9cbmV4cG9ydCB2YXIgQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIgPSBmdW5jdGlvbiBDaGFydExheW91dENvbnRleHRQcm92aWRlcihwcm9wcykge1xuICB2YXIgX3Byb3BzJHN0YXRlID0gcHJvcHMuc3RhdGUsXG4gICAgeEF4aXNNYXAgPSBfcHJvcHMkc3RhdGUueEF4aXNNYXAsXG4gICAgeUF4aXNNYXAgPSBfcHJvcHMkc3RhdGUueUF4aXNNYXAsXG4gICAgb2Zmc2V0ID0gX3Byb3BzJHN0YXRlLm9mZnNldCxcbiAgICBjbGlwUGF0aElkID0gcHJvcHMuY2xpcFBhdGhJZCxcbiAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuXG4gIC8qKlxuICAgKiBQZXJoYXBzIHdlIHNob3VsZCBjb21wdXRlIHRoaXMgcHJvcGVydHkgd2hlbiByZWFkaW5nPyBMZXQncyBzZWUgd2hhdCBpcyBtb3JlIG9mdGVuIHVzZWRcbiAgICovXG4gIHZhciB2aWV3Qm94ID0gY2FsY3VsYXRlVmlld0JveChvZmZzZXQpO1xuXG4gIC8qXG4gICAqIFRoaXMgcHJldGVuZHMgdG8gYmUgYSBzaW5nbGUgY29udGV4dCBidXQgYWN0dWFsbHkgaXMgc3BsaXQgaW50byBtdWx0aXBsZSBzbWFsbGVyIG9uZXMuXG4gICAqIFdoeT9cbiAgICogQmVjYXVzZSBvbmUgUmVhY3QgQ29udGV4dCBvbmx5IGFsbG93cyB0byBzZXQgb25lIHZhbHVlLlxuICAgKiBCdXQgd2UgbmVlZCB0byBzZXQgbXVsdGlwbGUgdmFsdWVzLlxuICAgKiBJZiB3ZSBkbyB0aGF0IHdpdGggb25lIGNvbnRleHQsIHRoZW4gd2UgZm9yY2UgcmUtcmVuZGVyIG9uIGNvbXBvbmVudHMgdGhhdCBtaWdodCBub3QgZXZlbiBiZSBpbnRlcmVzdGVkXG4gICAqIGluIHRoZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0aGF0IGhhcyBjaGFuZ2VkLlxuICAgKlxuICAgKiBCeSBzcGxpdHRpbmcgaW50byBzbWFsbGVyIGNvbnRleHRzLCB3ZSBhbGxvdyBlYWNoIGNvbXBvbmVudHMgdG8gYmUgb3B0aW1pemVkIGFuZCBvbmx5IHJlLXJlbmRlciB3aGVuIGl0cyBkZXBlbmRlbmNpZXMgY2hhbmdlLlxuICAgKlxuICAgKiBUbyBhY3R1YWxseSBhY2hpZXZlIHRoZSBvcHRpbWFsIHJlLXJlbmRlciwgaXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSBSZWFjdC5tZW1vKCkuXG4gICAqIFNlZSB0aGUgdGVzdCBmaWxlIGZvciBkZXRhaWxzLlxuICAgKi9cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFhBeGlzQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB4QXhpc01hcFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChZQXhpc0NvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogeUF4aXNNYXBcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoT2Zmc2V0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBvZmZzZXRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVmlld0JveENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdmlld0JveFxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDbGlwUGF0aElkQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjbGlwUGF0aElkXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENoYXJ0SGVpZ2h0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBoZWlnaHRcbiAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hhcnRXaWR0aENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogd2lkdGhcbiAgfSwgY2hpbGRyZW4pKSkpKSkpO1xufTtcbmV4cG9ydCB2YXIgdXNlQ2xpcFBhdGhJZCA9IGZ1bmN0aW9uIHVzZUNsaXBQYXRoSWQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KENsaXBQYXRoSWRDb250ZXh0KTtcbn07XG5mdW5jdGlvbiBnZXRLZXlzRm9yRGVidWcob2JqZWN0KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdUaGVyZSBhcmUgbm8gYXZhaWxhYmxlIGlkcy4nO1xuICB9XG4gIHJldHVybiBcIkF2YWlsYWJsZSBpZHMgYXJlOiBcIi5jb25jYXQoa2V5cywgXCIuXCIpO1xufVxuXG4vKipcbiAqIFRoaXMgZWl0aGVyIGZpbmRzIGFuZCByZXR1cm5zIEF4aXMgYnkgdGhlIHNwZWNpZmllZCBJRCwgb3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBhbiBheGlzIHdpdGggdGhpcyBJRCBkb2VzIG5vdCBleGlzdC5cbiAqXG4gKiBAcGFyYW0geEF4aXNJZCBpZGVudGlmaWVyIG9mIHRoZSBheGlzIC0gaXQncyBlaXRoZXIgYXV0b2dlbmVyYXRlZCAoJzAnKSwgb3IgcGFzc2VkIHZpYSBgaWRgIHByb3AgYXMgPFhBeGlzIGlkPSdmb28nIC8+XG4gKiBAcmV0dXJucyBheGlzIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKiBAdGhyb3dzIEVycm9yIGlmIG5vIGF4aXMgd2l0aCB0aGlzIElEIGV4aXN0c1xuICovXG5leHBvcnQgdmFyIHVzZVhBeGlzT3JUaHJvdyA9IGZ1bmN0aW9uIHVzZVhBeGlzT3JUaHJvdyh4QXhpc0lkKSB7XG4gIHZhciB4QXhpc01hcCA9IHVzZUNvbnRleHQoWEF4aXNDb250ZXh0KTtcbiAgISh4QXhpc01hcCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NvdWxkIG5vdCBmaW5kIFJlY2hhcnRzIGNvbnRleHQ7IGFyZSB5b3Ugc3VyZSB0aGlzIGlzIHJlbmRlcmVkIGluc2lkZSBhIFJlY2hhcnRzIHdyYXBwZXIgY29tcG9uZW50PycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgdmFyIHhBeGlzID0geEF4aXNNYXBbeEF4aXNJZF07XG4gICEoeEF4aXMgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwiQ291bGQgbm90IGZpbmQgeEF4aXMgYnkgaWQgXFxcIlwiLmNvbmNhdCh4QXhpc0lkLCBcIlxcXCIgW1wiKS5jb25jYXQoX3R5cGVvZih4QXhpc0lkKSwgXCJdLiBcIikuY29uY2F0KGdldEtleXNGb3JEZWJ1Zyh4QXhpc01hcCkpKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiB4QXhpcztcbn07XG5cbi8qKlxuICogVGhpcyB3aWxsIGZpbmQgYW4gYXJiaXRyYXJ5IGZpcnN0IFhBeGlzLiBJZiB0aGVyZSdzIGV4YWN0bHkgb25lIGl0IGFsd2F5cyByZXR1cm5zIHRoYXQgb25lXG4gKiAtIGJ1dCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdGhlbiBpdCBjYW4gcmV0dXJuIGFueSBvZiB0aG9zZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCBzcGVjaWZpYyBYQXhpcyBvdXQgb2YgbXVsdGlwbGUgdGhlbiBwcmVmZXIgdXNpbmcgdXNlWEF4aXNPclRocm93XG4gKlxuICogQHJldHVybnMgWCBheGlzT3B0aW9ucywgb3IgdW5kZWZpbmVkIC0gaWYgdGhlcmUgYXJlIG5vIFggYXhlc1xuICovXG5leHBvcnQgdmFyIHVzZUFyYml0cmFyeVhBeGlzID0gZnVuY3Rpb24gdXNlQXJiaXRyYXJ5WEF4aXMoKSB7XG4gIHZhciB4QXhpc01hcCA9IHVzZUNvbnRleHQoWEF4aXNDb250ZXh0KTtcbiAgcmV0dXJuIGdldEFueUVsZW1lbnRPZk9iamVjdCh4QXhpc01hcCk7XG59O1xuXG4vKipcbiAqIFRoaXMgd2lsbCBmaW5kIGFuIGFyYml0cmFyeSBmaXJzdCBZQXhpcy4gSWYgdGhlcmUncyBleGFjdGx5IG9uZSBpdCBhbHdheXMgcmV0dXJucyB0aGF0IG9uZVxuICogLSBidXQgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHRoZW4gaXQgY2FuIHJldHVybiBhbnkgb2YgdGhvc2UuXG4gKlxuICogSWYgeW91IHdhbnQgc3BlY2lmaWMgWUF4aXMgb3V0IG9mIG11bHRpcGxlIHRoZW4gcHJlZmVyIHVzaW5nIHVzZVhBeGlzT3JUaHJvd1xuICpcbiAqIEByZXR1cm5zIFkgYXhpc09wdGlvbnMsIG9yIHVuZGVmaW5lZCAtIGlmIHRoZXJlIGFyZSBubyBZIGF4ZXNcbiAqL1xuZXhwb3J0IHZhciB1c2VBcmJpdHJhcnlZQXhpcyA9IGZ1bmN0aW9uIHVzZUFyYml0cmFyeVlBeGlzKCkge1xuICB2YXIgeUF4aXNNYXAgPSB1c2VDb250ZXh0KFlBeGlzQ29udGV4dCk7XG4gIHJldHVybiBnZXRBbnlFbGVtZW50T2ZPYmplY3QoeUF4aXNNYXApO1xufTtcblxuLyoqXG4gKiBUaGlzIGhvb2tzIHdpbGw6XG4gKiAxc3QgYXR0ZW1wdCB0byBmaW5kIGFuIFlBeGlzIHRoYXQgaGFzIGFsbCBlbGVtZW50cyBpbiBpdHMgZG9tYWluIGZpbml0ZVxuICogSWYgbm8gc3VjaCBheGlzIGV4aXN0cywgaXQgd2lsbCByZXR1cm4gYW4gYXJiaXRyYXJ5IFlBeGlzXG4gKiBpZiB0aGVyZSBhcmUgbm8gWSBheGVzIHRoZW4gaXQgcmV0dXJucyB1bmRlZmluZWRcbiAqXG4gKiBAcmV0dXJucyBFaXRoZXIgWSBheGlzT3B0aW9ucywgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGFyZSBubyBZIGF4ZXNcbiAqL1xuZXhwb3J0IHZhciB1c2VZQXhpc1dpdGhGaW5pdGVEb21haW5PclJhbmRvbSA9IGZ1bmN0aW9uIHVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tKCkge1xuICB2YXIgeUF4aXNNYXAgPSB1c2VDb250ZXh0KFlBeGlzQ29udGV4dCk7XG4gIHZhciB5QXhpc1dpdGhGaW5pdGVEb21haW4gPSBmaW5kKHlBeGlzTWFwLCBmdW5jdGlvbiAoYXhpcykge1xuICAgIHJldHVybiBldmVyeShheGlzLmRvbWFpbiwgTnVtYmVyLmlzRmluaXRlKTtcbiAgfSk7XG4gIHJldHVybiB5QXhpc1dpdGhGaW5pdGVEb21haW4gfHwgZ2V0QW55RWxlbWVudE9mT2JqZWN0KHlBeGlzTWFwKTtcbn07XG5cbi8qKlxuICogVGhpcyBlaXRoZXIgZmluZHMgYW5kIHJldHVybnMgQXhpcyBieSB0aGUgc3BlY2lmaWVkIElELCBvciB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGFuIGF4aXMgd2l0aCB0aGlzIElEIGRvZXMgbm90IGV4aXN0LlxuICpcbiAqIEBwYXJhbSB5QXhpc0lkIGlkZW50aWZpZXIgb2YgdGhlIGF4aXMgLSBpdCdzIGVpdGhlciBhdXRvZ2VuZXJhdGVkICgnMCcpLCBvciBwYXNzZWQgdmlhIGBpZGAgcHJvcCBhcyA8WUF4aXMgaWQ9J2ZvbycgLz5cbiAqIEByZXR1cm5zIGF4aXMgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gYXhpcyB3aXRoIHRoaXMgSUQgZXhpc3RzXG4gKi9cbmV4cG9ydCB2YXIgdXNlWUF4aXNPclRocm93ID0gZnVuY3Rpb24gdXNlWUF4aXNPclRocm93KHlBeGlzSWQpIHtcbiAgdmFyIHlBeGlzTWFwID0gdXNlQ29udGV4dChZQXhpc0NvbnRleHQpO1xuICAhKHlBeGlzTWFwICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgUmVjaGFydHMgY29udGV4dDsgYXJlIHlvdSBzdXJlIHRoaXMgaXMgcmVuZGVyZWQgaW5zaWRlIGEgUmVjaGFydHMgd3JhcHBlciBjb21wb25lbnQ/JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIgeUF4aXMgPSB5QXhpc01hcFt5QXhpc0lkXTtcbiAgISh5QXhpcyAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJDb3VsZCBub3QgZmluZCB5QXhpcyBieSBpZCBcXFwiXCIuY29uY2F0KHlBeGlzSWQsIFwiXFxcIiBbXCIpLmNvbmNhdChfdHlwZW9mKHlBeGlzSWQpLCBcIl0uIFwiKS5jb25jYXQoZ2V0S2V5c0ZvckRlYnVnKHlBeGlzTWFwKSkpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIHlBeGlzO1xufTtcbmV4cG9ydCB2YXIgdXNlVmlld0JveCA9IGZ1bmN0aW9uIHVzZVZpZXdCb3goKSB7XG4gIHZhciB2aWV3Qm94ID0gdXNlQ29udGV4dChWaWV3Qm94Q29udGV4dCk7XG4gIHJldHVybiB2aWV3Qm94O1xufTtcbmV4cG9ydCB2YXIgdXNlT2Zmc2V0ID0gZnVuY3Rpb24gdXNlT2Zmc2V0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChPZmZzZXRDb250ZXh0KTtcbn07XG5leHBvcnQgdmFyIHVzZUNoYXJ0V2lkdGggPSBmdW5jdGlvbiB1c2VDaGFydFdpZHRoKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDaGFydFdpZHRoQ29udGV4dCk7XG59O1xuZXhwb3J0IHZhciB1c2VDaGFydEhlaWdodCA9IGZ1bmN0aW9uIHVzZUNoYXJ0SGVpZ2h0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChDaGFydEhlaWdodENvbnRleHQpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsImludmFyaWFudCIsImZpbmQiLCJldmVyeSIsImNhbGN1bGF0ZVZpZXdCb3giLCJnZXRBbnlFbGVtZW50T2ZPYmplY3QiLCJYQXhpc0NvbnRleHQiLCJ1bmRlZmluZWQiLCJZQXhpc0NvbnRleHQiLCJWaWV3Qm94Q29udGV4dCIsIk9mZnNldENvbnRleHQiLCJDbGlwUGF0aElkQ29udGV4dCIsIkNoYXJ0SGVpZ2h0Q29udGV4dCIsIkNoYXJ0V2lkdGhDb250ZXh0IiwiQ2hhcnRMYXlvdXRDb250ZXh0UHJvdmlkZXIiLCJwcm9wcyIsIl9wcm9wcyRzdGF0ZSIsInN0YXRlIiwieEF4aXNNYXAiLCJ5QXhpc01hcCIsIm9mZnNldCIsImNsaXBQYXRoSWQiLCJjaGlsZHJlbiIsIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ2xpcFBhdGhJZCIsImdldEtleXNGb3JEZWJ1ZyIsIm9iamVjdCIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJjb25jYXQiLCJ1c2VYQXhpc09yVGhyb3ciLCJ4QXhpc0lkIiwicHJvY2VzcyIsInhBeGlzIiwidXNlQXJiaXRyYXJ5WEF4aXMiLCJ1c2VBcmJpdHJhcnlZQXhpcyIsInVzZVlBeGlzV2l0aEZpbml0ZURvbWFpbk9yUmFuZG9tIiwieUF4aXNXaXRoRmluaXRlRG9tYWluIiwiYXhpcyIsImRvbWFpbiIsIk51bWJlciIsImlzRmluaXRlIiwidXNlWUF4aXNPclRocm93IiwieUF4aXNJZCIsInlBeGlzIiwidXNlVmlld0JveCIsInVzZU9mZnNldCIsInVzZUNoYXJ0V2lkdGgiLCJ1c2VDaGFydEhlaWdodCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/context/chartLayoutContext.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Cross.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/shape/Cross.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Cross: () => (/* binding */ Cross)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"x\",\n \"y\",\n \"top\",\n \"left\",\n \"width\",\n \"height\",\n \"className\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Cross\n */ \n\n\n\nvar getPath = function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nvar Cross = function Cross(_ref) {\n var _ref$x = _ref.x, x = _ref$x === void 0 ? 0 : _ref$x, _ref$y = _ref.y, y = _ref$y === void 0 ? 0 : _ref$y, _ref$top = _ref.top, top = _ref$top === void 0 ? 0 : _ref$top, _ref$left = _ref.left, left = _ref$left === void 0 ? 0 : _ref$left, _ref$width = _ref.width, width = _ref$width === void 0 ? 0 : _ref$width, _ref$height = _ref.height, height = _ref$height === void 0 ? 0 : _ref$height, className = _ref.className, rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n x: x,\n y: y,\n top: top,\n left: left,\n width: width,\n height: height\n }, rest);\n if (!(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(x) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(y) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(width) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(height) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(top) || !(0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.isNumber)(left)) {\n return null;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_3__.filterProps)(props, true), {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-cross\", className),\n d: getPath(x, y, width, height, top, left)\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0Nyb3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxJQUFJSyxZQUFZO0lBQUM7SUFBSztJQUFLO0lBQU87SUFBUTtJQUFTO0lBQVU7Q0FBWTtBQUN6RSxTQUFTQztJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9ILFNBQVMsQ0FBQ1ksY0FBYyxDQUFDQyxJQUFJLENBQUNILFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNZLEtBQUssQ0FBQyxJQUFJLEVBQUVOO0FBQVk7QUFDbFYsU0FBU08sUUFBUUMsQ0FBQyxFQUFFQyxDQUFDO0lBQUksSUFBSUMsSUFBSWYsT0FBT2dCLElBQUksQ0FBQ0g7SUFBSSxJQUFJYixPQUFPaUIscUJBQXFCLEVBQUU7UUFBRSxJQUFJeEIsSUFBSU8sT0FBT2lCLHFCQUFx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LGNBQWNOLEtBQUtMLE1BQU0sRUFDekJBLFNBQVNXLGdCQUFnQixLQUFLLElBQUksSUFBSUEsYUFDdENDLFlBQVlQLEtBQUtPLFNBQVMsRUFDMUJDLE9BQU81Qix5QkFBeUJvQixNQUFNNUQ7SUFDeEMsSUFBSXFFLFFBQVE3QyxjQUFjO1FBQ3hCNEIsR0FBR0E7UUFDSEMsR0FBR0E7UUFDSEcsS0FBS0E7UUFDTEMsTUFBTUE7UUFDTkgsT0FBT0E7UUFDUEMsUUFBUUE7SUFDVixHQUFHYTtJQUNILElBQUksQ0FBQ25CLHlEQUFRQSxDQUFDRyxNQUFNLENBQUNILHlEQUFRQSxDQUFDSSxNQUFNLENBQUNKLHlEQUFRQSxDQUFDSyxVQUFVLENBQUNMLHlEQUFRQSxDQUFDTSxXQUFXLENBQUNOLHlEQUFRQSxDQUFDTyxRQUFRLENBQUNQLHlEQUFRQSxDQUFDUSxPQUFPO1FBQzlHLE9BQU87SUFDVDtJQUNBLE9BQU8sV0FBVyxHQUFFViwwREFBbUIsQ0FBQyxRQUFROUMsU0FBUyxDQUFDLEdBQUdpRCw2REFBV0EsQ0FBQ21CLE9BQU8sT0FBTztRQUNyRkYsV0FBV25CLGdEQUFJQSxDQUFDLGtCQUFrQm1CO1FBQ2xDSSxHQUFHcEIsUUFBUUMsR0FBR0MsR0FBR0MsT0FBT0MsUUFBUUMsS0FBS0M7SUFDdkM7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvQ3Jvc3MuanM/NGQ2YSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG52YXIgX2V4Y2x1ZGVkID0gW1wieFwiLCBcInlcIiwgXCJ0b3BcIiwgXCJsZWZ0XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJjbGFzc05hbWVcIl07XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ3Jvc3NcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCwgdG9wLCBsZWZ0KSB7XG4gIHJldHVybiBcIk1cIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh0b3AsIFwidlwiKS5jb25jYXQoaGVpZ2h0LCBcIk1cIikuY29uY2F0KGxlZnQsIFwiLFwiKS5jb25jYXQoeSwgXCJoXCIpLmNvbmNhdCh3aWR0aCk7XG59O1xuZXhwb3J0IHZhciBDcm9zcyA9IGZ1bmN0aW9uIENyb3NzKF9yZWYpIHtcbiAgdmFyIF9yZWYkeCA9IF9yZWYueCxcbiAgICB4ID0gX3JlZiR4ID09PSB2b2lkIDAgPyAwIDogX3JlZiR4LFxuICAgIF9yZWYkeSA9IF9yZWYueSxcbiAgICB5ID0gX3JlZiR5ID09PSB2b2lkIDAgPyAwIDogX3JlZiR5LFxuICAgIF9yZWYkdG9wID0gX3JlZi50b3AsXG4gICAgdG9wID0gX3JlZiR0b3AgPT09IHZvaWQgMCA/IDAgOiBfcmVmJHRvcCxcbiAgICBfcmVmJGxlZnQgPSBfcmVmLmxlZnQsXG4gICAgbGVmdCA9IF9yZWYkbGVmdCA9PT0gdm9pZCAwID8gMCA6IF9yZWYkbGVmdCxcbiAgICBfcmVmJHdpZHRoID0gX3JlZi53aWR0aCxcbiAgICB3aWR0aCA9IF9yZWYkd2lkdGggPT09IHZvaWQgMCA/IDAgOiBfcmVmJHdpZHRoLFxuICAgIF9yZWYkaGVpZ2h0ID0gX3JlZi5oZWlnaHQsXG4gICAgaGVpZ2h0ID0gX3JlZiRoZWlnaHQgPT09IHZvaWQgMCA/IDAgOiBfcmVmJGhlaWdodCxcbiAgICBjbGFzc05hbWUgPSBfcmVmLmNsYXNzTmFtZSxcbiAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoe1xuICAgIHg6IHgsXG4gICAgeTogeSxcbiAgICB0b3A6IHRvcCxcbiAgICBsZWZ0OiBsZWZ0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9LCByZXN0KTtcbiAgaWYgKCFpc051bWJlcih4KSB8fCAhaXNOdW1iZXIoeSkgfHwgIWlzTnVtYmVyKHdpZHRoKSB8fCAhaXNOdW1iZXIoaGVpZ2h0KSB8fCAhaXNOdW1iZXIodG9wKSB8fCAhaXNOdW1iZXIobGVmdCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSksIHtcbiAgICBjbGFzc05hbWU6IGNsc3goJ3JlY2hhcnRzLWNyb3NzJywgY2xhc3NOYW1lKSxcbiAgICBkOiBnZXRQYXRoKHgsIHksIHdpZHRoLCBoZWlnaHQsIHRvcCwgbGVmdClcbiAgfSkpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiUmVhY3QiLCJjbHN4IiwiaXNOdW1iZXIiLCJmaWx0ZXJQcm9wcyIsImdldFBhdGgiLCJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwibGVmdCIsImNvbmNhdCIsIkNyb3NzIiwiX3JlZiIsIl9yZWYkeCIsIl9yZWYkeSIsIl9yZWYkdG9wIiwiX3JlZiRsZWZ0IiwiX3JlZiR3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiY2xhc3NOYW1lIiwicmVzdCIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Cross.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Curve.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/shape/Curve.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Curve: () => (/* binding */ Curve),\n/* harmony export */ getPath: () => (/* binding */ getPath)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Curve\n */ \n\n\n\n\n\n\n\nvar CURVE_FACTORIES = {\n curveBasisClosed: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasisClosed,\n curveBasisOpen: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasisOpen,\n curveBasis: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBasis,\n curveBumpX: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBumpX,\n curveBumpY: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveBumpY,\n curveLinearClosed: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinearClosed,\n curveLinear: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinear,\n curveMonotoneX: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveMonotoneX,\n curveMonotoneY: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveMonotoneY,\n curveNatural: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveNatural,\n curveStep: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStep,\n curveStepAfter: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStepAfter,\n curveStepBefore: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveStepBefore\n};\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n return p.x;\n};\nvar getY = function getY(p) {\n return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(type)) {\n return type;\n }\n var name = \"curve\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_2___default()(type));\n if ((name === \"curveMonotone\" || name === \"curveBump\") && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === \"vertical\" ? \"Y\" : \"X\")];\n }\n return CURVE_FACTORIES[name] || victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */ var getPath = function getPath(_ref) {\n var _ref$type = _ref.type, type = _ref$type === void 0 ? \"linear\" : _ref$type, _ref$points = _ref.points, points = _ref$points === void 0 ? [] : _ref$points, baseLine = _ref.baseLine, layout = _ref.layout, _ref$connectNulls = _ref.connectNulls, connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function(entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n if (Array.isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function(base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function(entry, index) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n base: formatBaseLine[index]\n });\n });\n if (layout === \"vertical\") {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().y(getY).x1(getX).x0(function(d) {\n return d.base.x;\n });\n } else {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().x(getX).y1(getY).y0(function(d) {\n return d.base.y;\n });\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n if (layout === \"vertical\" && (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(baseLine)) {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().y(getY).x1(getX).x0(baseLine);\n } else if ((0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(baseLine)) {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.area)().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.line)().x(getX).y(getY);\n }\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n};\nvar Curve = function Curve(props) {\n var className = props.className, points = props.points, path = props.path, pathRef = props.pathRef;\n if ((!points || !points.length) && !path) {\n return null;\n }\n var realPath = points && points.length ? getPath(props) : path;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_6__.filterProps)(props, false), (0,_util_types__WEBPACK_IMPORTED_MODULE_7__.adaptEventHandlers)(props), {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\"recharts-curve\", className),\n d: realPath,\n ref: pathRef\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0N1cnZlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENBQUFBLElBQUlBLEVBQUV3QixNQUFNLENBQUMsU0FBVUosQ0FBQztZQUFJLE9BQU9kLE9BQU9tQix3QkFBd0IsQ0FBQ04sR0FBR0MsR0FBR00sVUFBVTtRQUFFLEVBQUMsR0FBSUwsRUFBRU0sSUFBSSxDQUFDVixLQUFLLENBQUNJLEdBQUdyQjtJQUFJO0lBQUUsT0FBT3FCO0FBQUc7QUFDOVAsU0FBU08sY0FBY1QsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVCxVQUFVQyxNQUFNLEVBQUVRLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFWLFNBQVMsQ0FBQ1MsRUFBRSxHQUFHVCxTQUFTLENBQUNTLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUVosT0FBT2UsSUFBSSxDQUFDLEdBQUdRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlVLGdCQUFnQlgsR0FBR0MsR0FBR0MsQ0FBQyxDQUFDRCxFQUFFO1FBQUcsS0FBS2QsT0FBT3lCLHlCQUF5QixHQUFHekIsT0FBTzBCLGdCQUFnQixDQUFDYixHQUFHYixPQUFPeUIseUJBQXlCLENBQUNWLE1BQU1ILFFBQVFaLE9BQU9lLElBQUlRLE9BQU8sQ0FBQyxTQUFVVCxDQUFDO1lBQUlkLE9BQU8yQixjQUFjLENBQUNkLEdBQUdDLEdBQUdkLE9BQU9tQix3QkFBd0IsQ0FBQ0osR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTVyxnQkFBZ0JJLEdBQUcsRUFBRXBCLEdBQUcsRUFBRXFCLEtBQUs7SUFBSXJCLE1BQU1zQixlQUFldEI7SUFBTSxJQUFJQSxPQUFPb0IsS0FBSztRQUFFNUIsT0FBTzJCLGNBQWMsQ0FBQ0MsS0FBS3BCLEtBQUs7WUFBRXFCLE9BQU9BO1lBQU9ULFlBQVk7WUFBTVcsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVKLEdBQUcsQ0FBQ3BCLElBQUksR0FBR3FCO0lBQU87SUFBRSxPQUFPRDtBQUFLO0FBQzNPLFNBQVNFLGVBQWVmLENBQUM7SUFBSSxJQUFJWCxJQUFJNkIsYUFBYWxCLEdBQUc7SUFBVyxPQUFPLFlBQVl0QixRQUFRVyxLQUFLQSxJQUFJOEIsT0FBTzlCO0FBQUk7QUFDL0csU0FBUzZCLGFBQWFsQixDQUFDLEVBQUVELENBQUM7SUFBSSxJQUFJLFlBQVlyQixRQUFRc0IsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUYsSUFBSUUsQ0FBQyxDQUFDcEIsT0FBT3dDLFdBQVcsQ0FBQztJQUFFLElBQUksS0FBSyxNQUFNdEIsR0FBRztRQUFFLElBQUlULElBQUlTLEVBQUVILElBQUksQ0FBQ0ssR0FBR0QsS0FBSztRQUFZLElBQUksWUFBWXJCLFFBQVFXLElBQUksT0FBT0E7UUFBRyxNQUFNLElBQUlnQyxVQUFVO0lBQWlEO0lBQUUsT0FBTyxDQUFDLGFBQWF0QixJQUFJb0IsU0FBU0csTUFBSyxFQUFHdEI7QUFBSTtBQUMzVDs7Q0FFQyxHQUN5QjtBQUNxUDtBQUNwTztBQUNBO0FBQ25CO0FBQzJCO0FBQ0Y7QUFDSjtBQUM3QyxJQUFJK0Msa0JBQWtCO0lBQ3BCbkIsa0JBQWtCQSxxRUFBZ0JBO0lBQ2xDQyxnQkFBZ0JBLG1FQUFjQTtJQUM5QkMsWUFBWUEsK0RBQVVBO0lBQ3RCQyxZQUFZQSwrREFBVUE7SUFDdEJDLFlBQVlBLCtEQUFVQTtJQUN0QkMsbUJBQW1CQSxzRUFBaUJBO0lBQ3BDQyxhQUFhQSxnRUFBV0E7SUFDeEJDLGdCQUFnQkEsbUVBQWNBO0lBQzlCQyxnQkFBZ0JBLG1FQUFjQTtJQUM5QkMsY0FBY0EsaUVBQVlBO0lBQzFCQyxXQUFXQSw4REFBU0E7SUFDcEJDLGdCQUFnQkEsbUVBQWNBO0lBQzlCQyxpQkFBaUJBLG9FQUFlQTtBQUNsQztBQUNBLElBQUlRLFVBQVUsU0FBU0EsUUFBUUMsQ0FBQztJQUM5QixPQUFPQSxFQUFFQyxDQUFDLEtBQUssQ0FBQ0QsRUFBRUMsQ0FBQyxJQUFJRCxFQUFFRSxDQUFDLEtBQUssQ0FBQ0YsRUFBRUUsQ0FBQztBQUNyQztBQUNBLElBQUlDLE9BQU8sU0FBU0EsS0FBS0gsQ0FBQztJQUN4QixPQUFPQSxFQUFFQyxDQUFDO0FBQ1o7QUFDQSxJQUFJRyxPQUFPLFNBQVNBLEtBQUtKLENBQUM7SUFDeEIsT0FBT0EsRUFBRUUsQ0FBQztBQUNaO0FBQ0EsSUFBSUcsa0JBQWtCLFNBQVNBLGdCQUFnQkMsSUFBSSxFQUFFQyxNQUFNO0lBQ3pELElBQUlkLHdEQUFVQSxDQUFDYSxPQUFPO1FBQ3BCLE9BQU9BO0lBQ1Q7SUFDQSxJQUFJRSxPQUFPLFFBQVFDLE1BQU0sQ0FBQ2pCLHdEQUFVQSxDQUFDYztJQUNyQyxJQUFJLENBQUNFLFNBQVMsbUJBQW1CQSxTQUFTLFdBQVUsS0FBTUQsUUFBUTtRQUNoRSxPQUFPVCxlQUFlLENBQUMsR0FBR1csTUFBTSxDQUFDRCxNQUFNQyxNQUFNLENBQUNGLFdBQVcsYUFBYSxNQUFNLEtBQUs7SUFDbkY7SUFDQSxPQUFPVCxlQUFlLENBQUNVLEtBQUssSUFBSXZCLGdFQUFXQTtBQUM3QztBQUNBOzs7Q0FHQyxHQUNNLElBQUl5QixVQUFVLFNBQVNBLFFBQVFDLElBQUk7SUFDeEMsSUFBSUMsWUFBWUQsS0FBS0wsSUFBSSxFQUN2QkEsT0FBT00sY0FBYyxLQUFLLElBQUksV0FBV0EsV0FDekNDLGNBQWNGLEtBQUtHLE1BQU0sRUFDekJBLFNBQVNELGdCQUFnQixLQUFLLElBQUksRUFBRSxHQUFHQSxhQUN2Q0UsV0FBV0osS0FBS0ksUUFBUSxFQUN4QlIsU0FBU0ksS0FBS0osTUFBTSxFQUNwQlMsb0JBQW9CTCxLQUFLTSxZQUFZLEVBQ3JDQSxlQUFlRCxzQkFBc0IsS0FBSyxJQUFJLFFBQVFBO0lBQ3hELElBQUlFLGVBQWViLGdCQUFnQkMsTUFBTUM7SUFDekMsSUFBSVksZUFBZUYsZUFBZUgsT0FBTzVELE1BQU0sQ0FBQyxTQUFVa0UsS0FBSztRQUM3RCxPQUFPckIsUUFBUXFCO0lBQ2pCLEtBQUtOO0lBQ0wsSUFBSU87SUFDSixJQUFJQyxNQUFNQyxPQUFPLENBQUNSLFdBQVc7UUFDM0IsSUFBSVMsaUJBQWlCUCxlQUFlRixTQUFTN0QsTUFBTSxDQUFDLFNBQVV1RSxJQUFJO1lBQ2hFLE9BQU8xQixRQUFRMEI7UUFDakIsS0FBS1Y7UUFDTCxJQUFJVyxhQUFhUCxhQUFhUSxHQUFHLENBQUMsU0FBVVAsS0FBSyxFQUFFUSxLQUFLO1lBQ3RELE9BQU90RSxjQUFjQSxjQUFjLENBQUMsR0FBRzhELFFBQVEsQ0FBQyxHQUFHO2dCQUNqREssTUFBTUQsY0FBYyxDQUFDSSxNQUFNO1lBQzdCO1FBQ0Y7UUFDQSxJQUFJckIsV0FBVyxZQUFZO1lBQ3pCYyxlQUFlM0MsNkRBQVNBLEdBQUd3QixDQUFDLENBQUNFLE1BQU15QixFQUFFLENBQUMxQixNQUFNMkIsRUFBRSxDQUFDLFNBQVVDLENBQUM7Z0JBQ3hELE9BQU9BLEVBQUVOLElBQUksQ0FBQ3hCLENBQUM7WUFDakI7UUFDRixPQUFPO1lBQ0xvQixlQUFlM0MsNkRBQVNBLEdBQUd1QixDQUFDLENBQUNFLE1BQU02QixFQUFFLENBQUM1QixNQUFNNkIsRUFBRSxDQUFDLFNBQVVGLENBQUM7Z0JBQ3hELE9BQU9BLEVBQUVOLElBQUksQ0FBQ3ZCLENBQUM7WUFDakI7UUFDRjtRQUNBbUIsYUFBYXRCLE9BQU8sQ0FBQ0EsU0FBU21DLEtBQUssQ0FBQ2hCO1FBQ3BDLE9BQU9HLGFBQWFLO0lBQ3RCO0lBQ0EsSUFBSW5CLFdBQVcsY0FBY1YseURBQVFBLENBQUNrQixXQUFXO1FBQy9DTSxlQUFlM0MsNkRBQVNBLEdBQUd3QixDQUFDLENBQUNFLE1BQU15QixFQUFFLENBQUMxQixNQUFNMkIsRUFBRSxDQUFDZjtJQUNqRCxPQUFPLElBQUlsQix5REFBUUEsQ0FBQ2tCLFdBQVc7UUFDN0JNLGVBQWUzQyw2REFBU0EsR0FBR3VCLENBQUMsQ0FBQ0UsTUFBTTZCLEVBQUUsQ0FBQzVCLE1BQU02QixFQUFFLENBQUNsQjtJQUNqRCxPQUFPO1FBQ0xNLGVBQWU3Qyw2REFBU0EsR0FBR3lCLENBQUMsQ0FBQ0UsTUFBTUQsQ0FBQyxDQUFDRTtJQUN2QztJQUNBaUIsYUFBYXRCLE9BQU8sQ0FBQ0EsU0FBU21DLEtBQUssQ0FBQ2hCO0lBQ3BDLE9BQU9HLGFBQWFGO0FBQ3RCLEVBQUU7QUFDSyxJQUFJZ0IsUUFBUSxTQUFTQSxNQUFNQyxLQUFLO0lBQ3JDLElBQUlDLFlBQVlELE1BQU1DLFNBQVMsRUFDN0J2QixTQUFTc0IsTUFBTXRCLE1BQU0sRUFDckJ3QixPQUFPRixNQUFNRSxJQUFJLEVBQ2pCQyxVQUFVSCxNQUFNRyxPQUFPO0lBQ3pCLElBQUksQ0FBQyxDQUFDekIsVUFBVSxDQUFDQSxPQUFPeEUsTUFBTSxLQUFLLENBQUNnRyxNQUFNO1FBQ3hDLE9BQU87SUFDVDtJQUNBLElBQUlFLFdBQVcxQixVQUFVQSxPQUFPeEUsTUFBTSxHQUFHb0UsUUFBUTBCLFNBQVNFO0lBQzFELE9BQU8sV0FBVyxHQUFFaEUsMERBQW1CLENBQUMsUUFBUXZDLFNBQVMsQ0FBQyxHQUFHNkQsNkRBQVdBLENBQUN3QyxPQUFPLFFBQVF6QywrREFBa0JBLENBQUN5QyxRQUFRO1FBQ2pIQyxXQUFXM0MsZ0RBQUlBLENBQUMsa0JBQWtCMkM7UUFDbENOLEdBQUdTO1FBQ0hFLEtBQUtIO0lBQ1A7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvQ3VydmUuanM/OWFhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEN1cnZlXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBsaW5lIGFzIHNoYXBlTGluZSwgYXJlYSBhcyBzaGFwZUFyZWEsIGN1cnZlQmFzaXNDbG9zZWQsIGN1cnZlQmFzaXNPcGVuLCBjdXJ2ZUJhc2lzLCBjdXJ2ZUJ1bXBYLCBjdXJ2ZUJ1bXBZLCBjdXJ2ZUxpbmVhckNsb3NlZCwgY3VydmVMaW5lYXIsIGN1cnZlTW9ub3RvbmVYLCBjdXJ2ZU1vbm90b25lWSwgY3VydmVOYXR1cmFsLCBjdXJ2ZVN0ZXAsIGN1cnZlU3RlcEFmdGVyLCBjdXJ2ZVN0ZXBCZWZvcmUgfSBmcm9tICd2aWN0b3J5LXZlbmRvci9kMy1zaGFwZSc7XG5pbXBvcnQgdXBwZXJGaXJzdCBmcm9tICdsb2Rhc2gvdXBwZXJGaXJzdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGFkYXB0RXZlbnRIYW5kbGVycyB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsL0RhdGFVdGlscyc7XG52YXIgQ1VSVkVfRkFDVE9SSUVTID0ge1xuICBjdXJ2ZUJhc2lzQ2xvc2VkOiBjdXJ2ZUJhc2lzQ2xvc2VkLFxuICBjdXJ2ZUJhc2lzT3BlbjogY3VydmVCYXNpc09wZW4sXG4gIGN1cnZlQmFzaXM6IGN1cnZlQmFzaXMsXG4gIGN1cnZlQnVtcFg6IGN1cnZlQnVtcFgsXG4gIGN1cnZlQnVtcFk6IGN1cnZlQnVtcFksXG4gIGN1cnZlTGluZWFyQ2xvc2VkOiBjdXJ2ZUxpbmVhckNsb3NlZCxcbiAgY3VydmVMaW5lYXI6IGN1cnZlTGluZWFyLFxuICBjdXJ2ZU1vbm90b25lWDogY3VydmVNb25vdG9uZVgsXG4gIGN1cnZlTW9ub3RvbmVZOiBjdXJ2ZU1vbm90b25lWSxcbiAgY3VydmVOYXR1cmFsOiBjdXJ2ZU5hdHVyYWwsXG4gIGN1cnZlU3RlcDogY3VydmVTdGVwLFxuICBjdXJ2ZVN0ZXBBZnRlcjogY3VydmVTdGVwQWZ0ZXIsXG4gIGN1cnZlU3RlcEJlZm9yZTogY3VydmVTdGVwQmVmb3JlXG59O1xudmFyIGRlZmluZWQgPSBmdW5jdGlvbiBkZWZpbmVkKHApIHtcbiAgcmV0dXJuIHAueCA9PT0gK3AueCAmJiBwLnkgPT09ICtwLnk7XG59O1xudmFyIGdldFggPSBmdW5jdGlvbiBnZXRYKHApIHtcbiAgcmV0dXJuIHAueDtcbn07XG52YXIgZ2V0WSA9IGZ1bmN0aW9uIGdldFkocCkge1xuICByZXR1cm4gcC55O1xufTtcbnZhciBnZXRDdXJ2ZUZhY3RvcnkgPSBmdW5jdGlvbiBnZXRDdXJ2ZUZhY3RvcnkodHlwZSwgbGF5b3V0KSB7XG4gIGlmIChpc0Z1bmN0aW9uKHR5cGUpKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cbiAgdmFyIG5hbWUgPSBcImN1cnZlXCIuY29uY2F0KHVwcGVyRmlyc3QodHlwZSkpO1xuICBpZiAoKG5hbWUgPT09ICdjdXJ2ZU1vbm90b25lJyB8fCBuYW1lID09PSAnY3VydmVCdW1wJykgJiYgbGF5b3V0KSB7XG4gICAgcmV0dXJuIENVUlZFX0ZBQ1RPUklFU1tcIlwiLmNvbmNhdChuYW1lKS5jb25jYXQobGF5b3V0ID09PSAndmVydGljYWwnID8gJ1knIDogJ1gnKV07XG4gIH1cbiAgcmV0dXJuIENVUlZFX0ZBQ1RPUklFU1tuYW1lXSB8fCBjdXJ2ZUxpbmVhcjtcbn07XG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgcGF0aCBvZiBjdXJ2ZS4gUmV0dXJucyBudWxsIGlmIHBvaW50cyBpcyBhbiBlbXB0eSBhcnJheS5cbiAqIEByZXR1cm4gcGF0aCBvciBudWxsXG4gKi9cbmV4cG9ydCB2YXIgZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoX3JlZikge1xuICB2YXIgX3JlZiR0eXBlID0gX3JlZi50eXBlLFxuICAgIHR5cGUgPSBfcmVmJHR5cGUgPT09IHZvaWQgMCA/ICdsaW5lYXInIDogX3JlZiR0eXBlLFxuICAgIF9yZWYkcG9pbnRzID0gX3JlZi5wb2ludHMsXG4gICAgcG9pbnRzID0gX3JlZiRwb2ludHMgPT09IHZvaWQgMCA/IFtdIDogX3JlZiRwb2ludHMsXG4gICAgYmFzZUxpbmUgPSBfcmVmLmJhc2VMaW5lLFxuICAgIGxheW91dCA9IF9yZWYubGF5b3V0LFxuICAgIF9yZWYkY29ubmVjdE51bGxzID0gX3JlZi5jb25uZWN0TnVsbHMsXG4gICAgY29ubmVjdE51bGxzID0gX3JlZiRjb25uZWN0TnVsbHMgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRjb25uZWN0TnVsbHM7XG4gIHZhciBjdXJ2ZUZhY3RvcnkgPSBnZXRDdXJ2ZUZhY3RvcnkodHlwZSwgbGF5b3V0KTtcbiAgdmFyIGZvcm1hdFBvaW50cyA9IGNvbm5lY3ROdWxscyA/IHBvaW50cy5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGRlZmluZWQoZW50cnkpO1xuICB9KSA6IHBvaW50cztcbiAgdmFyIGxpbmVGdW5jdGlvbjtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmFzZUxpbmUpKSB7XG4gICAgdmFyIGZvcm1hdEJhc2VMaW5lID0gY29ubmVjdE51bGxzID8gYmFzZUxpbmUuZmlsdGVyKGZ1bmN0aW9uIChiYXNlKSB7XG4gICAgICByZXR1cm4gZGVmaW5lZChiYXNlKTtcbiAgICB9KSA6IGJhc2VMaW5lO1xuICAgIHZhciBhcmVhUG9pbnRzID0gZm9ybWF0UG9pbnRzLm1hcChmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBlbnRyeSksIHt9LCB7XG4gICAgICAgIGJhc2U6IGZvcm1hdEJhc2VMaW5lW2luZGV4XVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgbGluZUZ1bmN0aW9uID0gc2hhcGVBcmVhKCkueShnZXRZKS54MShnZXRYKS54MChmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZC5iYXNlLng7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluZUZ1bmN0aW9uID0gc2hhcGVBcmVhKCkueChnZXRYKS55MShnZXRZKS55MChmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZC5iYXNlLnk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgbGluZUZ1bmN0aW9uLmRlZmluZWQoZGVmaW5lZCkuY3VydmUoY3VydmVGYWN0b3J5KTtcbiAgICByZXR1cm4gbGluZUZ1bmN0aW9uKGFyZWFQb2ludHMpO1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgJiYgaXNOdW1iZXIoYmFzZUxpbmUpKSB7XG4gICAgbGluZUZ1bmN0aW9uID0gc2hhcGVBcmVhKCkueShnZXRZKS54MShnZXRYKS54MChiYXNlTGluZSk7XG4gIH0gZWxzZSBpZiAoaXNOdW1iZXIoYmFzZUxpbmUpKSB7XG4gICAgbGluZUZ1bmN0aW9uID0gc2hhcGVBcmVhKCkueChnZXRYKS55MShnZXRZKS55MChiYXNlTGluZSk7XG4gIH0gZWxzZSB7XG4gICAgbGluZUZ1bmN0aW9uID0gc2hhcGVMaW5lKCkueChnZXRYKS55KGdldFkpO1xuICB9XG4gIGxpbmVGdW5jdGlvbi5kZWZpbmVkKGRlZmluZWQpLmN1cnZlKGN1cnZlRmFjdG9yeSk7XG4gIHJldHVybiBsaW5lRnVuY3Rpb24oZm9ybWF0UG9pbnRzKTtcbn07XG5leHBvcnQgdmFyIEN1cnZlID0gZnVuY3Rpb24gQ3VydmUocHJvcHMpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBwb2ludHMgPSBwcm9wcy5wb2ludHMsXG4gICAgcGF0aCA9IHByb3BzLnBhdGgsXG4gICAgcGF0aFJlZiA9IHByb3BzLnBhdGhSZWY7XG4gIGlmICgoIXBvaW50cyB8fCAhcG9pbnRzLmxlbmd0aCkgJiYgIXBhdGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgcmVhbFBhdGggPSBwb2ludHMgJiYgcG9pbnRzLmxlbmd0aCA/IGdldFBhdGgocHJvcHMpIDogcGF0aDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMocHJvcHMsIGZhbHNlKSwgYWRhcHRFdmVudEhhbmRsZXJzKHByb3BzKSwge1xuICAgIGNsYXNzTmFtZTogY2xzeCgncmVjaGFydHMtY3VydmUnLCBjbGFzc05hbWUpLFxuICAgIGQ6IHJlYWxQYXRoLFxuICAgIHJlZjogcGF0aFJlZlxuICB9KSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwib2JqIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJSZWFjdCIsImxpbmUiLCJzaGFwZUxpbmUiLCJhcmVhIiwic2hhcGVBcmVhIiwiY3VydmVCYXNpc0Nsb3NlZCIsImN1cnZlQmFzaXNPcGVuIiwiY3VydmVCYXNpcyIsImN1cnZlQnVtcFgiLCJjdXJ2ZUJ1bXBZIiwiY3VydmVMaW5lYXJDbG9zZWQiLCJjdXJ2ZUxpbmVhciIsImN1cnZlTW9ub3RvbmVYIiwiY3VydmVNb25vdG9uZVkiLCJjdXJ2ZU5hdHVyYWwiLCJjdXJ2ZVN0ZXAiLCJjdXJ2ZVN0ZXBBZnRlciIsImN1cnZlU3RlcEJlZm9yZSIsInVwcGVyRmlyc3QiLCJpc0Z1bmN0aW9uIiwiY2xzeCIsImFkYXB0RXZlbnRIYW5kbGVycyIsImZpbHRlclByb3BzIiwiaXNOdW1iZXIiLCJDVVJWRV9GQUNUT1JJRVMiLCJkZWZpbmVkIiwicCIsIngiLCJ5IiwiZ2V0WCIsImdldFkiLCJnZXRDdXJ2ZUZhY3RvcnkiLCJ0eXBlIiwibGF5b3V0IiwibmFtZSIsImNvbmNhdCIsImdldFBhdGgiLCJfcmVmIiwiX3JlZiR0eXBlIiwiX3JlZiRwb2ludHMiLCJwb2ludHMiLCJiYXNlTGluZSIsIl9yZWYkY29ubmVjdE51bGxzIiwiY29ubmVjdE51bGxzIiwiY3VydmVGYWN0b3J5IiwiZm9ybWF0UG9pbnRzIiwiZW50cnkiLCJsaW5lRnVuY3Rpb24iLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtYXRCYXNlTGluZSIsImJhc2UiLCJhcmVhUG9pbnRzIiwibWFwIiwiaW5kZXgiLCJ4MSIsIngwIiwiZCIsInkxIiwieTAiLCJjdXJ2ZSIsIkN1cnZlIiwicHJvcHMiLCJjbGFzc05hbWUiLCJwYXRoIiwicGF0aFJlZiIsInJlYWxQYXRoIiwiY3JlYXRlRWxlbWVudCIsInJlZiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Curve.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Dot.js":
/*!************************************************!*\
!*** ./node_modules/recharts/es6/shape/Dot.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Dot: () => (/* binding */ Dot)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n/**\n * @fileOverview Dot\n */ \n\n\n\nvar Dot = function Dot(props) {\n var cx = props.cx, cy = props.cy, r = props.r, className = props.className;\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-dot\", className);\n if (cx === +cx && cy === +cy && r === +r) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"circle\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, false), (0,_util_types__WEBPACK_IMPORTED_MODULE_3__.adaptEventHandlers)(props), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n return null;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL0RvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQTtJQUFhQSxXQUFXQyxPQUFPQyxNQUFNLEdBQUdELE9BQU9DLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFNBQVVDLE1BQU07UUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQUUsSUFBSUcsU0FBU0YsU0FBUyxDQUFDRCxFQUFFO1lBQUUsSUFBSyxJQUFJSSxPQUFPRCxPQUFRO2dCQUFFLElBQUlQLE9BQU9TLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNKLFFBQVFDLE1BQU07b0JBQUVMLE1BQU0sQ0FBQ0ssSUFBSSxHQUFHRCxNQUFNLENBQUNDLElBQUk7Z0JBQUU7WUFBRTtRQUFFO1FBQUUsT0FBT0w7SUFBUTtJQUFHLE9BQU9KLFNBQVNhLEtBQUssQ0FBQyxJQUFJLEVBQUVQO0FBQVk7QUFDbFY7O0NBRUMsR0FDeUI7QUFDRjtBQUMyQjtBQUNGO0FBQzFDLElBQUlZLE1BQU0sU0FBU0EsSUFBSUMsS0FBSztJQUNqQyxJQUFJQyxLQUFLRCxNQUFNQyxFQUFFLEVBQ2ZDLEtBQUtGLE1BQU1FLEVBQUUsRUFDYkMsSUFBSUgsTUFBTUcsQ0FBQyxFQUNYQyxZQUFZSixNQUFNSSxTQUFTO0lBQzdCLElBQUlDLGFBQWFULGdEQUFJQSxDQUFDLGdCQUFnQlE7SUFDdEMsSUFBSUgsT0FBTyxDQUFDQSxNQUFNQyxPQUFPLENBQUNBLE1BQU1DLE1BQU0sQ0FBQ0EsR0FBRztRQUN4QyxPQUFPLFdBQVcsR0FBRVIsMERBQW1CLENBQUMsVUFBVWQsU0FBUyxDQUFDLEdBQUdpQiw2REFBV0EsQ0FBQ0UsT0FBTyxRQUFRSCwrREFBa0JBLENBQUNHLFFBQVE7WUFDbkhJLFdBQVdDO1lBQ1hKLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0pDLEdBQUdBO1FBQ0w7SUFDRjtJQUNBLE9BQU87QUFDVCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvRG90LmpzPzY2YmUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgRG90XG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGFkYXB0RXZlbnRIYW5kbGVycyB9IGZyb20gJy4uL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xuZXhwb3J0IHZhciBEb3QgPSBmdW5jdGlvbiBEb3QocHJvcHMpIHtcbiAgdmFyIGN4ID0gcHJvcHMuY3gsXG4gICAgY3kgPSBwcm9wcy5jeSxcbiAgICByID0gcHJvcHMucixcbiAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtZG90JywgY2xhc3NOYW1lKTtcbiAgaWYgKGN4ID09PSArY3ggJiYgY3kgPT09ICtjeSAmJiByID09PSArcikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImNpcmNsZVwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMocHJvcHMsIGZhbHNlKSwgYWRhcHRFdmVudEhhbmRsZXJzKHByb3BzKSwge1xuICAgICAgY2xhc3NOYW1lOiBsYXllckNsYXNzLFxuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgcjogclxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07Il0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIlJlYWN0IiwiY2xzeCIsImFkYXB0RXZlbnRIYW5kbGVycyIsImZpbHRlclByb3BzIiwiRG90IiwicHJvcHMiLCJjeCIsImN5IiwiciIsImNsYXNzTmFtZSIsImxheWVyQ2xhc3MiLCJjcmVhdGVFbGVtZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Dot.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Rectangle.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/shape/Rectangle.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Rectangle: () => (/* binding */ Rectangle),\n/* harmony export */ isInRectangle: () => (/* binding */ isInRectangle)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Rectangle\n */ \n\n\n\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [\n 0,\n 0,\n 0,\n 0\n ];\n for(var i = 0, len = 4; i < len; i++){\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n path += \"Z\";\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n return path;\n};\nvar isInRectangle = function isInRectangle(point, rect) {\n if (!point || !rect) {\n return false;\n }\n var px = point.x, py = point.y;\n var x = rect.x, y = rect.y, width = rect.width, height = rect.height;\n if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n var minX = Math.min(x, x + width);\n var maxX = Math.max(x, x + width);\n var minY = Math.min(y, y + height);\n var maxY = Math.max(y, y + height);\n return px >= minX && px <= maxX && py >= minY && py <= maxY;\n }\n return false;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: \"ease\"\n};\nvar Rectangle = function Rectangle(rectangleProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n var pathRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1), _useState2 = _slicedToArray(_useState, 2), totalLength = _useState2[0], setTotalLength = _useState2[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = props.x, y = props.y, width = props.width, height = props.height, radius = props.radius, className = props.className;\n var animationEasing = props.animationEasing, animationDuration = props.animationDuration, animationBegin = props.animationBegin, isAnimationActive = props.isAnimationActive, isUpdateAnimationActive = props.isUpdateAnimationActive;\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-rectangle\", className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, true), {\n className: layerClass,\n d: getRectanglePath(x, y, width, height, radius)\n }));\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function(_ref) {\n var currWidth = _ref.width, currHeight = _ref.height, currX = _ref.x, currY = _ref.y;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(props, true), {\n className: layerClass,\n d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n ref: pathRef\n })));\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1JlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxlQUFlQyxHQUFHLEVBQUVULENBQUM7SUFBSSxPQUFPVSxnQkFBZ0JELFFBQVFFLHNCQUFzQkYsS0FBS1QsTUFBTVksNEJBQTRCSCxLQUFLVCxNQUFNYTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRCdEIsQ0FBQyxFQUFFeUIsTUFBTTtJQUFJLElBQUksQ0FBQ3pCLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPMEIsa0JBQWtCMUIsR0FBR3lCO0lBQVMsSUFBSUUsSUFBSXJCLE9BQU9GLFNBQVMsQ0FBQ3dCLFFBQVEsQ0FBQ1osSUFBSSxDQUFDaEIsR0FBRzZCLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFBSSxJQUFJRixNQUFNLFlBQVkzQixFQUFFRyxXQUFXLEVBQUV3QixJQUFJM0IsRUFBRUcsV0FBVyxDQUFDMkIsSUFBSTtJQUFFLElBQUlILE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9JLE1BQU1DLElBQUksQ0FBQ2hDO0lBQUksSUFBSTJCLE1BQU0sZUFBZSwyQ0FBMkNNLElBQUksQ0FBQ04sSUFBSSxPQUFPRCxrQkFBa0IxQixHQUFHeUI7QUFBUztBQUMvWixTQUFTQyxrQkFBa0JQLEdBQUcsRUFBRWUsR0FBRztJQUFJLElBQUlBLE9BQU8sUUFBUUEsTUFBTWYsSUFBSVAsTUFBTSxFQUFFc0IsTUFBTWYsSUFBSVAsTUFBTTtJQUFFLElBQUssSUFBSUYsSUFBSSxHQUFHeUIsT0FBTyxJQUFJSixNQUFNRyxNQUFNeEIsSUFBSXdCLEtBQUt4QixJQUFLeUIsSUFBSSxDQUFDekIsRUFBRSxHQUFHUyxHQUFHLENBQUNULEVBQUU7SUFBRSxPQUFPeUI7QUFBTTtBQUNsTCxTQUFTZCxzQkFBc0JlLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUksUUFBUUYsSUFBSSxPQUFPLGVBQWUsT0FBT25DLFVBQVVtQyxDQUFDLENBQUNuQyxPQUFPQyxRQUFRLENBQUMsSUFBSWtDLENBQUMsQ0FBQyxhQUFhO0lBQUUsSUFBSSxRQUFRRSxHQUFHO1FBQUUsSUFBSUMsR0FBR1osR0FBR2pCLEdBQUc4QixHQUFHQyxJQUFJLEVBQUUsRUFBRUMsSUFBSSxDQUFDLEdBQUcxQyxJQUFJLENBQUM7UUFBRyxJQUFJO1lBQUUsSUFBSVUsSUFBSSxDQUFDNEIsSUFBSUEsRUFBRXRCLElBQUksQ0FBQ29CLEVBQUMsRUFBR08sSUFBSSxFQUFFLE1BQU1OLEdBQUc7Z0JBQUUsSUFBSS9CLE9BQU9nQyxPQUFPQSxHQUFHO2dCQUFRSSxJQUFJLENBQUM7WUFBRyxPQUFPLE1BQU8sQ0FBRUEsQ0FBQUEsSUFBSSxDQUFDSCxJQUFJN0IsRUFBRU0sSUFBSSxDQUFDc0IsRUFBQyxFQUFHTSxJQUFJLEtBQU1ILENBQUFBLEVBQUVJLElBQUksQ0FBQ04sRUFBRU8sS0FBSyxHQUFHTCxFQUFFN0IsTUFBTSxLQUFLeUIsQ0FBQUEsR0FBSUssSUFBSSxDQUFDO1FBQUksRUFBRSxPQUFPTixHQUFHO1lBQUVwQyxJQUFJLENBQUMsR0FBRzJCLElBQUlTO1FBQUcsU0FBVTtZQUFFLElBQUk7Z0JBQUUsSUFBSSxDQUFDTSxLQUFLLFFBQVFKLENBQUMsQ0FBQyxTQUFTLElBQUtFLENBQUFBLElBQUlGLENBQUMsQ0FBQyxTQUFTLElBQUloQyxPQUFPa0MsT0FBT0EsQ0FBQUEsR0FBSTtZQUFRLFNBQVU7Z0JBQUUsSUFBSXhDLEdBQUcsTUFBTTJCO1lBQUc7UUFBRTtRQUFFLE9BQU9jO0lBQUc7QUFBRTtBQUN6aEIsU0FBU3JCLGdCQUFnQkQsR0FBRztJQUFJLElBQUlZLE1BQU1nQixPQUFPLENBQUM1QixNQUFNLE9BQU9BO0FBQUs7QUFDcEUsU0FBUzZCLFFBQVFULENBQUMsRUFBRUgsQ0FBQztJQUFJLElBQUlFLElBQUloQyxPQUFPMkMsSUFBSSxDQUFDVjtJQUFJLElBQUlqQyxPQUFPNEMscUJBQXFCLEVBQUU7UUFBRSxJQUFJbEQsSUFBSU0sT0FBTzRDLHFCQUFxQixDQUFDWDtRQUFJSCxLQUFNcEMsQ0FBQUEsSUFBSUEsRUFBRW1ELE1BQU0sQ0FBQyxTQUFVZixDQUFDO1lBQUksT0FBTzlCLE9BQU84Qyx3QkFBd0IsQ0FBQ2IsR0FBR0gsR0FBR2lCLFVBQVU7UUFBRSxFQUFDLEdBQUlmLEVBQUVPLElBQUksQ0FBQzVCLEtBQUssQ0FBQ3FCLEdBQUd0QztJQUFJO0lBQUUsT0FBT3NDO0FBQUc7QUFDOVAsU0FBU2dCLGNBQWNmLENBQUM7SUFBSSxJQUFLLElBQUlILElBQUksR0FBR0EsSUFBSXpCLFVBQVVDLE1BQU0sRUFBRXdCLElBQUs7UUFBRSxJQUFJRSxJQUFJLFFBQVEzQixTQUFTLENBQUN5QixFQUFFLEdBQUd6QixTQUFTLENBQUN5QixFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlZLFFBQVExQyxPQUFPZ0MsSUFBSSxDQUFDLEdBQUdpQixPQUFPLENBQUMsU0FBVW5CLENBQUM7WUFBSW9CLGdCQUFnQmpCLEdBQUdILEdBQUdFLENBQUMsQ0FBQ0YsRUFBRTtRQUFHLEtBQUs5QixPQUFPbUQseUJBQXlCLEdBQUduRCxPQUFPb0QsZ0JBQWdCLENBQUNuQixHQUFHakMsT0FBT21ELHlCQUF5QixDQUFDbkIsTUFBTVUsUUFBUTFDLE9BQU9nQyxJQUFJaUIsT0FBTyxDQUFDLFNBQVVuQixDQUFDO1lBQUk5QixPQUFPcUQsY0FBYyxDQUFDcEIsR0FBR0gsR0FBRzlCLE9BQU84Qyx3QkFBd0IsQ0FBQ2QsR0FBR0Y7UUFBSztJQUFJO0lBQUUsT0FBT0c7QUFBRztBQUN0YixTQUFTaUIsZ0JBQWdCSSxHQUFHLEVBQUU5QyxHQUFHLEVBQUVnQyxLQUFLO0lBQUloQyxNQUFNK0MsZUFBZS9DO0lBQU0sSUFBSUEsT0FBTzhDLEtBQUs7UUFBRXRELE9BQU9xRCxjQUFjLENBQUNDLEtBQUs5QyxLQUFLO1lBQUVnQyxPQUFPQTtZQUFPTyxZQUFZO1lBQU1TLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFSCxHQUFHLENBQUM5QyxJQUFJLEdBQUdnQztJQUFPO0lBQUUsT0FBT2M7QUFBSztBQUMzTyxTQUFTQyxlQUFldkIsQ0FBQztJQUFJLElBQUk1QixJQUFJc0QsYUFBYTFCLEdBQUc7SUFBVyxPQUFPLFlBQVl2QyxRQUFRVyxLQUFLQSxJQUFJdUQsT0FBT3ZEO0FBQUk7QUFDL0csU0FBU3NELGFBQWExQixDQUFDLEVBQUVGLENBQUM7SUFBSSxJQUFJLFlBQVlyQyxRQUFRdUMsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUMsSUFBSUQsQ0FBQyxDQUFDckMsT0FBT2lFLFdBQVcsQ0FBQztJQUFFLElBQUksS0FBSyxNQUFNM0IsR0FBRztRQUFFLElBQUk3QixJQUFJNkIsRUFBRXZCLElBQUksQ0FBQ3NCLEdBQUdGLEtBQUs7UUFBWSxJQUFJLFlBQVlyQyxRQUFRVyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJYyxVQUFVO0lBQWlEO0lBQUUsT0FBTyxDQUFDLGFBQWFZLElBQUk2QixTQUFTRSxNQUFLLEVBQUc3QjtBQUFJO0FBQzNUOztDQUVDLEdBQzBEO0FBQ25DO0FBQ1c7QUFDYztBQUNqRCxJQUFJcUMsbUJBQW1CLFNBQVNBLGlCQUFpQkMsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxNQUFNO0lBQzFFLElBQUlDLFlBQVlDLEtBQUtDLEdBQUcsQ0FBQ0QsS0FBS0UsR0FBRyxDQUFDTixTQUFTLEdBQUdJLEtBQUtFLEdBQUcsQ0FBQ0wsVUFBVTtJQUNqRSxJQUFJTSxRQUFRTixVQUFVLElBQUksSUFBSSxDQUFDO0lBQy9CLElBQUlPLFFBQVFSLFNBQVMsSUFBSSxJQUFJLENBQUM7SUFDOUIsSUFBSVMsWUFBWVIsVUFBVSxLQUFLRCxTQUFTLEtBQUtDLFNBQVMsS0FBS0QsUUFBUSxJQUFJLElBQUk7SUFDM0UsSUFBSVU7SUFDSixJQUFJUCxZQUFZLEtBQUtELGtCQUFrQmpELE9BQU87UUFDNUMsSUFBSTBELFlBQVk7WUFBQztZQUFHO1lBQUc7WUFBRztTQUFFO1FBQzVCLElBQUssSUFBSS9FLElBQUksR0FBR3dCLE1BQU0sR0FBR3hCLElBQUl3QixLQUFLeEIsSUFBSztZQUNyQytFLFNBQVMsQ0FBQy9FLEVBQUUsR0FBR3NFLE1BQU0sQ0FBQ3RFLEVBQUUsR0FBR3VFLFlBQVlBLFlBQVlELE1BQU0sQ0FBQ3RFLEVBQUU7UUFDOUQ7UUFDQThFLE9BQU8sSUFBSUUsTUFBTSxDQUFDZCxHQUFHLEtBQUtjLE1BQU0sQ0FBQ2IsSUFBSVEsUUFBUUksU0FBUyxDQUFDLEVBQUU7UUFDekQsSUFBSUEsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLEtBQUtHLE1BQU0sQ0FBQ2QsSUFBSVUsUUFBUUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNiO1FBQzNJO1FBQ0FXLFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJRSxRQUFRUSxRQUFRRyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUtDLE1BQU0sQ0FBQ2I7UUFDbEUsSUFBSVksU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsSUFBSUUsT0FBTyxLQUFLWSxNQUFNLENBQUNiLElBQUlRLFFBQVFJLFNBQVMsQ0FBQyxFQUFFO1FBQzlKO1FBQ0FELFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJRSxPQUFPLEtBQUtZLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUUksU0FBUyxDQUFDLEVBQUU7UUFDNUUsSUFBSUEsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNiLElBQUlFO1FBQ2pLO1FBQ0FTLFFBQVEsS0FBS0UsTUFBTSxDQUFDZCxJQUFJVSxRQUFRRyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUtDLE1BQU0sQ0FBQ2IsSUFBSUU7UUFDOUQsSUFBSVUsU0FBUyxDQUFDLEVBQUUsR0FBRyxHQUFHO1lBQ3BCRCxRQUFRLEtBQUtFLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLQyxNQUFNLENBQUNELFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBU0MsTUFBTSxDQUFDSCxXQUFXLGVBQWVHLE1BQU0sQ0FBQ2QsR0FBRyxLQUFLYyxNQUFNLENBQUNiLElBQUlFLFNBQVNNLFFBQVFJLFNBQVMsQ0FBQyxFQUFFO1FBQy9KO1FBQ0FELFFBQVE7SUFDVixPQUFPLElBQUlQLFlBQVksS0FBS0QsV0FBVyxDQUFDQSxVQUFVQSxTQUFTLEdBQUc7UUFDNUQsSUFBSVcsYUFBYVQsS0FBS0MsR0FBRyxDQUFDRixXQUFXRDtRQUNyQ1EsT0FBTyxLQUFLRSxNQUFNLENBQUNkLEdBQUcsS0FBS2MsTUFBTSxDQUFDYixJQUFJUSxRQUFRTSxZQUFZLG9CQUFvQkQsTUFBTSxDQUFDQyxZQUFZLEtBQUtELE1BQU0sQ0FBQ0MsWUFBWSxTQUFTRCxNQUFNLENBQUNILFdBQVcsS0FBS0csTUFBTSxDQUFDZCxJQUFJVSxRQUFRSyxZQUFZLEtBQUtELE1BQU0sQ0FBQ2IsR0FBRyxvQkFBb0JhLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUssWUFBWSxLQUFLRCxNQUFNLENBQUNiLEdBQUcsb0JBQW9CYSxNQUFNLENBQUNDLFlBQVksS0FBS0QsTUFBTSxDQUFDQyxZQUFZLFNBQVNELE1BQU0sQ0FBQ0gsV0FBVyxLQUFLRyxNQUFNLENBQUNkLElBQUlFLE9BQU8sS0FBS1ksTUFBTSxDQUFDYixJQUFJUSxRQUFRTSxZQUFZLG9CQUFvQkQsTUFBTSxDQUFDZCxJQUFJRSxPQUFPLEtBQUtZLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUU0sWUFBWSxvQkFBb0JELE1BQU0sQ0FBQ0MsWUFBWSxLQUFLRCxNQUFNLENBQUNDLFlBQVksU0FBU0QsTUFBTSxDQUFDSCxXQUFXLEtBQUtHLE1BQU0sQ0FBQ2QsSUFBSUUsUUFBUVEsUUFBUUssWUFBWSxLQUFLRCxNQUFNLENBQUNiLElBQUlFLFFBQVEsb0JBQW9CVyxNQUFNLENBQUNkLElBQUlVLFFBQVFLLFlBQVksS0FBS0QsTUFBTSxDQUFDYixJQUFJRSxRQUFRLG9CQUFvQlcsTUFBTSxDQUFDQyxZQUFZLEtBQUtELE1BQU0sQ0FBQ0MsWUFBWSxTQUFTRCxNQUFNLENBQUNILFdBQVcsS0FBS0csTUFBTSxDQUFDZCxHQUFHLEtBQUtjLE1BQU0sQ0FBQ2IsSUFBSUUsU0FBU00sUUFBUU0sWUFBWTtJQUMxM0IsT0FBTztRQUNMSCxPQUFPLEtBQUtFLE1BQU0sQ0FBQ2QsR0FBRyxLQUFLYyxNQUFNLENBQUNiLEdBQUcsT0FBT2EsTUFBTSxDQUFDWixPQUFPLE9BQU9ZLE1BQU0sQ0FBQ1gsUUFBUSxPQUFPVyxNQUFNLENBQUMsQ0FBQ1osT0FBTztJQUN4RztJQUNBLE9BQU9VO0FBQ1Q7QUFDTyxJQUFJSSxnQkFBZ0IsU0FBU0EsY0FBY0MsS0FBSyxFQUFFQyxJQUFJO0lBQzNELElBQUksQ0FBQ0QsU0FBUyxDQUFDQyxNQUFNO1FBQ25CLE9BQU87SUFDVDtJQUNBLElBQUlDLEtBQUtGLE1BQU1qQixDQUFDLEVBQ2RvQixLQUFLSCxNQUFNaEIsQ0FBQztJQUNkLElBQUlELElBQUlrQixLQUFLbEIsQ0FBQyxFQUNaQyxJQUFJaUIsS0FBS2pCLENBQUMsRUFDVkMsUUFBUWdCLEtBQUtoQixLQUFLLEVBQ2xCQyxTQUFTZSxLQUFLZixNQUFNO0lBQ3RCLElBQUlHLEtBQUtFLEdBQUcsQ0FBQ04sU0FBUyxLQUFLSSxLQUFLRSxHQUFHLENBQUNMLFVBQVUsR0FBRztRQUMvQyxJQUFJa0IsT0FBT2YsS0FBS0MsR0FBRyxDQUFDUCxHQUFHQSxJQUFJRTtRQUMzQixJQUFJb0IsT0FBT2hCLEtBQUtpQixHQUFHLENBQUN2QixHQUFHQSxJQUFJRTtRQUMzQixJQUFJc0IsT0FBT2xCLEtBQUtDLEdBQUcsQ0FBQ04sR0FBR0EsSUFBSUU7UUFDM0IsSUFBSXNCLE9BQU9uQixLQUFLaUIsR0FBRyxDQUFDdEIsR0FBR0EsSUFBSUU7UUFDM0IsT0FBT2dCLE1BQU1FLFFBQVFGLE1BQU1HLFFBQVFGLE1BQU1JLFFBQVFKLE1BQU1LO0lBQ3pEO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDRixJQUFJQyxlQUFlO0lBQ2pCMUIsR0FBRztJQUNIQyxHQUFHO0lBQ0hDLE9BQU87SUFDUEMsUUFBUTtJQUNSLHVCQUF1QjtJQUN2QixxREFBcUQ7SUFDckQsdUZBQXVGO0lBQ3ZGQyxRQUFRO0lBQ1J1QixtQkFBbUI7SUFDbkJDLHlCQUF5QjtJQUN6QkMsZ0JBQWdCO0lBQ2hCQyxtQkFBbUI7SUFDbkJDLGlCQUFpQjtBQUNuQjtBQUNPLElBQUlDLFlBQVksU0FBU0EsVUFBVUMsY0FBYztJQUN0RCxJQUFJQyxRQUFReEQsY0FBY0EsY0FBYyxDQUFDLEdBQUdnRCxlQUFlTztJQUMzRCxJQUFJRSxVQUFVekMsNkNBQU1BO0lBQ3BCLElBQUkwQyxZQUFZekMsK0NBQVFBLENBQUMsQ0FBQyxJQUN4QjBDLGFBQWEvRixlQUFlOEYsV0FBVyxJQUN2Q0UsY0FBY0QsVUFBVSxDQUFDLEVBQUUsRUFDM0JFLGlCQUFpQkYsVUFBVSxDQUFDLEVBQUU7SUFDaEM1QyxnREFBU0EsQ0FBQztRQUNSLElBQUkwQyxRQUFRSyxPQUFPLElBQUlMLFFBQVFLLE9BQU8sQ0FBQ0MsY0FBYyxFQUFFO1lBQ3JELElBQUk7Z0JBQ0YsSUFBSUMsa0JBQWtCUCxRQUFRSyxPQUFPLENBQUNDLGNBQWM7Z0JBQ3BELElBQUlDLGlCQUFpQjtvQkFDbkJILGVBQWVHO2dCQUNqQjtZQUNGLEVBQUUsT0FBT0MsS0FBSztZQUNaLCtCQUErQjtZQUNqQztRQUNGO0lBQ0YsR0FBRyxFQUFFO0lBQ0wsSUFBSTNDLElBQUlrQyxNQUFNbEMsQ0FBQyxFQUNiQyxJQUFJaUMsTUFBTWpDLENBQUMsRUFDWEMsUUFBUWdDLE1BQU1oQyxLQUFLLEVBQ25CQyxTQUFTK0IsTUFBTS9CLE1BQU0sRUFDckJDLFNBQVM4QixNQUFNOUIsTUFBTSxFQUNyQndDLFlBQVlWLE1BQU1VLFNBQVM7SUFDN0IsSUFBSWIsa0JBQWtCRyxNQUFNSCxlQUFlLEVBQ3pDRCxvQkFBb0JJLE1BQU1KLGlCQUFpQixFQUMzQ0QsaUJBQWlCSyxNQUFNTCxjQUFjLEVBQ3JDRixvQkFBb0JPLE1BQU1QLGlCQUFpQixFQUMzQ0MsMEJBQTBCTSxNQUFNTix1QkFBdUI7SUFDekQsSUFBSTVCLE1BQU0sQ0FBQ0EsS0FBS0MsTUFBTSxDQUFDQSxLQUFLQyxVQUFVLENBQUNBLFNBQVNDLFdBQVcsQ0FBQ0EsVUFBVUQsVUFBVSxLQUFLQyxXQUFXLEdBQUc7UUFDakcsT0FBTztJQUNUO0lBQ0EsSUFBSTBDLGFBQWFqRCxnREFBSUEsQ0FBQyxzQkFBc0JnRDtJQUM1QyxJQUFJLENBQUNoQix5QkFBeUI7UUFDNUIsT0FBTyxXQUFXLEdBQUVwQywwREFBbUIsQ0FBQyxRQUFRL0QsU0FBUyxDQUFDLEdBQUdxRSw2REFBV0EsQ0FBQ29DLE9BQU8sT0FBTztZQUNyRlUsV0FBV0M7WUFDWEUsR0FBR2hELGlCQUFpQkMsR0FBR0MsR0FBR0MsT0FBT0MsUUFBUUM7UUFDM0M7SUFDRjtJQUNBLE9BQU8sV0FBVyxHQUFFWiwwREFBbUIsQ0FBQ0ssb0RBQU9BLEVBQUU7UUFDL0NtRCxVQUFVVixjQUFjO1FBQ3hCbEYsTUFBTTtZQUNKOEMsT0FBT0E7WUFDUEMsUUFBUUE7WUFDUkgsR0FBR0E7WUFDSEMsR0FBR0E7UUFDTDtRQUNBZ0QsSUFBSTtZQUNGL0MsT0FBT0E7WUFDUEMsUUFBUUE7WUFDUkgsR0FBR0E7WUFDSEMsR0FBR0E7UUFDTDtRQUNBaUQsVUFBVXBCO1FBQ1ZDLGlCQUFpQkE7UUFDakJvQixVQUFVdkI7SUFDWixHQUFHLFNBQVV3QixJQUFJO1FBQ2YsSUFBSUMsWUFBWUQsS0FBS2xELEtBQUssRUFDeEJvRCxhQUFhRixLQUFLakQsTUFBTSxFQUN4Qm9ELFFBQVFILEtBQUtwRCxDQUFDLEVBQ2R3RCxRQUFRSixLQUFLbkQsQ0FBQztRQUNoQixPQUFPLFdBQVcsR0FBRVQsMERBQW1CLENBQUNLLG9EQUFPQSxFQUFFO1lBQy9DbUQsVUFBVVYsY0FBYztZQUN4QmxGLE1BQU0sT0FBTzBELE1BQU0sQ0FBQ3dCLGdCQUFnQixDQUFDLElBQUksSUFBSUEsYUFBYTtZQUMxRFcsSUFBSSxHQUFHbkMsTUFBTSxDQUFDd0IsYUFBYTtZQUMzQm1CLGVBQWU7WUFDZkMsT0FBTzdCO1lBQ1BxQixVQUFVcEI7WUFDVnFCLFVBQVV4QjtZQUNWZ0MsUUFBUTVCO1FBQ1YsR0FBRyxXQUFXLEdBQUV2QywwREFBbUIsQ0FBQyxRQUFRL0QsU0FBUyxDQUFDLEdBQUdxRSw2REFBV0EsQ0FBQ29DLE9BQU8sT0FBTztZQUNqRlUsV0FBV0M7WUFDWEUsR0FBR2hELGlCQUFpQndELE9BQU9DLE9BQU9ILFdBQVdDLFlBQVlsRDtZQUN6RHdELEtBQUt6QjtRQUNQO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvc2hhcGUvUmVjdGFuZ2xlLmpzP2ZjYWIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFJlY3RhbmdsZVxuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgQW5pbWF0ZSBmcm9tICdyZWFjdC1zbW9vdGgnO1xuaW1wb3J0IHsgZmlsdGVyUHJvcHMgfSBmcm9tICcuLi91dGlsL1JlYWN0VXRpbHMnO1xudmFyIGdldFJlY3RhbmdsZVBhdGggPSBmdW5jdGlvbiBnZXRSZWN0YW5nbGVQYXRoKHgsIHksIHdpZHRoLCBoZWlnaHQsIHJhZGl1cykge1xuICB2YXIgbWF4UmFkaXVzID0gTWF0aC5taW4oTWF0aC5hYnMod2lkdGgpIC8gMiwgTWF0aC5hYnMoaGVpZ2h0KSAvIDIpO1xuICB2YXIgeVNpZ24gPSBoZWlnaHQgPj0gMCA/IDEgOiAtMTtcbiAgdmFyIHhTaWduID0gd2lkdGggPj0gMCA/IDEgOiAtMTtcbiAgdmFyIGNsb2NrV2lzZSA9IGhlaWdodCA+PSAwICYmIHdpZHRoID49IDAgfHwgaGVpZ2h0IDwgMCAmJiB3aWR0aCA8IDAgPyAxIDogMDtcbiAgdmFyIHBhdGg7XG4gIGlmIChtYXhSYWRpdXMgPiAwICYmIHJhZGl1cyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgdmFyIG5ld1JhZGl1cyA9IFswLCAwLCAwLCAwXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gNDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBuZXdSYWRpdXNbaV0gPSByYWRpdXNbaV0gPiBtYXhSYWRpdXMgPyBtYXhSYWRpdXMgOiByYWRpdXNbaV07XG4gICAgfVxuICAgIHBhdGggPSBcIk1cIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5ICsgeVNpZ24gKiBuZXdSYWRpdXNbMF0pO1xuICAgIGlmIChuZXdSYWRpdXNbMF0gPiAwKSB7XG4gICAgICBwYXRoICs9IFwiQSBcIi5jb25jYXQobmV3UmFkaXVzWzBdLCBcIixcIikuY29uY2F0KG5ld1JhZGl1c1swXSwgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcIikuY29uY2F0KHggKyB4U2lnbiAqIG5ld1JhZGl1c1swXSwgXCIsXCIpLmNvbmNhdCh5KTtcbiAgICB9XG4gICAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB3aWR0aCAtIHhTaWduICogbmV3UmFkaXVzWzFdLCBcIixcIikuY29uY2F0KHkpO1xuICAgIGlmIChuZXdSYWRpdXNbMV0gPiAwKSB7XG4gICAgICBwYXRoICs9IFwiQSBcIi5jb25jYXQobmV3UmFkaXVzWzFdLCBcIixcIikuY29uY2F0KG5ld1JhZGl1c1sxXSwgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcXG4gICAgICAgIFwiKS5jb25jYXQoeCArIHdpZHRoLCBcIixcIikuY29uY2F0KHkgKyB5U2lnbiAqIG5ld1JhZGl1c1sxXSk7XG4gICAgfVxuICAgIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgd2lkdGgsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCAtIHlTaWduICogbmV3UmFkaXVzWzJdKTtcbiAgICBpZiAobmV3UmFkaXVzWzJdID4gMCkge1xuICAgICAgcGF0aCArPSBcIkEgXCIuY29uY2F0KG5ld1JhZGl1c1syXSwgXCIsXCIpLmNvbmNhdChuZXdSYWRpdXNbMl0sIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXFxuICAgICAgICBcIikuY29uY2F0KHggKyB3aWR0aCAtIHhTaWduICogbmV3UmFkaXVzWzJdLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQpO1xuICAgIH1cbiAgICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHhTaWduICogbmV3UmFkaXVzWzNdLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQpO1xuICAgIGlmIChuZXdSYWRpdXNbM10gPiAwKSB7XG4gICAgICBwYXRoICs9IFwiQSBcIi5jb25jYXQobmV3UmFkaXVzWzNdLCBcIixcIikuY29uY2F0KG5ld1JhZGl1c1szXSwgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcXG4gICAgICAgIFwiKS5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0IC0geVNpZ24gKiBuZXdSYWRpdXNbM10pO1xuICAgIH1cbiAgICBwYXRoICs9ICdaJztcbiAgfSBlbHNlIGlmIChtYXhSYWRpdXMgPiAwICYmIHJhZGl1cyA9PT0gK3JhZGl1cyAmJiByYWRpdXMgPiAwKSB7XG4gICAgdmFyIF9uZXdSYWRpdXMgPSBNYXRoLm1pbihtYXhSYWRpdXMsIHJhZGl1cyk7XG4gICAgcGF0aCA9IFwiTSBcIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5ICsgeVNpZ24gKiBfbmV3UmFkaXVzLCBcIlxcbiAgICAgICAgICAgIEEgXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXCIpLmNvbmNhdCh4ICsgeFNpZ24gKiBfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KHksIFwiXFxuICAgICAgICAgICAgTCBcIikuY29uY2F0KHggKyB3aWR0aCAtIHhTaWduICogX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdCh5LCBcIlxcbiAgICAgICAgICAgIEEgXCIpLmNvbmNhdChfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLDAsMCxcIikuY29uY2F0KGNsb2NrV2lzZSwgXCIsXCIpLmNvbmNhdCh4ICsgd2lkdGgsIFwiLFwiKS5jb25jYXQoeSArIHlTaWduICogX25ld1JhZGl1cywgXCJcXG4gICAgICAgICAgICBMIFwiKS5jb25jYXQoeCArIHdpZHRoLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQgLSB5U2lnbiAqIF9uZXdSYWRpdXMsIFwiXFxuICAgICAgICAgICAgQSBcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcIikuY29uY2F0KHggKyB3aWR0aCAtIHhTaWduICogX25ld1JhZGl1cywgXCIsXCIpLmNvbmNhdCh5ICsgaGVpZ2h0LCBcIlxcbiAgICAgICAgICAgIEwgXCIpLmNvbmNhdCh4ICsgeFNpZ24gKiBfbmV3UmFkaXVzLCBcIixcIikuY29uY2F0KHkgKyBoZWlnaHQsIFwiXFxuICAgICAgICAgICAgQSBcIikuY29uY2F0KF9uZXdSYWRpdXMsIFwiLFwiKS5jb25jYXQoX25ld1JhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoY2xvY2tXaXNlLCBcIixcIikuY29uY2F0KHgsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCAtIHlTaWduICogX25ld1JhZGl1cywgXCIgWlwiKTtcbiAgfSBlbHNlIHtcbiAgICBwYXRoID0gXCJNIFwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHksIFwiIGggXCIpLmNvbmNhdCh3aWR0aCwgXCIgdiBcIikuY29uY2F0KGhlaWdodCwgXCIgaCBcIikuY29uY2F0KC13aWR0aCwgXCIgWlwiKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG5leHBvcnQgdmFyIGlzSW5SZWN0YW5nbGUgPSBmdW5jdGlvbiBpc0luUmVjdGFuZ2xlKHBvaW50LCByZWN0KSB7XG4gIGlmICghcG9pbnQgfHwgIXJlY3QpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHB4ID0gcG9pbnQueCxcbiAgICBweSA9IHBvaW50Lnk7XG4gIHZhciB4ID0gcmVjdC54LFxuICAgIHkgPSByZWN0LnksXG4gICAgd2lkdGggPSByZWN0LndpZHRoLFxuICAgIGhlaWdodCA9IHJlY3QuaGVpZ2h0O1xuICBpZiAoTWF0aC5hYnMod2lkdGgpID4gMCAmJiBNYXRoLmFicyhoZWlnaHQpID4gMCkge1xuICAgIHZhciBtaW5YID0gTWF0aC5taW4oeCwgeCArIHdpZHRoKTtcbiAgICB2YXIgbWF4WCA9IE1hdGgubWF4KHgsIHggKyB3aWR0aCk7XG4gICAgdmFyIG1pblkgPSBNYXRoLm1pbih5LCB5ICsgaGVpZ2h0KTtcbiAgICB2YXIgbWF4WSA9IE1hdGgubWF4KHksIHkgKyBoZWlnaHQpO1xuICAgIHJldHVybiBweCA+PSBtaW5YICYmIHB4IDw9IG1heFggJiYgcHkgPj0gbWluWSAmJiBweSA8PSBtYXhZO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG52YXIgZGVmYXVsdFByb3BzID0ge1xuICB4OiAwLFxuICB5OiAwLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICAvLyBUaGUgcmFkaXVzIG9mIGJvcmRlclxuICAvLyBUaGUgcmFkaXVzIG9mIGZvdXIgY29ybmVycyB3aGVuIHJhZGl1cyBpcyBhIG51bWJlclxuICAvLyBUaGUgcmFkaXVzIG9mIGxlZnQtdG9wLCByaWdodC10b3AsIHJpZ2h0LWJvdHRvbSwgbGVmdC1ib3R0b20gd2hlbiByYWRpdXMgaXMgYW4gYXJyYXlcbiAgcmFkaXVzOiAwLFxuICBpc0FuaW1hdGlvbkFjdGl2ZTogZmFsc2UsXG4gIGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlOiBmYWxzZSxcbiAgYW5pbWF0aW9uQmVnaW46IDAsXG4gIGFuaW1hdGlvbkR1cmF0aW9uOiAxNTAwLFxuICBhbmltYXRpb25FYXNpbmc6ICdlYXNlJ1xufTtcbmV4cG9ydCB2YXIgUmVjdGFuZ2xlID0gZnVuY3Rpb24gUmVjdGFuZ2xlKHJlY3RhbmdsZVByb3BzKSB7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdFByb3BzKSwgcmVjdGFuZ2xlUHJvcHMpO1xuICB2YXIgcGF0aFJlZiA9IHVzZVJlZigpO1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoLTEpLFxuICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgIHRvdGFsTGVuZ3RoID0gX3VzZVN0YXRlMlswXSxcbiAgICBzZXRUb3RhbExlbmd0aCA9IF91c2VTdGF0ZTJbMV07XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHBhdGhSZWYuY3VycmVudCAmJiBwYXRoUmVmLmN1cnJlbnQuZ2V0VG90YWxMZW5ndGgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBwYXRoVG90YWxMZW5ndGggPSBwYXRoUmVmLmN1cnJlbnQuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAgICAgaWYgKHBhdGhUb3RhbExlbmd0aCkge1xuICAgICAgICAgIHNldFRvdGFsTGVuZ3RoKHBhdGhUb3RhbExlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBjYWxjdWxhdGUgdG90YWwgbGVuZ3RoIGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSk7XG4gIHZhciB4ID0gcHJvcHMueCxcbiAgICB5ID0gcHJvcHMueSxcbiAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgIGhlaWdodCA9IHByb3BzLmhlaWdodCxcbiAgICByYWRpdXMgPSBwcm9wcy5yYWRpdXMsXG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICB2YXIgYW5pbWF0aW9uRWFzaW5nID0gcHJvcHMuYW5pbWF0aW9uRWFzaW5nLFxuICAgIGFuaW1hdGlvbkR1cmF0aW9uID0gcHJvcHMuYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgYW5pbWF0aW9uQmVnaW4gPSBwcm9wcy5hbmltYXRpb25CZWdpbixcbiAgICBpc0FuaW1hdGlvbkFjdGl2ZSA9IHByb3BzLmlzQW5pbWF0aW9uQWN0aXZlLFxuICAgIGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlID0gcHJvcHMuaXNVcGRhdGVBbmltYXRpb25BY3RpdmU7XG4gIGlmICh4ICE9PSAreCB8fCB5ICE9PSAreSB8fCB3aWR0aCAhPT0gK3dpZHRoIHx8IGhlaWdodCAhPT0gK2hlaWdodCB8fCB3aWR0aCA9PT0gMCB8fCBoZWlnaHQgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLXJlY3RhbmdsZScsIGNsYXNzTmFtZSk7XG4gIGlmICghaXNVcGRhdGVBbmltYXRpb25BY3RpdmUpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSksIHtcbiAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICAgIGQ6IGdldFJlY3RhbmdsZVBhdGgoeCwgeSwgd2lkdGgsIGhlaWdodCwgcmFkaXVzKVxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgIGNhbkJlZ2luOiB0b3RhbExlbmd0aCA+IDAsXG4gICAgZnJvbToge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sXG4gICAgdG86IHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgeDogeCxcbiAgICAgIHk6IHlcbiAgICB9LFxuICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICBhbmltYXRpb25FYXNpbmc6IGFuaW1hdGlvbkVhc2luZyxcbiAgICBpc0FjdGl2ZTogaXNVcGRhdGVBbmltYXRpb25BY3RpdmVcbiAgfSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICB2YXIgY3VycldpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgIGN1cnJIZWlnaHQgPSBfcmVmLmhlaWdodCxcbiAgICAgIGN1cnJYID0gX3JlZi54LFxuICAgICAgY3VyclkgPSBfcmVmLnk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICAgIGNhbkJlZ2luOiB0b3RhbExlbmd0aCA+IDAsXG4gICAgICBmcm9tOiBcIjBweCBcIi5jb25jYXQodG90YWxMZW5ndGggPT09IC0xID8gMSA6IHRvdGFsTGVuZ3RoLCBcInB4XCIpLFxuICAgICAgdG86IFwiXCIuY29uY2F0KHRvdGFsTGVuZ3RoLCBcInB4IDBweFwiKSxcbiAgICAgIGF0dHJpYnV0ZU5hbWU6IFwic3Ryb2tlRGFzaGFycmF5XCIsXG4gICAgICBiZWdpbjogYW5pbWF0aW9uQmVnaW4sXG4gICAgICBkdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICBpc0FjdGl2ZTogaXNBbmltYXRpb25BY3RpdmUsXG4gICAgICBlYXNpbmc6IGFuaW1hdGlvbkVhc2luZ1xuICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpLCB7XG4gICAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgICBkOiBnZXRSZWN0YW5nbGVQYXRoKGN1cnJYLCBjdXJyWSwgY3VycldpZHRoLCBjdXJySGVpZ2h0LCByYWRpdXMpLFxuICAgICAgcmVmOiBwYXRoUmVmXG4gICAgfSkpKTtcbiAgfSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJjbHN4IiwiQW5pbWF0ZSIsImZpbHRlclByb3BzIiwiZ2V0UmVjdGFuZ2xlUGF0aCIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJyYWRpdXMiLCJtYXhSYWRpdXMiLCJNYXRoIiwibWluIiwiYWJzIiwieVNpZ24iLCJ4U2lnbiIsImNsb2NrV2lzZSIsInBhdGgiLCJuZXdSYWRpdXMiLCJjb25jYXQiLCJfbmV3UmFkaXVzIiwiaXNJblJlY3RhbmdsZSIsInBvaW50IiwicmVjdCIsInB4IiwicHkiLCJtaW5YIiwibWF4WCIsIm1heCIsIm1pblkiLCJtYXhZIiwiZGVmYXVsdFByb3BzIiwiaXNBbmltYXRpb25BY3RpdmUiLCJpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSIsImFuaW1hdGlvbkJlZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJSZWN0YW5nbGUiLCJyZWN0YW5nbGVQcm9wcyIsInByb3BzIiwicGF0aFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJ0b3RhbExlbmd0aCIsInNldFRvdGFsTGVuZ3RoIiwiY3VycmVudCIsImdldFRvdGFsTGVuZ3RoIiwicGF0aFRvdGFsTGVuZ3RoIiwiZXJyIiwiY2xhc3NOYW1lIiwibGF5ZXJDbGFzcyIsImNyZWF0ZUVsZW1lbnQiLCJkIiwiY2FuQmVnaW4iLCJ0byIsImR1cmF0aW9uIiwiaXNBY3RpdmUiLCJfcmVmIiwiY3VycldpZHRoIiwiY3VyckhlaWdodCIsImN1cnJYIiwiY3VyclkiLCJhdHRyaWJ1dGVOYW1lIiwiYmVnaW4iLCJlYXNpbmciLCJyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Sector.js":
/*!***************************************************!*\
!*** ./node_modules/recharts/es6/shape/Sector.js ***!
\***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Sector: () => (/* binding */ Sector)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _util_DataUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Sector\n */ \n\n\n\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx, cy = _ref.cy, radius = _ref.radius, angle = _ref.angle, sign = _ref.sign, isExternal = _ref.isExternal, cornerRadius = _ref.cornerRadius, cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, centerRadius, centerAngle);\n // The coordinate of point which is tangent to the circle\n var circleTangency = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, radius, centerAngle);\n // The coordinate of point which is tangent to the radius line\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, centerRadius * Math.cos(theta * _util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx, cy = _ref2.cy, innerRadius = _ref2.innerRadius, outerRadius = _ref2.outerRadius, startAngle = _ref2.startAngle, endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle);\n // When the angle of sector equals to 360, star point and end point coincide\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, outerRadius, startAngle);\n var outerEndPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n if (innerRadius > 0) {\n var innerStartPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, innerRadius, startAngle);\n var innerEndPoint = (0,_util_PolarUtils__WEBPACK_IMPORTED_MODULE_3__.polarToCartesian)(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx, cy = _ref3.cy, innerRadius = _ref3.innerRadius, outerRadius = _ref3.outerRadius, cornerRadius = _ref3.cornerRadius, forceCornerRadius = _ref3.forceCornerRadius, cornerIsExternal = _ref3.cornerIsExternal, startAngle = _ref3.startAngle, endAngle = _ref3.endAngle;\n var sign = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.mathSign)(endAngle - startAngle);\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), soct = _getTangentCircle.circleTangency, solt = _getTangentCircle.lineTangency, sot = _getTangentCircle.theta;\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), eoct = _getTangentCircle2.circleTangency, eolt = _getTangentCircle2.lineTangency, eot = _getTangentCircle2.theta;\n var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), sict = _getTangentCircle3.circleTangency, silt = _getTangentCircle3.lineTangency, sit = _getTangentCircle3.theta;\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }), eict = _getTangentCircle4.circleTangency, eilt = _getTangentCircle4.lineTangency, eit = _getTangentCircle4.theta;\n var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n if (innerArcAngle < 0 && cornerRadius === 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n return path;\n};\nvar defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nvar Sector = function Sector(sectorProps) {\n var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n var cx = props.cx, cy = props.cy, innerRadius = props.innerRadius, outerRadius = props.outerRadius, cornerRadius = props.cornerRadius, forceCornerRadius = props.forceCornerRadius, cornerIsExternal = props.cornerIsExternal, startAngle = props.startAngle, endAngle = props.endAngle, className = props.className;\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-sector\", className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = (0,_util_DataUtils__WEBPACK_IMPORTED_MODULE_2__.getPercentValue)(cornerRadius, deltaRadius, 0, true);\n var path;\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(props, true), {\n className: layerClass,\n d: path,\n role: \"img\"\n }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1NlY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0YsU0FBUyxDQUFDVyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl2QixJQUFJTSxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtBQU1wQixDQUFBQSxJQUFJQSxFQUFFd0IsTUFBTSxDQUFDLFNBQVVKLENBQUM7WUFBSSxPQUFPZCxPQUFPbUIsd0JBQXdCLENBQUNOLEdBQUdDLEdBQUdNLFVBQVU7UUFBRSxFQUFDLEdBQUlMLEVBQUVNLElBQUksQ0FBQ1YsS0FBSyxDQUFDSSxHQUFHckI7SUFBSTtJQUFFLE9BQU9xQjtBQUFHO0FBQzlQLFNBQVNPLGNBQWNULENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVQsVUFBVUMsTUFBTSxFQUFFUSxJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVixTQUFTLENBQUNTLEVBQUUsR0FBR1QsU0FBUyxDQUFDUyxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFaLE9BQU9lLElBQUksQ0FBQyxHQUFHUSxPQUFPLENBQUMsU0FBVVQsQ0FBQztZQUFJVSxnQkFBZ0JYLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtkLE9BQU95Qix5QkFBeUIsR0FBR3pCLE9BQU8wQixnQkFBZ0IsQ0FBQ2IsR0FBR2IsT0FBT3lCLHlCQUF5QixDQUFDVixNQUFNSCxRQUFRWixPQUFPZSxJQUFJUSxPQUFPLENBQUMsU0FBVVQsQ0FBQztZQUFJZCxPQUFPMkIsY0FBYyxDQUFDZCxHQUFHQyxHQUFHZCxPQUFPbUIsd0JBQXdCLENBQUNKLEdBQUdEO1FBQUs7SUFBSTtJQUFFLE9BQU9EO0FBQUc7QUFDdGIsU0FBU1csZ0JBQWdCSSxHQUFHLEVBQUVwQixHQUFHLEVBQUVxQixLQUFLO0lBQUlyQixNQUFNc0IsZUFBZXRCO0lBQU0sSUFBSUEsT0FBT29CLEtBQUs7UUFBRTVCLE9BQU8yQixjQUFjLENBQUNDLEtBQUtwQixLQUFLO1lBQUVxQixPQUFPQTtZQUFPVCxZQUFZO1lBQU1XLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFSixHQUFHLENBQUNwQixJQUFJLEdBQUdxQjtJQUFPO0lBQUUsT0FBT0Q7QUFBSztBQUMzTyxTQUFTRSxlQUFlZixDQUFDO0lBQUksSUFBSVgsSUFBSTZCLGFBQWFsQixHQUFHO0lBQVcsT0FBTyxZQUFZdEIsUUFBUVcsS0FBS0EsSUFBSThCLE9BQU85QjtBQUFJO0FBQy9HLFNBQVM2QixhQUFhbEIsQ0FBQyxFQUFFRCxDQUFDO0lBQUksSUFBSSxZQUFZckIsUUFBUXNCLE1BQU0sQ0FBQ0EsR0FBRyxPQUFPQTtJQUFHLElBQUlGLElBQUlFLENBQUMsQ0FBQ3BCLE9BQU93QyxXQUFXLENBQUM7SUFBRSxJQUFJLEtBQUssTUFBTXRCLEdBQUc7UUFBRSxJQUFJVCxJQUFJUyxFQUFFSCxJQUFJLENBQUNLLEdBQUdELEtBQUs7UUFBWSxJQUFJLFlBQVlyQixRQUFRVyxJQUFJLE9BQU9BO1FBQUcsTUFBTSxJQUFJZ0MsVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhdEIsSUFBSW9CLFNBQVNHLE1BQUssRUFBR3RCO0FBQUk7QUFDM1Q7O0NBRUMsR0FDeUI7QUFDRjtBQUN5QjtBQUNhO0FBQ0E7QUFDOUQsSUFBSThCLGdCQUFnQixTQUFTQSxjQUFjQyxVQUFVLEVBQUVDLFFBQVE7SUFDN0QsSUFBSUMsT0FBT0oseURBQVFBLENBQUNHLFdBQVdEO0lBQy9CLElBQUlHLGFBQWFDLEtBQUtDLEdBQUcsQ0FBQ0QsS0FBS0UsR0FBRyxDQUFDTCxXQUFXRCxhQUFhO0lBQzNELE9BQU9FLE9BQU9DO0FBQ2hCO0FBQ0EsSUFBSUksbUJBQW1CLFNBQVNBLGlCQUFpQkMsSUFBSTtJQUNuRCxJQUFJQyxLQUFLRCxLQUFLQyxFQUFFLEVBQ2RDLEtBQUtGLEtBQUtFLEVBQUUsRUFDWkMsU0FBU0gsS0FBS0csTUFBTSxFQUNwQkMsUUFBUUosS0FBS0ksS0FBSyxFQUNsQlYsT0FBT00sS0FBS04sSUFBSSxFQUNoQlcsYUFBYUwsS0FBS0ssVUFBVSxFQUM1QkMsZUFBZU4sS0FBS00sWUFBWSxFQUNoQ0MsbUJBQW1CUCxLQUFLTyxnQkFBZ0I7SUFDMUMsSUFBSUMsZUFBZUYsZUFBZ0JELENBQUFBLGFBQWEsSUFBSSxDQUFDLEtBQUtGO0lBQzFELElBQUlNLFFBQVFiLEtBQUtjLElBQUksQ0FBQ0osZUFBZUUsZ0JBQWdCcEIsb0RBQU1BO0lBQzNELElBQUl1QixjQUFjSixtQkFBbUJILFFBQVFBLFFBQVFWLE9BQU9lO0lBQzVELElBQUlHLFNBQVN6QixrRUFBZ0JBLENBQUNjLElBQUlDLElBQUlNLGNBQWNHO0lBQ3BELHlEQUF5RDtJQUN6RCxJQUFJRSxpQkFBaUIxQixrRUFBZ0JBLENBQUNjLElBQUlDLElBQUlDLFFBQVFRO0lBQ3RELDhEQUE4RDtJQUM5RCxJQUFJRyxvQkFBb0JQLG1CQUFtQkgsUUFBUVYsT0FBT2UsUUFBUUw7SUFDbEUsSUFBSVcsZUFBZTVCLGtFQUFnQkEsQ0FBQ2MsSUFBSUMsSUFBSU0sZUFBZVosS0FBS29CLEdBQUcsQ0FBQ1AsUUFBUXJCLG9EQUFNQSxHQUFHMEI7SUFDckYsT0FBTztRQUNMRixRQUFRQTtRQUNSQyxnQkFBZ0JBO1FBQ2hCRSxjQUFjQTtRQUNkTixPQUFPQTtJQUNUO0FBQ0Y7QUFDQSxJQUFJUSxnQkFBZ0IsU0FBU0EsY0FBY0MsS0FBSztJQUM5QyxJQUFJakIsS0FBS2lCLE1BQU1qQixFQUFFLEVBQ2ZDLEtBQUtnQixNQUFNaEIsRUFBRSxFQUNiaUIsY0FBY0QsTUFBTUMsV0FBVyxFQUMvQkMsY0FBY0YsTUFBTUUsV0FBVyxFQUMvQjVCLGFBQWEwQixNQUFNMUIsVUFBVSxFQUM3QkMsV0FBV3lCLE1BQU16QixRQUFRO0lBQzNCLElBQUlXLFFBQVFiLGNBQWNDLFlBQVlDO0lBRXRDLDRFQUE0RTtJQUM1RSxJQUFJNEIsZUFBZTdCLGFBQWFZO0lBQ2hDLElBQUlrQixrQkFBa0JuQyxrRUFBZ0JBLENBQUNjLElBQUlDLElBQUlrQixhQUFhNUI7SUFDNUQsSUFBSStCLGdCQUFnQnBDLGtFQUFnQkEsQ0FBQ2MsSUFBSUMsSUFBSWtCLGFBQWFDO0lBQzFELElBQUlHLE9BQU8sS0FBS0MsTUFBTSxDQUFDSCxnQkFBZ0JJLENBQUMsRUFBRSxLQUFLRCxNQUFNLENBQUNILGdCQUFnQkssQ0FBQyxFQUFFLFlBQVlGLE1BQU0sQ0FBQ0wsYUFBYSxLQUFLSyxNQUFNLENBQUNMLGFBQWEsYUFBYUssTUFBTSxDQUFDLENBQUU3QixDQUFBQSxLQUFLRSxHQUFHLENBQUNNLFNBQVMsR0FBRSxHQUFJLEtBQUtxQixNQUFNLENBQUMsQ0FBRWpDLENBQUFBLGFBQWE2QixZQUFXLEdBQUksV0FBV0ksTUFBTSxDQUFDRixjQUFjRyxDQUFDLEVBQUUsS0FBS0QsTUFBTSxDQUFDRixjQUFjSSxDQUFDLEVBQUU7SUFDMVIsSUFBSVIsY0FBYyxHQUFHO1FBQ25CLElBQUlTLGtCQUFrQnpDLGtFQUFnQkEsQ0FBQ2MsSUFBSUMsSUFBSWlCLGFBQWEzQjtRQUM1RCxJQUFJcUMsZ0JBQWdCMUMsa0VBQWdCQSxDQUFDYyxJQUFJQyxJQUFJaUIsYUFBYUU7UUFDMURHLFFBQVEsS0FBS0MsTUFBTSxDQUFDSSxjQUFjSCxDQUFDLEVBQUUsS0FBS0QsTUFBTSxDQUFDSSxjQUFjRixDQUFDLEVBQUUsb0JBQW9CRixNQUFNLENBQUNOLGFBQWEsS0FBS00sTUFBTSxDQUFDTixhQUFhLHFCQUFxQk0sTUFBTSxDQUFDLENBQUU3QixDQUFBQSxLQUFLRSxHQUFHLENBQUNNLFNBQVMsR0FBRSxHQUFJLEtBQUtxQixNQUFNLENBQUMsQ0FBRWpDLENBQUFBLGNBQWM2QixZQUFXLEdBQUksbUJBQW1CSSxNQUFNLENBQUNHLGdCQUFnQkYsQ0FBQyxFQUFFLEtBQUtELE1BQU0sQ0FBQ0csZ0JBQWdCRCxDQUFDLEVBQUU7SUFDbFQsT0FBTztRQUNMSCxRQUFRLEtBQUtDLE1BQU0sQ0FBQ3hCLElBQUksS0FBS3dCLE1BQU0sQ0FBQ3ZCLElBQUk7SUFDMUM7SUFDQSxPQUFPc0I7QUFDVDtBQUNBLElBQUlNLHNCQUFzQixTQUFTQSxvQkFBb0JDLEtBQUs7SUFDMUQsSUFBSTlCLEtBQUs4QixNQUFNOUIsRUFBRSxFQUNmQyxLQUFLNkIsTUFBTTdCLEVBQUUsRUFDYmlCLGNBQWNZLE1BQU1aLFdBQVcsRUFDL0JDLGNBQWNXLE1BQU1YLFdBQVcsRUFDL0JkLGVBQWV5QixNQUFNekIsWUFBWSxFQUNqQzBCLG9CQUFvQkQsTUFBTUMsaUJBQWlCLEVBQzNDekIsbUJBQW1Cd0IsTUFBTXhCLGdCQUFnQixFQUN6Q2YsYUFBYXVDLE1BQU12QyxVQUFVLEVBQzdCQyxXQUFXc0MsTUFBTXRDLFFBQVE7SUFDM0IsSUFBSUMsT0FBT0oseURBQVFBLENBQUNHLFdBQVdEO0lBQy9CLElBQUl5QyxvQkFBb0JsQyxpQkFBaUI7UUFDckNFLElBQUlBO1FBQ0pDLElBQUlBO1FBQ0pDLFFBQVFpQjtRQUNSaEIsT0FBT1o7UUFDUEUsTUFBTUE7UUFDTlksY0FBY0E7UUFDZEMsa0JBQWtCQTtJQUNwQixJQUNBMkIsT0FBT0Qsa0JBQWtCcEIsY0FBYyxFQUN2Q3NCLE9BQU9GLGtCQUFrQmxCLFlBQVksRUFDckNxQixNQUFNSCxrQkFBa0J4QixLQUFLO0lBQy9CLElBQUk0QixxQkFBcUJ0QyxpQkFBaUI7UUFDdENFLElBQUlBO1FBQ0pDLElBQUlBO1FBQ0pDLFFBQVFpQjtRQUNSaEIsT0FBT1g7UUFDUEMsTUFBTSxDQUFDQTtRQUNQWSxjQUFjQTtRQUNkQyxrQkFBa0JBO0lBQ3BCLElBQ0ErQixPQUFPRCxtQkFBbUJ4QixjQUFjLEVBQ3hDMEIsT0FBT0YsbUJBQW1CdEIsWUFBWSxFQUN0Q3lCLE1BQU1ILG1CQUFtQjVCLEtBQUs7SUFDaEMsSUFBSWdDLGdCQUFnQmxDLG1CQUFtQlgsS0FBS0UsR0FBRyxDQUFDTixhQUFhQyxZQUFZRyxLQUFLRSxHQUFHLENBQUNOLGFBQWFDLFlBQVkyQyxNQUFNSTtJQUNqSCxJQUFJQyxnQkFBZ0IsR0FBRztRQUNyQixJQUFJVCxtQkFBbUI7WUFDckIsT0FBTyxLQUFLUCxNQUFNLENBQUNVLEtBQUtULENBQUMsRUFBRSxLQUFLRCxNQUFNLENBQUNVLEtBQUtSLENBQUMsRUFBRSxlQUFlRixNQUFNLENBQUNuQixjQUFjLEtBQUttQixNQUFNLENBQUNuQixjQUFjLFdBQVdtQixNQUFNLENBQUNuQixlQUFlLEdBQUcsaUJBQWlCbUIsTUFBTSxDQUFDbkIsY0FBYyxLQUFLbUIsTUFBTSxDQUFDbkIsY0FBYyxXQUFXbUIsTUFBTSxDQUFDLENBQUNuQixlQUFlLEdBQUc7UUFDeFA7UUFDQSxPQUFPVyxjQUFjO1lBQ25CaEIsSUFBSUE7WUFDSkMsSUFBSUE7WUFDSmlCLGFBQWFBO1lBQ2JDLGFBQWFBO1lBQ2I1QixZQUFZQTtZQUNaQyxVQUFVQTtRQUNaO0lBQ0Y7SUFDQSxJQUFJK0IsT0FBTyxLQUFLQyxNQUFNLENBQUNVLEtBQUtULENBQUMsRUFBRSxLQUFLRCxNQUFNLENBQUNVLEtBQUtSLENBQUMsRUFBRSxXQUFXRixNQUFNLENBQUNuQixjQUFjLEtBQUttQixNQUFNLENBQUNuQixjQUFjLFNBQVNtQixNQUFNLENBQUMsQ0FBRS9CLENBQUFBLE9BQU8sSUFBSSxLQUFLK0IsTUFBTSxDQUFDUyxLQUFLUixDQUFDLEVBQUUsS0FBS0QsTUFBTSxDQUFDUyxLQUFLUCxDQUFDLEVBQUUsV0FBV0YsTUFBTSxDQUFDTCxhQUFhLEtBQUtLLE1BQU0sQ0FBQ0wsYUFBYSxPQUFPSyxNQUFNLENBQUMsQ0FBRWdCLENBQUFBLGdCQUFnQixHQUFFLEdBQUksS0FBS2hCLE1BQU0sQ0FBQyxDQUFFL0IsQ0FBQUEsT0FBTyxJQUFJLEtBQUsrQixNQUFNLENBQUNhLEtBQUtaLENBQUMsRUFBRSxLQUFLRCxNQUFNLENBQUNhLEtBQUtYLENBQUMsRUFBRSxXQUFXRixNQUFNLENBQUNuQixjQUFjLEtBQUttQixNQUFNLENBQUNuQixjQUFjLFNBQVNtQixNQUFNLENBQUMsQ0FBRS9CLENBQUFBLE9BQU8sSUFBSSxLQUFLK0IsTUFBTSxDQUFDYyxLQUFLYixDQUFDLEVBQUUsS0FBS0QsTUFBTSxDQUFDYyxLQUFLWixDQUFDLEVBQUU7SUFDaGQsSUFBSVIsY0FBYyxHQUFHO1FBQ25CLElBQUl1QixxQkFBcUIzQyxpQkFBaUI7WUFDdENFLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0pDLFFBQVFnQjtZQUNSZixPQUFPWjtZQUNQRSxNQUFNQTtZQUNOVyxZQUFZO1lBQ1pDLGNBQWNBO1lBQ2RDLGtCQUFrQkE7UUFDcEIsSUFDQW9DLE9BQU9ELG1CQUFtQjdCLGNBQWMsRUFDeEMrQixPQUFPRixtQkFBbUIzQixZQUFZLEVBQ3RDOEIsTUFBTUgsbUJBQW1CakMsS0FBSztRQUNoQyxJQUFJcUMscUJBQXFCL0MsaUJBQWlCO1lBQ3RDRSxJQUFJQTtZQUNKQyxJQUFJQTtZQUNKQyxRQUFRZ0I7WUFDUmYsT0FBT1g7WUFDUEMsTUFBTSxDQUFDQTtZQUNQVyxZQUFZO1lBQ1pDLGNBQWNBO1lBQ2RDLGtCQUFrQkE7UUFDcEIsSUFDQXdDLE9BQU9ELG1CQUFtQmpDLGNBQWMsRUFDeENtQyxPQUFPRixtQkFBbUIvQixZQUFZLEVBQ3RDa0MsTUFBTUgsbUJBQW1CckMsS0FBSztRQUNoQyxJQUFJeUMsZ0JBQWdCM0MsbUJBQW1CWCxLQUFLRSxHQUFHLENBQUNOLGFBQWFDLFlBQVlHLEtBQUtFLEdBQUcsQ0FBQ04sYUFBYUMsWUFBWW9ELE1BQU1JO1FBQ2pILElBQUlDLGdCQUFnQixLQUFLNUMsaUJBQWlCLEdBQUc7WUFDM0MsT0FBTyxHQUFHbUIsTUFBTSxDQUFDRCxNQUFNLEtBQUtDLE1BQU0sQ0FBQ3hCLElBQUksS0FBS3dCLE1BQU0sQ0FBQ3ZCLElBQUk7UUFDekQ7UUFDQXNCLFFBQVEsSUFBSUMsTUFBTSxDQUFDdUIsS0FBS3RCLENBQUMsRUFBRSxLQUFLRCxNQUFNLENBQUN1QixLQUFLckIsQ0FBQyxFQUFFLGFBQWFGLE1BQU0sQ0FBQ25CLGNBQWMsS0FBS21CLE1BQU0sQ0FBQ25CLGNBQWMsU0FBU21CLE1BQU0sQ0FBQyxDQUFFL0IsQ0FBQUEsT0FBTyxJQUFJLEtBQUsrQixNQUFNLENBQUNzQixLQUFLckIsQ0FBQyxFQUFFLEtBQUtELE1BQU0sQ0FBQ3NCLEtBQUtwQixDQUFDLEVBQUUsYUFBYUYsTUFBTSxDQUFDTixhQUFhLEtBQUtNLE1BQU0sQ0FBQ04sYUFBYSxPQUFPTSxNQUFNLENBQUMsQ0FBRXlCLENBQUFBLGdCQUFnQixHQUFFLEdBQUksS0FBS3pCLE1BQU0sQ0FBQyxDQUFFL0IsQ0FBQUEsT0FBTyxJQUFJLEtBQUsrQixNQUFNLENBQUNrQixLQUFLakIsQ0FBQyxFQUFFLEtBQUtELE1BQU0sQ0FBQ2tCLEtBQUtoQixDQUFDLEVBQUUsYUFBYUYsTUFBTSxDQUFDbkIsY0FBYyxLQUFLbUIsTUFBTSxDQUFDbkIsY0FBYyxTQUFTbUIsTUFBTSxDQUFDLENBQUUvQixDQUFBQSxPQUFPLElBQUksS0FBSytCLE1BQU0sQ0FBQ21CLEtBQUtsQixDQUFDLEVBQUUsS0FBS0QsTUFBTSxDQUFDbUIsS0FBS2pCLENBQUMsRUFBRTtJQUNwZCxPQUFPO1FBQ0xILFFBQVEsSUFBSUMsTUFBTSxDQUFDeEIsSUFBSSxLQUFLd0IsTUFBTSxDQUFDdkIsSUFBSTtJQUN6QztJQUNBLE9BQU9zQjtBQUNUO0FBQ0EsSUFBSTJCLGVBQWU7SUFDakJsRCxJQUFJO0lBQ0pDLElBQUk7SUFDSmlCLGFBQWE7SUFDYkMsYUFBYTtJQUNiNUIsWUFBWTtJQUNaQyxVQUFVO0lBQ1ZhLGNBQWM7SUFDZDBCLG1CQUFtQjtJQUNuQnpCLGtCQUFrQjtBQUNwQjtBQUNPLElBQUk2QyxTQUFTLFNBQVNBLE9BQU9DLFdBQVc7SUFDN0MsSUFBSUMsUUFBUXRGLGNBQWNBLGNBQWMsQ0FBQyxHQUFHbUYsZUFBZUU7SUFDM0QsSUFBSXBELEtBQUtxRCxNQUFNckQsRUFBRSxFQUNmQyxLQUFLb0QsTUFBTXBELEVBQUUsRUFDYmlCLGNBQWNtQyxNQUFNbkMsV0FBVyxFQUMvQkMsY0FBY2tDLE1BQU1sQyxXQUFXLEVBQy9CZCxlQUFlZ0QsTUFBTWhELFlBQVksRUFDakMwQixvQkFBb0JzQixNQUFNdEIsaUJBQWlCLEVBQzNDekIsbUJBQW1CK0MsTUFBTS9DLGdCQUFnQixFQUN6Q2YsYUFBYThELE1BQU05RCxVQUFVLEVBQzdCQyxXQUFXNkQsTUFBTTdELFFBQVEsRUFDekI4RCxZQUFZRCxNQUFNQyxTQUFTO0lBQzdCLElBQUluQyxjQUFjRCxlQUFlM0IsZUFBZUMsVUFBVTtRQUN4RCxPQUFPO0lBQ1Q7SUFDQSxJQUFJK0QsYUFBYXZFLGdEQUFJQSxDQUFDLG1CQUFtQnNFO0lBQ3pDLElBQUlFLGNBQWNyQyxjQUFjRDtJQUNoQyxJQUFJdUMsS0FBS3JFLGdFQUFlQSxDQUFDaUIsY0FBY21ELGFBQWEsR0FBRztJQUN2RCxJQUFJakM7SUFDSixJQUFJa0MsS0FBSyxLQUFLOUQsS0FBS0UsR0FBRyxDQUFDTixhQUFhQyxZQUFZLEtBQUs7UUFDbkQrQixPQUFPTSxvQkFBb0I7WUFDekI3QixJQUFJQTtZQUNKQyxJQUFJQTtZQUNKaUIsYUFBYUE7WUFDYkMsYUFBYUE7WUFDYmQsY0FBY1YsS0FBS0MsR0FBRyxDQUFDNkQsSUFBSUQsY0FBYztZQUN6Q3pCLG1CQUFtQkE7WUFDbkJ6QixrQkFBa0JBO1lBQ2xCZixZQUFZQTtZQUNaQyxVQUFVQTtRQUNaO0lBQ0YsT0FBTztRQUNMK0IsT0FBT1AsY0FBYztZQUNuQmhCLElBQUlBO1lBQ0pDLElBQUlBO1lBQ0ppQixhQUFhQTtZQUNiQyxhQUFhQTtZQUNiNUIsWUFBWUE7WUFDWkMsVUFBVUE7UUFDWjtJQUNGO0lBQ0EsT0FBTyxXQUFXLEdBQUVULDBEQUFtQixDQUFDLFFBQVF2QyxTQUFTLENBQUMsR0FBR3lDLDZEQUFXQSxDQUFDb0UsT0FBTyxPQUFPO1FBQ3JGQyxXQUFXQztRQUNYSSxHQUFHcEM7UUFDSHFDLE1BQU07SUFDUjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9TZWN0b3IuanM/NWM5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IFNlY3RvclxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG5pbXBvcnQgeyBwb2xhclRvQ2FydGVzaWFuLCBSQURJQU4gfSBmcm9tICcuLi91dGlsL1BvbGFyVXRpbHMnO1xuaW1wb3J0IHsgZ2V0UGVyY2VudFZhbHVlLCBtYXRoU2lnbiB9IGZyb20gJy4uL3V0aWwvRGF0YVV0aWxzJztcbnZhciBnZXREZWx0YUFuZ2xlID0gZnVuY3Rpb24gZ2V0RGVsdGFBbmdsZShzdGFydEFuZ2xlLCBlbmRBbmdsZSkge1xuICB2YXIgc2lnbiA9IG1hdGhTaWduKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSk7XG4gIHZhciBkZWx0YUFuZ2xlID0gTWF0aC5taW4oTWF0aC5hYnMoZW5kQW5nbGUgLSBzdGFydEFuZ2xlKSwgMzU5Ljk5OSk7XG4gIHJldHVybiBzaWduICogZGVsdGFBbmdsZTtcbn07XG52YXIgZ2V0VGFuZ2VudENpcmNsZSA9IGZ1bmN0aW9uIGdldFRhbmdlbnRDaXJjbGUoX3JlZikge1xuICB2YXIgY3ggPSBfcmVmLmN4LFxuICAgIGN5ID0gX3JlZi5jeSxcbiAgICByYWRpdXMgPSBfcmVmLnJhZGl1cyxcbiAgICBhbmdsZSA9IF9yZWYuYW5nbGUsXG4gICAgc2lnbiA9IF9yZWYuc2lnbixcbiAgICBpc0V4dGVybmFsID0gX3JlZi5pc0V4dGVybmFsLFxuICAgIGNvcm5lclJhZGl1cyA9IF9yZWYuY29ybmVyUmFkaXVzLFxuICAgIGNvcm5lcklzRXh0ZXJuYWwgPSBfcmVmLmNvcm5lcklzRXh0ZXJuYWw7XG4gIHZhciBjZW50ZXJSYWRpdXMgPSBjb3JuZXJSYWRpdXMgKiAoaXNFeHRlcm5hbCA/IDEgOiAtMSkgKyByYWRpdXM7XG4gIHZhciB0aGV0YSA9IE1hdGguYXNpbihjb3JuZXJSYWRpdXMgLyBjZW50ZXJSYWRpdXMpIC8gUkFESUFOO1xuICB2YXIgY2VudGVyQW5nbGUgPSBjb3JuZXJJc0V4dGVybmFsID8gYW5nbGUgOiBhbmdsZSArIHNpZ24gKiB0aGV0YTtcbiAgdmFyIGNlbnRlciA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBjZW50ZXJSYWRpdXMsIGNlbnRlckFuZ2xlKTtcbiAgLy8gVGhlIGNvb3JkaW5hdGUgb2YgcG9pbnQgd2hpY2ggaXMgdGFuZ2VudCB0byB0aGUgY2lyY2xlXG4gIHZhciBjaXJjbGVUYW5nZW5jeSA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCByYWRpdXMsIGNlbnRlckFuZ2xlKTtcbiAgLy8gVGhlIGNvb3JkaW5hdGUgb2YgcG9pbnQgd2hpY2ggaXMgdGFuZ2VudCB0byB0aGUgcmFkaXVzIGxpbmVcbiAgdmFyIGxpbmVUYW5nZW5jeUFuZ2xlID0gY29ybmVySXNFeHRlcm5hbCA/IGFuZ2xlIC0gc2lnbiAqIHRoZXRhIDogYW5nbGU7XG4gIHZhciBsaW5lVGFuZ2VuY3kgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgY2VudGVyUmFkaXVzICogTWF0aC5jb3ModGhldGEgKiBSQURJQU4pLCBsaW5lVGFuZ2VuY3lBbmdsZSk7XG4gIHJldHVybiB7XG4gICAgY2VudGVyOiBjZW50ZXIsXG4gICAgY2lyY2xlVGFuZ2VuY3k6IGNpcmNsZVRhbmdlbmN5LFxuICAgIGxpbmVUYW5nZW5jeTogbGluZVRhbmdlbmN5LFxuICAgIHRoZXRhOiB0aGV0YVxuICB9O1xufTtcbnZhciBnZXRTZWN0b3JQYXRoID0gZnVuY3Rpb24gZ2V0U2VjdG9yUGF0aChfcmVmMikge1xuICB2YXIgY3ggPSBfcmVmMi5jeCxcbiAgICBjeSA9IF9yZWYyLmN5LFxuICAgIGlubmVyUmFkaXVzID0gX3JlZjIuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBfcmVmMi5vdXRlclJhZGl1cyxcbiAgICBzdGFydEFuZ2xlID0gX3JlZjIuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWYyLmVuZEFuZ2xlO1xuICB2YXIgYW5nbGUgPSBnZXREZWx0YUFuZ2xlKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKTtcblxuICAvLyBXaGVuIHRoZSBhbmdsZSBvZiBzZWN0b3IgZXF1YWxzIHRvIDM2MCwgc3RhciBwb2ludCBhbmQgZW5kIHBvaW50IGNvaW5jaWRlXG4gIHZhciB0ZW1wRW5kQW5nbGUgPSBzdGFydEFuZ2xlICsgYW5nbGU7XG4gIHZhciBvdXRlclN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgb3V0ZXJSYWRpdXMsIHN0YXJ0QW5nbGUpO1xuICB2YXIgb3V0ZXJFbmRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBvdXRlclJhZGl1cywgdGVtcEVuZEFuZ2xlKTtcbiAgdmFyIHBhdGggPSBcIk0gXCIuY29uY2F0KG91dGVyU3RhcnRQb2ludC54LCBcIixcIikuY29uY2F0KG91dGVyU3RhcnRQb2ludC55LCBcIlxcbiAgICBBIFwiKS5jb25jYXQob3V0ZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQob3V0ZXJSYWRpdXMsIFwiLDAsXFxuICAgIFwiKS5jb25jYXQoKyhNYXRoLmFicyhhbmdsZSkgPiAxODApLCBcIixcIikuY29uY2F0KCsoc3RhcnRBbmdsZSA+IHRlbXBFbmRBbmdsZSksIFwiLFxcbiAgICBcIikuY29uY2F0KG91dGVyRW5kUG9pbnQueCwgXCIsXCIpLmNvbmNhdChvdXRlckVuZFBvaW50LnksIFwiXFxuICBcIik7XG4gIGlmIChpbm5lclJhZGl1cyA+IDApIHtcbiAgICB2YXIgaW5uZXJTdGFydFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGlubmVyUmFkaXVzLCBzdGFydEFuZ2xlKTtcbiAgICB2YXIgaW5uZXJFbmRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBpbm5lclJhZGl1cywgdGVtcEVuZEFuZ2xlKTtcbiAgICBwYXRoICs9IFwiTCBcIi5jb25jYXQoaW5uZXJFbmRQb2ludC54LCBcIixcIikuY29uY2F0KGlubmVyRW5kUG9pbnQueSwgXCJcXG4gICAgICAgICAgICBBIFwiKS5jb25jYXQoaW5uZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoaW5uZXJSYWRpdXMsIFwiLDAsXFxuICAgICAgICAgICAgXCIpLmNvbmNhdCgrKE1hdGguYWJzKGFuZ2xlKSA+IDE4MCksIFwiLFwiKS5jb25jYXQoKyhzdGFydEFuZ2xlIDw9IHRlbXBFbmRBbmdsZSksIFwiLFxcbiAgICAgICAgICAgIFwiKS5jb25jYXQoaW5uZXJTdGFydFBvaW50LngsIFwiLFwiKS5jb25jYXQoaW5uZXJTdGFydFBvaW50LnksIFwiIFpcIik7XG4gIH0gZWxzZSB7XG4gICAgcGF0aCArPSBcIkwgXCIuY29uY2F0KGN4LCBcIixcIikuY29uY2F0KGN5LCBcIiBaXCIpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBnZXRTZWN0b3JXaXRoQ29ybmVyID0gZnVuY3Rpb24gZ2V0U2VjdG9yV2l0aENvcm5lcihfcmVmMykge1xuICB2YXIgY3ggPSBfcmVmMy5jeCxcbiAgICBjeSA9IF9yZWYzLmN5LFxuICAgIGlubmVyUmFkaXVzID0gX3JlZjMuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBfcmVmMy5vdXRlclJhZGl1cyxcbiAgICBjb3JuZXJSYWRpdXMgPSBfcmVmMy5jb3JuZXJSYWRpdXMsXG4gICAgZm9yY2VDb3JuZXJSYWRpdXMgPSBfcmVmMy5mb3JjZUNvcm5lclJhZGl1cyxcbiAgICBjb3JuZXJJc0V4dGVybmFsID0gX3JlZjMuY29ybmVySXNFeHRlcm5hbCxcbiAgICBzdGFydEFuZ2xlID0gX3JlZjMuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWYzLmVuZEFuZ2xlO1xuICB2YXIgc2lnbiA9IG1hdGhTaWduKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSk7XG4gIHZhciBfZ2V0VGFuZ2VudENpcmNsZSA9IGdldFRhbmdlbnRDaXJjbGUoe1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgcmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIGFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgc2lnbjogc2lnbixcbiAgICAgIGNvcm5lclJhZGl1czogY29ybmVyUmFkaXVzLFxuICAgICAgY29ybmVySXNFeHRlcm5hbDogY29ybmVySXNFeHRlcm5hbFxuICAgIH0pLFxuICAgIHNvY3QgPSBfZ2V0VGFuZ2VudENpcmNsZS5jaXJjbGVUYW5nZW5jeSxcbiAgICBzb2x0ID0gX2dldFRhbmdlbnRDaXJjbGUubGluZVRhbmdlbmN5LFxuICAgIHNvdCA9IF9nZXRUYW5nZW50Q2lyY2xlLnRoZXRhO1xuICB2YXIgX2dldFRhbmdlbnRDaXJjbGUyID0gZ2V0VGFuZ2VudENpcmNsZSh7XG4gICAgICBjeDogY3gsXG4gICAgICBjeTogY3ksXG4gICAgICByYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgYW5nbGU6IGVuZEFuZ2xlLFxuICAgICAgc2lnbjogLXNpZ24sXG4gICAgICBjb3JuZXJSYWRpdXM6IGNvcm5lclJhZGl1cyxcbiAgICAgIGNvcm5lcklzRXh0ZXJuYWw6IGNvcm5lcklzRXh0ZXJuYWxcbiAgICB9KSxcbiAgICBlb2N0ID0gX2dldFRhbmdlbnRDaXJjbGUyLmNpcmNsZVRhbmdlbmN5LFxuICAgIGVvbHQgPSBfZ2V0VGFuZ2VudENpcmNsZTIubGluZVRhbmdlbmN5LFxuICAgIGVvdCA9IF9nZXRUYW5nZW50Q2lyY2xlMi50aGV0YTtcbiAgdmFyIG91dGVyQXJjQW5nbGUgPSBjb3JuZXJJc0V4dGVybmFsID8gTWF0aC5hYnMoc3RhcnRBbmdsZSAtIGVuZEFuZ2xlKSA6IE1hdGguYWJzKHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSkgLSBzb3QgLSBlb3Q7XG4gIGlmIChvdXRlckFyY0FuZ2xlIDwgMCkge1xuICAgIGlmIChmb3JjZUNvcm5lclJhZGl1cykge1xuICAgICAgcmV0dXJuIFwiTSBcIi5jb25jYXQoc29sdC54LCBcIixcIikuY29uY2F0KHNvbHQueSwgXCJcXG4gICAgICAgIGFcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLDAsMCwxLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzICogMiwgXCIsMFxcbiAgICAgICAgYVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLDEsXCIpLmNvbmNhdCgtY29ybmVyUmFkaXVzICogMiwgXCIsMFxcbiAgICAgIFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFNlY3RvclBhdGgoe1xuICAgICAgY3g6IGN4LFxuICAgICAgY3k6IGN5LFxuICAgICAgaW5uZXJSYWRpdXM6IGlubmVyUmFkaXVzLFxuICAgICAgb3V0ZXJSYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZVxuICAgIH0pO1xuICB9XG4gIHZhciBwYXRoID0gXCJNIFwiLmNvbmNhdChzb2x0LngsIFwiLFwiKS5jb25jYXQoc29sdC55LCBcIlxcbiAgICBBXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdCgrKHNpZ24gPCAwKSwgXCIsXCIpLmNvbmNhdChzb2N0LngsIFwiLFwiKS5jb25jYXQoc29jdC55LCBcIlxcbiAgICBBXCIpLmNvbmNhdChvdXRlclJhZGl1cywgXCIsXCIpLmNvbmNhdChvdXRlclJhZGl1cywgXCIsMCxcIikuY29uY2F0KCsob3V0ZXJBcmNBbmdsZSA+IDE4MCksIFwiLFwiKS5jb25jYXQoKyhzaWduIDwgMCksIFwiLFwiKS5jb25jYXQoZW9jdC54LCBcIixcIikuY29uY2F0KGVvY3QueSwgXCJcXG4gICAgQVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoKyhzaWduIDwgMCksIFwiLFwiKS5jb25jYXQoZW9sdC54LCBcIixcIikuY29uY2F0KGVvbHQueSwgXCJcXG4gIFwiKTtcbiAgaWYgKGlubmVyUmFkaXVzID4gMCkge1xuICAgIHZhciBfZ2V0VGFuZ2VudENpcmNsZTMgPSBnZXRUYW5nZW50Q2lyY2xlKHtcbiAgICAgICAgY3g6IGN4LFxuICAgICAgICBjeTogY3ksXG4gICAgICAgIHJhZGl1czogaW5uZXJSYWRpdXMsXG4gICAgICAgIGFuZ2xlOiBzdGFydEFuZ2xlLFxuICAgICAgICBzaWduOiBzaWduLFxuICAgICAgICBpc0V4dGVybmFsOiB0cnVlLFxuICAgICAgICBjb3JuZXJSYWRpdXM6IGNvcm5lclJhZGl1cyxcbiAgICAgICAgY29ybmVySXNFeHRlcm5hbDogY29ybmVySXNFeHRlcm5hbFxuICAgICAgfSksXG4gICAgICBzaWN0ID0gX2dldFRhbmdlbnRDaXJjbGUzLmNpcmNsZVRhbmdlbmN5LFxuICAgICAgc2lsdCA9IF9nZXRUYW5nZW50Q2lyY2xlMy5saW5lVGFuZ2VuY3ksXG4gICAgICBzaXQgPSBfZ2V0VGFuZ2VudENpcmNsZTMudGhldGE7XG4gICAgdmFyIF9nZXRUYW5nZW50Q2lyY2xlNCA9IGdldFRhbmdlbnRDaXJjbGUoe1xuICAgICAgICBjeDogY3gsXG4gICAgICAgIGN5OiBjeSxcbiAgICAgICAgcmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgICAgYW5nbGU6IGVuZEFuZ2xlLFxuICAgICAgICBzaWduOiAtc2lnbixcbiAgICAgICAgaXNFeHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgY29ybmVyUmFkaXVzOiBjb3JuZXJSYWRpdXMsXG4gICAgICAgIGNvcm5lcklzRXh0ZXJuYWw6IGNvcm5lcklzRXh0ZXJuYWxcbiAgICAgIH0pLFxuICAgICAgZWljdCA9IF9nZXRUYW5nZW50Q2lyY2xlNC5jaXJjbGVUYW5nZW5jeSxcbiAgICAgIGVpbHQgPSBfZ2V0VGFuZ2VudENpcmNsZTQubGluZVRhbmdlbmN5LFxuICAgICAgZWl0ID0gX2dldFRhbmdlbnRDaXJjbGU0LnRoZXRhO1xuICAgIHZhciBpbm5lckFyY0FuZ2xlID0gY29ybmVySXNFeHRlcm5hbCA/IE1hdGguYWJzKHN0YXJ0QW5nbGUgLSBlbmRBbmdsZSkgOiBNYXRoLmFicyhzdGFydEFuZ2xlIC0gZW5kQW5nbGUpIC0gc2l0IC0gZWl0O1xuICAgIGlmIChpbm5lckFyY0FuZ2xlIDwgMCAmJiBjb3JuZXJSYWRpdXMgPT09IDApIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdChwYXRoLCBcIkxcIikuY29uY2F0KGN4LCBcIixcIikuY29uY2F0KGN5LCBcIlpcIik7XG4gICAgfVxuICAgIHBhdGggKz0gXCJMXCIuY29uY2F0KGVpbHQueCwgXCIsXCIpLmNvbmNhdChlaWx0LnksIFwiXFxuICAgICAgQVwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIixcIikuY29uY2F0KGNvcm5lclJhZGl1cywgXCIsMCwwLFwiKS5jb25jYXQoKyhzaWduIDwgMCksIFwiLFwiKS5jb25jYXQoZWljdC54LCBcIixcIikuY29uY2F0KGVpY3QueSwgXCJcXG4gICAgICBBXCIpLmNvbmNhdChpbm5lclJhZGl1cywgXCIsXCIpLmNvbmNhdChpbm5lclJhZGl1cywgXCIsMCxcIikuY29uY2F0KCsoaW5uZXJBcmNBbmdsZSA+IDE4MCksIFwiLFwiKS5jb25jYXQoKyhzaWduID4gMCksIFwiLFwiKS5jb25jYXQoc2ljdC54LCBcIixcIikuY29uY2F0KHNpY3QueSwgXCJcXG4gICAgICBBXCIpLmNvbmNhdChjb3JuZXJSYWRpdXMsIFwiLFwiKS5jb25jYXQoY29ybmVyUmFkaXVzLCBcIiwwLDAsXCIpLmNvbmNhdCgrKHNpZ24gPCAwKSwgXCIsXCIpLmNvbmNhdChzaWx0LngsIFwiLFwiKS5jb25jYXQoc2lsdC55LCBcIlpcIik7XG4gIH0gZWxzZSB7XG4gICAgcGF0aCArPSBcIkxcIi5jb25jYXQoY3gsIFwiLFwiKS5jb25jYXQoY3ksIFwiWlwiKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn07XG52YXIgZGVmYXVsdFByb3BzID0ge1xuICBjeDogMCxcbiAgY3k6IDAsXG4gIGlubmVyUmFkaXVzOiAwLFxuICBvdXRlclJhZGl1czogMCxcbiAgc3RhcnRBbmdsZTogMCxcbiAgZW5kQW5nbGU6IDAsXG4gIGNvcm5lclJhZGl1czogMCxcbiAgZm9yY2VDb3JuZXJSYWRpdXM6IGZhbHNlLFxuICBjb3JuZXJJc0V4dGVybmFsOiBmYWxzZVxufTtcbmV4cG9ydCB2YXIgU2VjdG9yID0gZnVuY3Rpb24gU2VjdG9yKHNlY3RvclByb3BzKSB7XG4gIHZhciBwcm9wcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZGVmYXVsdFByb3BzKSwgc2VjdG9yUHJvcHMpO1xuICB2YXIgY3ggPSBwcm9wcy5jeCxcbiAgICBjeSA9IHByb3BzLmN5LFxuICAgIGlubmVyUmFkaXVzID0gcHJvcHMuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBwcm9wcy5vdXRlclJhZGl1cyxcbiAgICBjb3JuZXJSYWRpdXMgPSBwcm9wcy5jb3JuZXJSYWRpdXMsXG4gICAgZm9yY2VDb3JuZXJSYWRpdXMgPSBwcm9wcy5mb3JjZUNvcm5lclJhZGl1cyxcbiAgICBjb3JuZXJJc0V4dGVybmFsID0gcHJvcHMuY29ybmVySXNFeHRlcm5hbCxcbiAgICBzdGFydEFuZ2xlID0gcHJvcHMuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IHByb3BzLmVuZEFuZ2xlLFxuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgaWYgKG91dGVyUmFkaXVzIDwgaW5uZXJSYWRpdXMgfHwgc3RhcnRBbmdsZSA9PT0gZW5kQW5nbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGF5ZXJDbGFzcyA9IGNsc3goJ3JlY2hhcnRzLXNlY3RvcicsIGNsYXNzTmFtZSk7XG4gIHZhciBkZWx0YVJhZGl1cyA9IG91dGVyUmFkaXVzIC0gaW5uZXJSYWRpdXM7XG4gIHZhciBjciA9IGdldFBlcmNlbnRWYWx1ZShjb3JuZXJSYWRpdXMsIGRlbHRhUmFkaXVzLCAwLCB0cnVlKTtcbiAgdmFyIHBhdGg7XG4gIGlmIChjciA+IDAgJiYgTWF0aC5hYnMoc3RhcnRBbmdsZSAtIGVuZEFuZ2xlKSA8IDM2MCkge1xuICAgIHBhdGggPSBnZXRTZWN0b3JXaXRoQ29ybmVyKHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIGNvcm5lclJhZGl1czogTWF0aC5taW4oY3IsIGRlbHRhUmFkaXVzIC8gMiksXG4gICAgICBmb3JjZUNvcm5lclJhZGl1czogZm9yY2VDb3JuZXJSYWRpdXMsXG4gICAgICBjb3JuZXJJc0V4dGVybmFsOiBjb3JuZXJJc0V4dGVybmFsLFxuICAgICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSxcbiAgICAgIGVuZEFuZ2xlOiBlbmRBbmdsZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHBhdGggPSBnZXRTZWN0b3JQYXRoKHtcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyhwcm9wcywgdHJ1ZSksIHtcbiAgICBjbGFzc05hbWU6IGxheWVyQ2xhc3MsXG4gICAgZDogcGF0aCxcbiAgICByb2xlOiBcImltZ1wiXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIk51bWJlciIsIlJlYWN0IiwiY2xzeCIsImZpbHRlclByb3BzIiwicG9sYXJUb0NhcnRlc2lhbiIsIlJBRElBTiIsImdldFBlcmNlbnRWYWx1ZSIsIm1hdGhTaWduIiwiZ2V0RGVsdGFBbmdsZSIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsInNpZ24iLCJkZWx0YUFuZ2xlIiwiTWF0aCIsIm1pbiIsImFicyIsImdldFRhbmdlbnRDaXJjbGUiLCJfcmVmIiwiY3giLCJjeSIsInJhZGl1cyIsImFuZ2xlIiwiaXNFeHRlcm5hbCIsImNvcm5lclJhZGl1cyIsImNvcm5lcklzRXh0ZXJuYWwiLCJjZW50ZXJSYWRpdXMiLCJ0aGV0YSIsImFzaW4iLCJjZW50ZXJBbmdsZSIsImNlbnRlciIsImNpcmNsZVRhbmdlbmN5IiwibGluZVRhbmdlbmN5QW5nbGUiLCJsaW5lVGFuZ2VuY3kiLCJjb3MiLCJnZXRTZWN0b3JQYXRoIiwiX3JlZjIiLCJpbm5lclJhZGl1cyIsIm91dGVyUmFkaXVzIiwidGVtcEVuZEFuZ2xlIiwib3V0ZXJTdGFydFBvaW50Iiwib3V0ZXJFbmRQb2ludCIsInBhdGgiLCJjb25jYXQiLCJ4IiwieSIsImlubmVyU3RhcnRQb2ludCIsImlubmVyRW5kUG9pbnQiLCJnZXRTZWN0b3JXaXRoQ29ybmVyIiwiX3JlZjMiLCJmb3JjZUNvcm5lclJhZGl1cyIsIl9nZXRUYW5nZW50Q2lyY2xlIiwic29jdCIsInNvbHQiLCJzb3QiLCJfZ2V0VGFuZ2VudENpcmNsZTIiLCJlb2N0IiwiZW9sdCIsImVvdCIsIm91dGVyQXJjQW5nbGUiLCJfZ2V0VGFuZ2VudENpcmNsZTMiLCJzaWN0Iiwic2lsdCIsInNpdCIsIl9nZXRUYW5nZW50Q2lyY2xlNCIsImVpY3QiLCJlaWx0IiwiZWl0IiwiaW5uZXJBcmNBbmdsZSIsImRlZmF1bHRQcm9wcyIsIlNlY3RvciIsInNlY3RvclByb3BzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJsYXllckNsYXNzIiwiZGVsdGFSYWRpdXMiLCJjciIsImNyZWF0ZUVsZW1lbnQiLCJkIiwicm9sZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Sector.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Symbols.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/shape/Symbols.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Symbols: () => (/* binding */ Symbols)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nvar _excluded = [\n \"type\",\n \"size\",\n \"sizeType\"\n];\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n/**\n * @fileOverview Curve\n */ \n\n\n\n\nvar symbolFactories = {\n symbolCircle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCircle,\n symbolCross: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCross,\n symbolDiamond: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolDiamond,\n symbolSquare: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolSquare,\n symbolStar: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolStar,\n symbolTriangle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolTriangle,\n symbolWye: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default()(type));\n return symbolFactories[name] || victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === \"area\") {\n return size;\n }\n switch(type){\n case \"cross\":\n return 5 * size * size / 9;\n case \"diamond\":\n return 0.5 * size * size / Math.sqrt(3);\n case \"square\":\n return size * size;\n case \"star\":\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n case \"triangle\":\n return Math.sqrt(3) * size * size / 4;\n case \"wye\":\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n default:\n return Math.PI * size * size / 4;\n }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n symbolFactories[\"symbol\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_1___default()(key))] = factory;\n};\nvar Symbols = function Symbols(_ref) {\n var _ref$type = _ref.type, type = _ref$type === void 0 ? \"circle\" : _ref$type, _ref$size = _ref.size, size = _ref$size === void 0 ? 64 : _ref$size, _ref$sizeType = _ref.sizeType, sizeType = _ref$sizeType === void 0 ? \"area\" : _ref$sizeType, rest = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread(_objectSpread({}, rest), {}, {\n type: type,\n size: size,\n sizeType: sizeType\n });\n /**\n * Calculate the path of curve\n * @return {String} path\n */ var getPath = function getPath() {\n var symbolFactory = getSymbolFactory(type);\n var symbol = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_2__.symbol)().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n };\n var className = props.className, cx = props.cx, cy = props.cy;\n var filteredProps = (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_4__.filterProps)(props, true);\n if (cx === +cx && cy === +cy && size === +size) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, filteredProps, {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(\"recharts-symbols\", className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: getPath()\n }));\n }\n return null;\n};\nSymbols.registerSymbol = registerSymbol;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1N5bWJvbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsSUFBSUssWUFBWTtJQUFDO0lBQVE7SUFBUTtDQUFXO0FBQzVDLFNBQVNDO0lBQWFBLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsTUFBTTtRQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJQyxVQUFVQyxNQUFNLEVBQUVGLElBQUs7WUFBRSxJQUFJRyxTQUFTRixTQUFTLENBQUNELEVBQUU7WUFBRSxJQUFLLElBQUlJLE9BQU9ELE9BQVE7Z0JBQUUsSUFBSVAsT0FBT0gsU0FBUyxDQUFDWSxjQUFjLENBQUNDLElBQUksQ0FBQ0gsUUFBUUMsTUFBTTtvQkFBRUwsTUFBTSxDQUFDSyxJQUFJLEdBQUdELE1BQU0sQ0FBQ0MsSUFBSTtnQkFBRTtZQUFFO1FBQUU7UUFBRSxPQUFPTDtJQUFRO0lBQUcsT0FBT0osU0FBU1ksS0FBSyxDQUFDLElBQUksRUFBRU47QUFBWTtBQUNsVixTQUFTTyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJZixPQUFPZ0IsSUFBSSxDQUFDSDtJQUFJLElBQUliLE9BQU9pQixxQkFBcUIsRUFBRTtRQUFFLElBQUl4QixJQUFJTyxPQUFPaUIscUJBQXFCLENBQUNKO1FBQUlDLEtB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V0EsR0FBR2UsSUFBSSxDQUFDb0IsZUFBZWhCLElBQUksQ0FBQ0Qsa0JBQWtCQyxNQUFNQyxVQUFVTDtRQUN0RixPQUFPaEI7SUFDVDtJQUNBLElBQUlxQyxZQUFZSCxNQUFNRyxTQUFTLEVBQzdCQyxLQUFLSixNQUFNSSxFQUFFLEVBQ2JDLEtBQUtMLE1BQU1LLEVBQUU7SUFDZixJQUFJQyxnQkFBZ0I5Qiw2REFBV0EsQ0FBQ3dCLE9BQU87SUFDdkMsSUFBSUksT0FBTyxDQUFDQSxNQUFNQyxPQUFPLENBQUNBLE1BQU1uQixTQUFTLENBQUNBLE1BQU07UUFDOUMsT0FBTyxXQUFXLEdBQUV0QiwwREFBbUIsQ0FBQyxRQUFROUMsU0FBUyxDQUFDLEdBQUd3RixlQUFlO1lBQzFFSCxXQUFXNUIsZ0RBQUlBLENBQUMsb0JBQW9CNEI7WUFDcENLLFdBQVcsYUFBYXhCLE1BQU0sQ0FBQ29CLElBQUksTUFBTXBCLE1BQU0sQ0FBQ3FCLElBQUk7WUFDcERJLEdBQUdSO1FBQ0w7SUFDRjtJQUNBLE9BQU87QUFDVCxFQUFFO0FBQ0ZQLFFBQVFGLGNBQWMsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9TeW1ib2xzLmpzPzMyMmYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxudmFyIF9leGNsdWRlZCA9IFtcInR5cGVcIiwgXCJzaXplXCIsIFwic2l6ZVR5cGVcIl07XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgQ3VydmVcbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1cHBlckZpcnN0IGZyb20gJ2xvZGFzaC91cHBlckZpcnN0JztcbmltcG9ydCB7IHN5bWJvbCBhcyBzaGFwZVN5bWJvbCwgc3ltYm9sQ2lyY2xlLCBzeW1ib2xDcm9zcywgc3ltYm9sRGlhbW9uZCwgc3ltYm9sU3F1YXJlLCBzeW1ib2xTdGFyLCBzeW1ib2xUcmlhbmdsZSwgc3ltYm9sV3llIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgc3ltYm9sRmFjdG9yaWVzID0ge1xuICBzeW1ib2xDaXJjbGU6IHN5bWJvbENpcmNsZSxcbiAgc3ltYm9sQ3Jvc3M6IHN5bWJvbENyb3NzLFxuICBzeW1ib2xEaWFtb25kOiBzeW1ib2xEaWFtb25kLFxuICBzeW1ib2xTcXVhcmU6IHN5bWJvbFNxdWFyZSxcbiAgc3ltYm9sU3Rhcjogc3ltYm9sU3RhcixcbiAgc3ltYm9sVHJpYW5nbGU6IHN5bWJvbFRyaWFuZ2xlLFxuICBzeW1ib2xXeWU6IHN5bWJvbFd5ZVxufTtcbnZhciBSQURJQU4gPSBNYXRoLlBJIC8gMTgwO1xudmFyIGdldFN5bWJvbEZhY3RvcnkgPSBmdW5jdGlvbiBnZXRTeW1ib2xGYWN0b3J5KHR5cGUpIHtcbiAgdmFyIG5hbWUgPSBcInN5bWJvbFwiLmNvbmNhdCh1cHBlckZpcnN0KHR5cGUpKTtcbiAgcmV0dXJuIHN5bWJvbEZhY3Rvcmllc1tuYW1lXSB8fCBzeW1ib2xDaXJjbGU7XG59O1xudmFyIGNhbGN1bGF0ZUFyZWFTaXplID0gZnVuY3Rpb24gY2FsY3VsYXRlQXJlYVNpemUoc2l6ZSwgc2l6ZVR5cGUsIHR5cGUpIHtcbiAgaWYgKHNpemVUeXBlID09PSAnYXJlYScpIHtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdjcm9zcyc6XG4gICAgICByZXR1cm4gNSAqIHNpemUgKiBzaXplIC8gOTtcbiAgICBjYXNlICdkaWFtb25kJzpcbiAgICAgIHJldHVybiAwLjUgKiBzaXplICogc2l6ZSAvIE1hdGguc3FydCgzKTtcbiAgICBjYXNlICdzcXVhcmUnOlxuICAgICAgcmV0dXJuIHNpemUgKiBzaXplO1xuICAgIGNhc2UgJ3N0YXInOlxuICAgICAge1xuICAgICAgICB2YXIgYW5nbGUgPSAxOCAqIFJBRElBTjtcbiAgICAgICAgcmV0dXJuIDEuMjUgKiBzaXplICogc2l6ZSAqIChNYXRoLnRhbihhbmdsZSkgLSBNYXRoLnRhbihhbmdsZSAqIDIpICogTWF0aC5wb3coTWF0aC50YW4oYW5nbGUpLCAyKSk7XG4gICAgICB9XG4gICAgY2FzZSAndHJpYW5nbGUnOlxuICAgICAgcmV0dXJuIE1hdGguc3FydCgzKSAqIHNpemUgKiBzaXplIC8gNDtcbiAgICBjYXNlICd3eWUnOlxuICAgICAgcmV0dXJuICgyMSAtIDEwICogTWF0aC5zcXJ0KDMpKSAqIHNpemUgKiBzaXplIC8gODtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIE1hdGguUEkgKiBzaXplICogc2l6ZSAvIDQ7XG4gIH1cbn07XG52YXIgcmVnaXN0ZXJTeW1ib2wgPSBmdW5jdGlvbiByZWdpc3RlclN5bWJvbChrZXksIGZhY3RvcnkpIHtcbiAgc3ltYm9sRmFjdG9yaWVzW1wic3ltYm9sXCIuY29uY2F0KHVwcGVyRmlyc3Qoa2V5KSldID0gZmFjdG9yeTtcbn07XG5leHBvcnQgdmFyIFN5bWJvbHMgPSBmdW5jdGlvbiBTeW1ib2xzKF9yZWYpIHtcbiAgdmFyIF9yZWYkdHlwZSA9IF9yZWYudHlwZSxcbiAgICB0eXBlID0gX3JlZiR0eXBlID09PSB2b2lkIDAgPyAnY2lyY2xlJyA6IF9yZWYkdHlwZSxcbiAgICBfcmVmJHNpemUgPSBfcmVmLnNpemUsXG4gICAgc2l6ZSA9IF9yZWYkc2l6ZSA9PT0gdm9pZCAwID8gNjQgOiBfcmVmJHNpemUsXG4gICAgX3JlZiRzaXplVHlwZSA9IF9yZWYuc2l6ZVR5cGUsXG4gICAgc2l6ZVR5cGUgPSBfcmVmJHNpemVUeXBlID09PSB2b2lkIDAgPyAnYXJlYScgOiBfcmVmJHNpemVUeXBlLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0KSwge30sIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHNpemU6IHNpemUsXG4gICAgc2l6ZVR5cGU6IHNpemVUeXBlXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHBhdGggb2YgY3VydmVcbiAgICogQHJldHVybiB7U3RyaW5nfSBwYXRoXG4gICAqL1xuICB2YXIgZ2V0UGF0aCA9IGZ1bmN0aW9uIGdldFBhdGgoKSB7XG4gICAgdmFyIHN5bWJvbEZhY3RvcnkgPSBnZXRTeW1ib2xGYWN0b3J5KHR5cGUpO1xuICAgIHZhciBzeW1ib2wgPSBzaGFwZVN5bWJvbCgpLnR5cGUoc3ltYm9sRmFjdG9yeSkuc2l6ZShjYWxjdWxhdGVBcmVhU2l6ZShzaXplLCBzaXplVHlwZSwgdHlwZSkpO1xuICAgIHJldHVybiBzeW1ib2woKTtcbiAgfTtcbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICBjeCA9IHByb3BzLmN4LFxuICAgIGN5ID0gcHJvcHMuY3k7XG4gIHZhciBmaWx0ZXJlZFByb3BzID0gZmlsdGVyUHJvcHMocHJvcHMsIHRydWUpO1xuICBpZiAoY3ggPT09ICtjeCAmJiBjeSA9PT0gK2N5ICYmIHNpemUgPT09ICtzaXplKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCBfZXh0ZW5kcyh7fSwgZmlsdGVyZWRQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KCdyZWNoYXJ0cy1zeW1ib2xzJywgY2xhc3NOYW1lKSxcbiAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KGN4LCBcIiwgXCIpLmNvbmNhdChjeSwgXCIpXCIpLFxuICAgICAgZDogZ2V0UGF0aCgpXG4gICAgfSkpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblN5bWJvbHMucmVnaXN0ZXJTeW1ib2wgPSByZWdpc3RlclN5bWJvbDsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2V4Y2x1ZGVkIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5Iiwib3duS2V5cyIsImUiLCJyIiwidCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwiUmVhY3QiLCJ1cHBlckZpcnN0Iiwic3ltYm9sIiwic2hhcGVTeW1ib2wiLCJzeW1ib2xDaXJjbGUiLCJzeW1ib2xDcm9zcyIsInN5bWJvbERpYW1vbmQiLCJzeW1ib2xTcXVhcmUiLCJzeW1ib2xTdGFyIiwic3ltYm9sVHJpYW5nbGUiLCJzeW1ib2xXeWUiLCJjbHN4IiwiZmlsdGVyUHJvcHMiLCJzeW1ib2xGYWN0b3JpZXMiLCJSQURJQU4iLCJNYXRoIiwiUEkiLCJnZXRTeW1ib2xGYWN0b3J5IiwidHlwZSIsIm5hbWUiLCJjb25jYXQiLCJjYWxjdWxhdGVBcmVhU2l6ZSIsInNpemUiLCJzaXplVHlwZSIsInNxcnQiLCJhbmdsZSIsInRhbiIsInBvdyIsInJlZ2lzdGVyU3ltYm9sIiwiZmFjdG9yeSIsIlN5bWJvbHMiLCJfcmVmIiwiX3JlZiR0eXBlIiwiX3JlZiRzaXplIiwiX3JlZiRzaXplVHlwZSIsInJlc3QiLCJwcm9wcyIsImdldFBhdGgiLCJzeW1ib2xGYWN0b3J5IiwiY2xhc3NOYW1lIiwiY3giLCJjeSIsImZpbHRlcmVkUHJvcHMiLCJjcmVhdGVFbGVtZW50IiwidHJhbnNmb3JtIiwiZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Symbols.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/shape/Trapezoid.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Trapezoid: () => (/* binding */ Trapezoid)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var react_smooth__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-smooth */ \"(ssr)/./node_modules/react-smooth/es6/index.js\");\n/* harmony import */ var _util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n/**\n * @fileOverview Rectangle\n */ \n\n\n\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n var widthGap = upperWidth - lowerWidth;\n var path;\n path = \"M \".concat(x, \",\").concat(y);\n path += \"L \".concat(x + upperWidth, \",\").concat(y);\n path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n path += \"L \".concat(x, \",\").concat(y, \" Z\");\n return path;\n};\nvar defaultProps = {\n x: 0,\n y: 0,\n upperWidth: 0,\n lowerWidth: 0,\n height: 0,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: \"ease\"\n};\nvar Trapezoid = function Trapezoid(props) {\n var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var pathRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(-1), _useState2 = _slicedToArray(_useState, 2), totalLength = _useState2[0], setTotalLength = _useState2[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (pathRef.current && pathRef.current.getTotalLength) {\n try {\n var pathTotalLength = pathRef.current.getTotalLength();\n if (pathTotalLength) {\n setTotalLength(pathTotalLength);\n }\n } catch (err) {\n // calculate total length error\n }\n }\n }, []);\n var x = trapezoidProps.x, y = trapezoidProps.y, upperWidth = trapezoidProps.upperWidth, lowerWidth = trapezoidProps.lowerWidth, height = trapezoidProps.height, className = trapezoidProps.className;\n var animationEasing = trapezoidProps.animationEasing, animationDuration = trapezoidProps.animationDuration, animationBegin = trapezoidProps.animationBegin, isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n return null;\n }\n var layerClass = (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"recharts-trapezoid\", className);\n if (!isUpdateAnimationActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"g\", null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n })));\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: {\n upperWidth: 0,\n lowerWidth: 0,\n height: height,\n x: x,\n y: y\n },\n to: {\n upperWidth: upperWidth,\n lowerWidth: lowerWidth,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function(_ref) {\n var currUpperWidth = _ref.upperWidth, currLowerWidth = _ref.lowerWidth, currHeight = _ref.height, currX = _ref.x, currY = _ref.y;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_smooth__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n easing: animationEasing\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", _extends({}, (0,_util_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.filterProps)(trapezoidProps, true), {\n className: layerClass,\n d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n ref: pathRef\n })));\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3NoYXBlL1RyYXBlem9pZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLGVBQWVDLEdBQUcsRUFBRVQsQ0FBQztJQUFJLE9BQU9VLGdCQUFnQkQsUUFBUUUsc0JBQXNCRixLQUFLVCxNQUFNWSw0QkFBNEJILEtBQUtULE1BQU1hO0FBQW9CO0FBQzdKLFNBQVNBO0lBQXFCLE1BQU0sSUFBSUMsVUFBVTtBQUE4STtBQUNoTSxTQUFTRiw0QkFBNEJ0QixDQUFDLEVBQUV5QixNQUFN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LGlCQUFpQnNDLE9BQU9DLE9BQU9KLGdCQUFnQkMsZ0JBQWdCQztZQUNsRU0sS0FBSzFCO1FBQ1A7SUFDRjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi9zaGFwZS9UcmFwZXpvaWQuanM/OTEyNiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG4vKipcbiAqIEBmaWxlT3ZlcnZpZXcgUmVjdGFuZ2xlXG4gKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBBbmltYXRlIGZyb20gJ3JlYWN0LXNtb290aCc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcyB9IGZyb20gJy4uL3V0aWwvUmVhY3RVdGlscyc7XG52YXIgZ2V0VHJhcGV6b2lkUGF0aCA9IGZ1bmN0aW9uIGdldFRyYXBlem9pZFBhdGgoeCwgeSwgdXBwZXJXaWR0aCwgbG93ZXJXaWR0aCwgaGVpZ2h0KSB7XG4gIHZhciB3aWR0aEdhcCA9IHVwcGVyV2lkdGggLSBsb3dlcldpZHRoO1xuICB2YXIgcGF0aDtcbiAgcGF0aCA9IFwiTSBcIi5jb25jYXQoeCwgXCIsXCIpLmNvbmNhdCh5KTtcbiAgcGF0aCArPSBcIkwgXCIuY29uY2F0KHggKyB1cHBlcldpZHRoLCBcIixcIikuY29uY2F0KHkpO1xuICBwYXRoICs9IFwiTCBcIi5jb25jYXQoeCArIHVwcGVyV2lkdGggLSB3aWR0aEdhcCAvIDIsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCk7XG4gIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4ICsgdXBwZXJXaWR0aCAtIHdpZHRoR2FwIC8gMiAtIGxvd2VyV2lkdGgsIFwiLFwiKS5jb25jYXQoeSArIGhlaWdodCk7XG4gIHBhdGggKz0gXCJMIFwiLmNvbmNhdCh4LCBcIixcIikuY29uY2F0KHksIFwiIFpcIik7XG4gIHJldHVybiBwYXRoO1xufTtcbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIHg6IDAsXG4gIHk6IDAsXG4gIHVwcGVyV2lkdGg6IDAsXG4gIGxvd2VyV2lkdGg6IDAsXG4gIGhlaWdodDogMCxcbiAgaXNVcGRhdGVBbmltYXRpb25BY3RpdmU6IGZhbHNlLFxuICBhbmltYXRpb25CZWdpbjogMCxcbiAgYW5pbWF0aW9uRHVyYXRpb246IDE1MDAsXG4gIGFuaW1hdGlvbkVhc2luZzogJ2Vhc2UnXG59O1xuZXhwb3J0IHZhciBUcmFwZXpvaWQgPSBmdW5jdGlvbiBUcmFwZXpvaWQocHJvcHMpIHtcbiAgdmFyIHRyYXBlem9pZFByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBkZWZhdWx0UHJvcHMpLCBwcm9wcyk7XG4gIHZhciBwYXRoUmVmID0gdXNlUmVmKCk7XG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSgtMSksXG4gICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgdG90YWxMZW5ndGggPSBfdXNlU3RhdGUyWzBdLFxuICAgIHNldFRvdGFsTGVuZ3RoID0gX3VzZVN0YXRlMlsxXTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocGF0aFJlZi5jdXJyZW50ICYmIHBhdGhSZWYuY3VycmVudC5nZXRUb3RhbExlbmd0aCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHBhdGhUb3RhbExlbmd0aCA9IHBhdGhSZWYuY3VycmVudC5nZXRUb3RhbExlbmd0aCgpO1xuICAgICAgICBpZiAocGF0aFRvdGFsTGVuZ3RoKSB7XG4gICAgICAgICAgc2V0VG90YWxMZW5ndGgocGF0aFRvdGFsTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0b3RhbCBsZW5ndGggZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKTtcbiAgdmFyIHggPSB0cmFwZXpvaWRQcm9wcy54LFxuICAgIHkgPSB0cmFwZXpvaWRQcm9wcy55LFxuICAgIHVwcGVyV2lkdGggPSB0cmFwZXpvaWRQcm9wcy51cHBlcldpZHRoLFxuICAgIGxvd2VyV2lkdGggPSB0cmFwZXpvaWRQcm9wcy5sb3dlcldpZHRoLFxuICAgIGhlaWdodCA9IHRyYXBlem9pZFByb3BzLmhlaWdodCxcbiAgICBjbGFzc05hbWUgPSB0cmFwZXpvaWRQcm9wcy5jbGFzc05hbWU7XG4gIHZhciBhbmltYXRpb25FYXNpbmcgPSB0cmFwZXpvaWRQcm9wcy5hbmltYXRpb25FYXNpbmcsXG4gICAgYW5pbWF0aW9uRHVyYXRpb24gPSB0cmFwZXpvaWRQcm9wcy5hbmltYXRpb25EdXJhdGlvbixcbiAgICBhbmltYXRpb25CZWdpbiA9IHRyYXBlem9pZFByb3BzLmFuaW1hdGlvbkJlZ2luLFxuICAgIGlzVXBkYXRlQW5pbWF0aW9uQWN0aXZlID0gdHJhcGV6b2lkUHJvcHMuaXNVcGRhdGVBbmltYXRpb25BY3RpdmU7XG4gIGlmICh4ICE9PSAreCB8fCB5ICE9PSAreSB8fCB1cHBlcldpZHRoICE9PSArdXBwZXJXaWR0aCB8fCBsb3dlcldpZHRoICE9PSArbG93ZXJXaWR0aCB8fCBoZWlnaHQgIT09ICtoZWlnaHQgfHwgdXBwZXJXaWR0aCA9PT0gMCAmJiBsb3dlcldpZHRoID09PSAwIHx8IGhlaWdodCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBsYXllckNsYXNzID0gY2xzeCgncmVjaGFydHMtdHJhcGV6b2lkJywgY2xhc3NOYW1lKTtcbiAgaWYgKCFpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcImdcIiwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0cmFwZXpvaWRQcm9wcywgdHJ1ZSksIHtcbiAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICAgIGQ6IGdldFRyYXBlem9pZFBhdGgoeCwgeSwgdXBwZXJXaWR0aCwgbG93ZXJXaWR0aCwgaGVpZ2h0KVxuICAgIH0pKSk7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGUsIHtcbiAgICBjYW5CZWdpbjogdG90YWxMZW5ndGggPiAwLFxuICAgIGZyb206IHtcbiAgICAgIHVwcGVyV2lkdGg6IDAsXG4gICAgICBsb3dlcldpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sXG4gICAgdG86IHtcbiAgICAgIHVwcGVyV2lkdGg6IHVwcGVyV2lkdGgsXG4gICAgICBsb3dlcldpZHRoOiBsb3dlcldpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sXG4gICAgZHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9uLFxuICAgIGFuaW1hdGlvbkVhc2luZzogYW5pbWF0aW9uRWFzaW5nLFxuICAgIGlzQWN0aXZlOiBpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZVxuICB9LCBmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBjdXJyVXBwZXJXaWR0aCA9IF9yZWYudXBwZXJXaWR0aCxcbiAgICAgIGN1cnJMb3dlcldpZHRoID0gX3JlZi5sb3dlcldpZHRoLFxuICAgICAgY3VyckhlaWdodCA9IF9yZWYuaGVpZ2h0LFxuICAgICAgY3VyclggPSBfcmVmLngsXG4gICAgICBjdXJyWSA9IF9yZWYueTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQW5pbWF0ZSwge1xuICAgICAgY2FuQmVnaW46IHRvdGFsTGVuZ3RoID4gMCxcbiAgICAgIGZyb206IFwiMHB4IFwiLmNvbmNhdCh0b3RhbExlbmd0aCA9PT0gLTEgPyAxIDogdG90YWxMZW5ndGgsIFwicHhcIiksXG4gICAgICB0bzogXCJcIi5jb25jYXQodG90YWxMZW5ndGgsIFwicHggMHB4XCIpLFxuICAgICAgYXR0cmlidXRlTmFtZTogXCJzdHJva2VEYXNoYXJyYXlcIixcbiAgICAgIGJlZ2luOiBhbmltYXRpb25CZWdpbixcbiAgICAgIGR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbixcbiAgICAgIGVhc2luZzogYW5pbWF0aW9uRWFzaW5nXG4gICAgfSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIF9leHRlbmRzKHt9LCBmaWx0ZXJQcm9wcyh0cmFwZXpvaWRQcm9wcywgdHJ1ZSksIHtcbiAgICAgIGNsYXNzTmFtZTogbGF5ZXJDbGFzcyxcbiAgICAgIGQ6IGdldFRyYXBlem9pZFBhdGgoY3VyclgsIGN1cnJZLCBjdXJyVXBwZXJXaWR0aCwgY3Vyckxvd2VyV2lkdGgsIGN1cnJIZWlnaHQpLFxuICAgICAgcmVmOiBwYXRoUmVmXG4gICAgfSkpKTtcbiAgfSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiciIsImwiLCJ0IiwiZSIsInUiLCJhIiwiZiIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiaXNBcnJheSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsIl9vYmplY3RTcHJlYWQiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJjbHN4IiwiQW5pbWF0ZSIsImZpbHRlclByb3BzIiwiZ2V0VHJhcGV6b2lkUGF0aCIsIngiLCJ5IiwidXBwZXJXaWR0aCIsImxvd2VyV2lkdGgiLCJoZWlnaHQiLCJ3aWR0aEdhcCIsInBhdGgiLCJjb25jYXQiLCJkZWZhdWx0UHJvcHMiLCJpc1VwZGF0ZUFuaW1hdGlvbkFjdGl2ZSIsImFuaW1hdGlvbkJlZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25FYXNpbmciLCJUcmFwZXpvaWQiLCJwcm9wcyIsInRyYXBlem9pZFByb3BzIiwicGF0aFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJ0b3RhbExlbmd0aCIsInNldFRvdGFsTGVuZ3RoIiwiY3VycmVudCIsImdldFRvdGFsTGVuZ3RoIiwicGF0aFRvdGFsTGVuZ3RoIiwiZXJyIiwiY2xhc3NOYW1lIiwibGF5ZXJDbGFzcyIsImNyZWF0ZUVsZW1lbnQiLCJkIiwiY2FuQmVnaW4iLCJ0byIsImR1cmF0aW9uIiwiaXNBY3RpdmUiLCJfcmVmIiwiY3VyclVwcGVyV2lkdGgiLCJjdXJyTG93ZXJXaWR0aCIsImN1cnJIZWlnaHQiLCJjdXJyWCIsImN1cnJZIiwiYXR0cmlidXRlTmFtZSIsImJlZ2luIiwiZWFzaW5nIiwicmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js":
/*!************************************************************!*\
!*** ./node_modules/recharts/es6/util/ActiveShapeUtils.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Shape: () => (/* binding */ Shape),\n/* harmony export */ compareFunnel: () => (/* binding */ compareFunnel),\n/* harmony export */ comparePie: () => (/* binding */ comparePie),\n/* harmony export */ compareScatter: () => (/* binding */ compareScatter),\n/* harmony export */ getActiveShapeIndexForTooltip: () => (/* binding */ getActiveShapeIndexForTooltip),\n/* harmony export */ getPropsFromShapeOption: () => (/* binding */ getPropsFromShapeOption),\n/* harmony export */ isFunnel: () => (/* binding */ isFunnel),\n/* harmony export */ isPie: () => (/* binding */ isPie),\n/* harmony export */ isScatter: () => (/* binding */ isScatter)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isPlainObject */ \"(ssr)/./node_modules/lodash/isPlainObject.js\");\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isBoolean */ \"(ssr)/./node_modules/lodash/isBoolean.js\");\n/* harmony import */ var lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shape/Rectangle */ \"(ssr)/./node_modules/recharts/es6/shape/Rectangle.js\");\n/* harmony import */ var _shape_Trapezoid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shape/Trapezoid */ \"(ssr)/./node_modules/recharts/es6/shape/Trapezoid.js\");\n/* harmony import */ var _shape_Sector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../shape/Sector */ \"(ssr)/./node_modules/recharts/es6/shape/Sector.js\");\n/* harmony import */ var _container_Layer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../container/Layer */ \"(ssr)/./node_modules/recharts/es6/container/Layer.js\");\n/* harmony import */ var _shape_Symbols__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../shape/Symbols */ \"(ssr)/./node_modules/recharts/es6/shape/Symbols.js\");\nvar _excluded = [\n \"option\",\n \"shapeType\",\n \"propTransformer\",\n \"activeClassName\",\n \"isActive\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n\n\n\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * <Shape /> is the root and will handle taking in:\n * - an object of svg properties\n * - a boolean\n * - a render prop(inline function that returns jsx)\n * - a react element\n *\n * <ShapeSelector /> is a subcomponent of <Shape /> and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */ function defaultPropTransformer(option, props) {\n return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n return shapeType === \"symbols\";\n}\nfunction ShapeSelector(_ref) {\n var shapeType = _ref.shapeType, elementProps = _ref.elementProps;\n switch(shapeType){\n case \"rectangle\":\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Rectangle__WEBPACK_IMPORTED_MODULE_5__.Rectangle, elementProps);\n case \"trapezoid\":\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Trapezoid__WEBPACK_IMPORTED_MODULE_6__.Trapezoid, elementProps);\n case \"sector\":\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Sector__WEBPACK_IMPORTED_MODULE_7__.Sector, elementProps);\n case \"symbols\":\n if (isSymbolsProps(shapeType, elementProps)) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_shape_Symbols__WEBPACK_IMPORTED_MODULE_8__.Symbols, elementProps);\n }\n break;\n default:\n return null;\n }\n}\nfunction getPropsFromShapeOption(option) {\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n return option.props;\n }\n return option;\n}\nfunction Shape(_ref2) {\n var option = _ref2.option, shapeType = _ref2.shapeType, _ref2$propTransformer = _ref2.propTransformer, propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer, _ref2$activeClassName = _ref2.activeClassName, activeClassName = _ref2$activeClassName === void 0 ? \"recharts-active-shape\" : _ref2$activeClassName, isActive = _ref2.isActive, props = _objectWithoutProperties(_ref2, _excluded);\n var shape;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(option)) {\n shape = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n shape = option(props);\n } else if (lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_2___default()(option) && !lodash_isBoolean__WEBPACK_IMPORTED_MODULE_3___default()(option)) {\n var nextProps = propTransformer(option, props);\n shape = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: nextProps\n });\n } else {\n var elementProps = props;\n shape = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ShapeSelector, {\n shapeType: shapeType,\n elementProps: elementProps\n });\n }\n if (isActive) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_container_Layer__WEBPACK_IMPORTED_MODULE_9__.Layer, {\n className: activeClassName\n }, shape);\n }\n return shape;\n}\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */ function isFunnel(graphicalItem, _item) {\n return _item != null && \"trapezoids\" in graphicalItem.props;\n}\nfunction isPie(graphicalItem, _item) {\n return _item != null && \"sectors\" in graphicalItem.props;\n}\nfunction isScatter(graphicalItem, _item) {\n return _item != null && \"points\" in graphicalItem.props;\n}\nfunction compareFunnel(shapeData, activeTooltipItem) {\n var _activeTooltipItem$la, _activeTooltipItem$la2;\n var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n return xMatches && yMatches;\n}\nfunction comparePie(shapeData, activeTooltipItem) {\n var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n return startAngleMatches && endAngleMatches;\n}\nfunction compareScatter(shapeData, activeTooltipItem) {\n var xMatches = shapeData.x === activeTooltipItem.x;\n var yMatches = shapeData.y === activeTooltipItem.y;\n var zMatches = shapeData.z === activeTooltipItem.z;\n return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n var comparison;\n if (isFunnel(graphicalItem, activeItem)) {\n comparison = compareFunnel;\n } else if (isPie(graphicalItem, activeItem)) {\n comparison = comparePie;\n } else if (isScatter(graphicalItem, activeItem)) {\n comparison = compareScatter;\n }\n return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n var shapeKey;\n if (isFunnel(graphicalItem, activeItem)) {\n shapeKey = \"trapezoids\";\n } else if (isPie(graphicalItem, activeItem)) {\n shapeKey = \"sectors\";\n } else if (isScatter(graphicalItem, activeItem)) {\n shapeKey = \"points\";\n }\n return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n if (isFunnel(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa;\n return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n }\n if (isPie(graphicalItem, activeItem)) {\n var _activeItem$tooltipPa2;\n return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n }\n if (isScatter(graphicalItem, activeItem)) {\n return activeItem.payload;\n }\n return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */ function getActiveShapeIndexForTooltip(_ref3) {\n var activeTooltipItem = _ref3.activeTooltipItem, graphicalItem = _ref3.graphicalItem, itemData = _ref3.itemData;\n var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n var activeItemMatches = itemData.filter(function(datum, dataIndex) {\n var valuesMatch = lodash_isEqual__WEBPACK_IMPORTED_MODULE_4___default()(tooltipPayload, datum);\n var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function(shapeData) {\n var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n return comparison(shapeData, activeTooltipItem);\n });\n // get the last index in case of multiple matches\n var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n return valuesMatch && coordinatesMatch;\n });\n // get the last index in case of multiple matches\n var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n return activeIndex;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQWN0aXZlU2hhcGVVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxZQUFZO0lBQUM7SUFBVTtJQUFhO0lBQW1CO0lBQW1CO0NBQVc7QUFDekYsU0FBU0MsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLHlCQUF5QkMsTUFBTSxFQUFFQyxRQUFRO0lBQUksSUFBSUQsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlFLFNBQVNDLDhCQUE4QkgsUUFBUUM7SUFBVyxJQUFJRyxLQUFLQztJQUFHLElBQUlDLE9BQU9DLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CRixPQUFPQyxxQkFBcUIsQ0FBQ1A7UUFBUyxJQUFLSyxJQUFJLEdBQUdBLElBQUlHLGlCQUFpQkMsTUFBTSxFQUFFSixJQUFLO1lBQUVELE1BQU1JLGdCQUFnQixDQUFDSCxFQUFFO1lBQUUsSUFBSUosU0FBU1MsT0FBTyxDQUFDTixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNFLE9BQU9SLFNBQVMsQ0FBQ2Esb0JBQW9CLENBQUNDLElBQUksQ0FBQ1osUUFBUUksTUFBTTtZQUFVRixNQUFNLENBQUNFLElBQUksR0FBR0osTUFBTSxDQUFDSSxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9GO0FBQVE7QUFDM2UsU0FBU0MsOEJBQThCSCxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJ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SUFDakQsSUFBSTNCLG9CQUFvQjJCLE1BQU0zQixpQkFBaUIsRUFDN0NOLGdCQUFnQmlDLE1BQU1qQyxhQUFhLEVBQ25Da0MsV0FBV0QsTUFBTUMsUUFBUTtJQUMzQixJQUFJUixXQUFXRCxnQkFBZ0J6QixlQUFlTTtJQUM5QyxJQUFJdUIsaUJBQWlCRiw2QkFBNkIzQixlQUFlTTtJQUNqRSxJQUFJNkIsb0JBQW9CRCxTQUFTMUYsTUFBTSxDQUFDLFNBQVU0RixLQUFLLEVBQUVDLFNBQVM7UUFDaEUsSUFBSUMsY0FBY2xFLHFEQUFPQSxDQUFDeUQsZ0JBQWdCTztRQUMxQyxJQUFJRyx5QkFBeUJ2QyxjQUFjcEIsS0FBSyxDQUFDOEMsU0FBUyxDQUFDbEYsTUFBTSxDQUFDLFNBQVU2RCxTQUFTO1lBQ25GLElBQUltQixhQUFhRixnQkFBZ0J0QixlQUFlTTtZQUNoRCxPQUFPa0IsV0FBV25CLFdBQVdDO1FBQy9CO1FBRUEsaURBQWlEO1FBQ2pELElBQUlrQywwQkFBMEJ4QyxjQUFjcEIsS0FBSyxDQUFDOEMsU0FBUyxDQUFDM0YsT0FBTyxDQUFDd0csc0JBQXNCLENBQUNBLHVCQUF1QnpHLE1BQU0sR0FBRyxFQUFFO1FBQzdILElBQUkyRyxtQkFBbUJKLGNBQWNHO1FBQ3JDLE9BQU9GLGVBQWVHO0lBQ3hCO0lBRUEsaURBQWlEO0lBQ2pELElBQUlDLGNBQWNSLFNBQVNuRyxPQUFPLENBQUNvRyxpQkFBaUIsQ0FBQ0Esa0JBQWtCckcsTUFBTSxHQUFHLEVBQUU7SUFDbEYsT0FBTzRHO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0FjdGl2ZVNoYXBlVXRpbHMuanM/YTNmNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wib3B0aW9uXCIsIFwic2hhcGVUeXBlXCIsIFwicHJvcFRyYW5zZm9ybWVyXCIsIFwiYWN0aXZlQ2xhc3NOYW1lXCIsIFwiaXNBY3RpdmVcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuaW1wb3J0IFJlYWN0LCB7IGlzVmFsaWRFbGVtZW50LCBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICdsb2Rhc2gvaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgaXNCb29sZWFuIGZyb20gJ2xvZGFzaC9pc0Jvb2xlYW4nO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vc2hhcGUvUmVjdGFuZ2xlJztcbmltcG9ydCB7IFRyYXBlem9pZCB9IGZyb20gJy4uL3NoYXBlL1RyYXBlem9pZCc7XG5pbXBvcnQgeyBTZWN0b3IgfSBmcm9tICcuLi9zaGFwZS9TZWN0b3InO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9jb250YWluZXIvTGF5ZXInO1xuaW1wb3J0IHsgU3ltYm9scyB9IGZyb20gJy4uL3NoYXBlL1N5bWJvbHMnO1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gYWJzdHJhY3Rpb24gZm9yIHJlbmRlcmluZyBhIHVzZXIgZGVmaW5lZCBwcm9wIGZvciBhIGN1c3RvbWl6ZWQgc2hhcGUgaW4gc2V2ZXJhbCBmb3Jtcy5cbiAqXG4gKiA8U2hhcGUgLz4gaXMgdGhlIHJvb3QgYW5kIHdpbGwgaGFuZGxlIHRha2luZyBpbjpcbiAqICAtIGFuIG9iamVjdCBvZiBzdmcgcHJvcGVydGllc1xuICogIC0gYSBib29sZWFuXG4gKiAgLSBhIHJlbmRlciBwcm9wKGlubGluZSBmdW5jdGlvbiB0aGF0IHJldHVybnMganN4KVxuICogIC0gYSByZWFjdCBlbGVtZW50XG4gKlxuICogPFNoYXBlU2VsZWN0b3IgLz4gaXMgYSBzdWJjb21wb25lbnQgb2YgPFNoYXBlIC8+IGFuZCB1c2VkIHRvIG1hdGNoIGEgY29tcG9uZW50XG4gKiB0byB0aGUgdmFsdWUgb2YgcHJvcHMuc2hhcGVUeXBlIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSByb290LlxuICpcbiAqL1xuXG5mdW5jdGlvbiBkZWZhdWx0UHJvcFRyYW5zZm9ybWVyKG9wdGlvbiwgcHJvcHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCBvcHRpb24pO1xufVxuZnVuY3Rpb24gaXNTeW1ib2xzUHJvcHMoc2hhcGVUeXBlLCBfZWxlbWVudFByb3BzKSB7XG4gIHJldHVybiBzaGFwZVR5cGUgPT09ICdzeW1ib2xzJztcbn1cbmZ1bmN0aW9uIFNoYXBlU2VsZWN0b3IoX3JlZikge1xuICB2YXIgc2hhcGVUeXBlID0gX3JlZi5zaGFwZVR5cGUsXG4gICAgZWxlbWVudFByb3BzID0gX3JlZi5lbGVtZW50UHJvcHM7XG4gIHN3aXRjaCAoc2hhcGVUeXBlKSB7XG4gICAgY2FzZSAncmVjdGFuZ2xlJzpcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWN0YW5nbGUsIGVsZW1lbnRQcm9wcyk7XG4gICAgY2FzZSAndHJhcGV6b2lkJzpcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUcmFwZXpvaWQsIGVsZW1lbnRQcm9wcyk7XG4gICAgY2FzZSAnc2VjdG9yJzpcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTZWN0b3IsIGVsZW1lbnRQcm9wcyk7XG4gICAgY2FzZSAnc3ltYm9scyc6XG4gICAgICBpZiAoaXNTeW1ib2xzUHJvcHMoc2hhcGVUeXBlLCBlbGVtZW50UHJvcHMpKSB7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTeW1ib2xzLCBlbGVtZW50UHJvcHMpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcHNGcm9tU2hhcGVPcHRpb24ob3B0aW9uKSB7XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICByZXR1cm4gb3B0aW9uLnByb3BzO1xuICB9XG4gIHJldHVybiBvcHRpb247XG59XG5leHBvcnQgZnVuY3Rpb24gU2hhcGUoX3JlZjIpIHtcbiAgdmFyIG9wdGlvbiA9IF9yZWYyLm9wdGlvbixcbiAgICBzaGFwZVR5cGUgPSBfcmVmMi5zaGFwZVR5cGUsXG4gICAgX3JlZjIkcHJvcFRyYW5zZm9ybWVyID0gX3JlZjIucHJvcFRyYW5zZm9ybWVyLFxuICAgIHByb3BUcmFuc2Zvcm1lciA9IF9yZWYyJHByb3BUcmFuc2Zvcm1lciA9PT0gdm9pZCAwID8gZGVmYXVsdFByb3BUcmFuc2Zvcm1lciA6IF9yZWYyJHByb3BUcmFuc2Zvcm1lcixcbiAgICBfcmVmMiRhY3RpdmVDbGFzc05hbWUgPSBfcmVmMi5hY3RpdmVDbGFzc05hbWUsXG4gICAgYWN0aXZlQ2xhc3NOYW1lID0gX3JlZjIkYWN0aXZlQ2xhc3NOYW1lID09PSB2b2lkIDAgPyAncmVjaGFydHMtYWN0aXZlLXNoYXBlJyA6IF9yZWYyJGFjdGl2ZUNsYXNzTmFtZSxcbiAgICBpc0FjdGl2ZSA9IF9yZWYyLmlzQWN0aXZlLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBfZXhjbHVkZWQpO1xuICB2YXIgc2hhcGU7XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KG9wdGlvbikpIHtcbiAgICBzaGFwZSA9IC8qI19fUFVSRV9fKi9jbG9uZUVsZW1lbnQob3B0aW9uLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwgZ2V0UHJvcHNGcm9tU2hhcGVPcHRpb24ob3B0aW9uKSkpO1xuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24ob3B0aW9uKSkge1xuICAgIHNoYXBlID0gb3B0aW9uKHByb3BzKTtcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KG9wdGlvbikgJiYgIWlzQm9vbGVhbihvcHRpb24pKSB7XG4gICAgdmFyIG5leHRQcm9wcyA9IHByb3BUcmFuc2Zvcm1lcihvcHRpb24sIHByb3BzKTtcbiAgICBzaGFwZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFNoYXBlU2VsZWN0b3IsIHtcbiAgICAgIHNoYXBlVHlwZTogc2hhcGVUeXBlLFxuICAgICAgZWxlbWVudFByb3BzOiBuZXh0UHJvcHNcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZWxlbWVudFByb3BzID0gcHJvcHM7XG4gICAgc2hhcGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTaGFwZVNlbGVjdG9yLCB7XG4gICAgICBzaGFwZVR5cGU6IHNoYXBlVHlwZSxcbiAgICAgIGVsZW1lbnRQcm9wczogZWxlbWVudFByb3BzXG4gICAgfSk7XG4gIH1cbiAgaWYgKGlzQWN0aXZlKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCB7XG4gICAgICBjbGFzc05hbWU6IGFjdGl2ZUNsYXNzTmFtZVxuICAgIH0sIHNoYXBlKTtcbiAgfVxuICByZXR1cm4gc2hhcGU7XG59XG5cbi8qKlxuICogVGhpcyBpcyBhbiBhYnN0cmFjdGlvbiB0byBoYW5kbGUgaWRlbnRpZnlpbmcgdGhlIGFjdGl2ZSBpbmRleCBmcm9tIGEgdG9vbHRpcCBtb3VzZSBpbnRlcmFjdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bm5lbChncmFwaGljYWxJdGVtLCBfaXRlbSkge1xuICByZXR1cm4gX2l0ZW0gIT0gbnVsbCAmJiAndHJhcGV6b2lkcycgaW4gZ3JhcGhpY2FsSXRlbS5wcm9wcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1BpZShncmFwaGljYWxJdGVtLCBfaXRlbSkge1xuICByZXR1cm4gX2l0ZW0gIT0gbnVsbCAmJiAnc2VjdG9ycycgaW4gZ3JhcGhpY2FsSXRlbS5wcm9wcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NjYXR0ZXIoZ3JhcGhpY2FsSXRlbSwgX2l0ZW0pIHtcbiAgcmV0dXJuIF9pdGVtICE9IG51bGwgJiYgJ3BvaW50cycgaW4gZ3JhcGhpY2FsSXRlbS5wcm9wcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlRnVubmVsKHNoYXBlRGF0YSwgYWN0aXZlVG9vbHRpcEl0ZW0pIHtcbiAgdmFyIF9hY3RpdmVUb29sdGlwSXRlbSRsYSwgX2FjdGl2ZVRvb2x0aXBJdGVtJGxhMjtcbiAgdmFyIHhNYXRjaGVzID0gc2hhcGVEYXRhLnggPT09IChhY3RpdmVUb29sdGlwSXRlbSA9PT0gbnVsbCB8fCBhY3RpdmVUb29sdGlwSXRlbSA9PT0gdm9pZCAwIHx8IChfYWN0aXZlVG9vbHRpcEl0ZW0kbGEgPSBhY3RpdmVUb29sdGlwSXRlbS5sYWJlbFZpZXdCb3gpID09PSBudWxsIHx8IF9hY3RpdmVUb29sdGlwSXRlbSRsYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FjdGl2ZVRvb2x0aXBJdGVtJGxhLngpIHx8IHNoYXBlRGF0YS54ID09PSBhY3RpdmVUb29sdGlwSXRlbS54O1xuICB2YXIgeU1hdGNoZXMgPSBzaGFwZURhdGEueSA9PT0gKGFjdGl2ZVRvb2x0aXBJdGVtID09PSBudWxsIHx8IGFjdGl2ZVRvb2x0aXBJdGVtID09PSB2b2lkIDAgfHwgKF9hY3RpdmVUb29sdGlwSXRlbSRsYTIgPSBhY3RpdmVUb29sdGlwSXRlbS5sYWJlbFZpZXdCb3gpID09PSBudWxsIHx8IF9hY3RpdmVUb29sdGlwSXRlbSRsYTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hY3RpdmVUb29sdGlwSXRlbSRsYTIueSkgfHwgc2hhcGVEYXRhLnkgPT09IGFjdGl2ZVRvb2x0aXBJdGVtLnk7XG4gIHJldHVybiB4TWF0Y2hlcyAmJiB5TWF0Y2hlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlUGllKHNoYXBlRGF0YSwgYWN0aXZlVG9vbHRpcEl0ZW0pIHtcbiAgdmFyIHN0YXJ0QW5nbGVNYXRjaGVzID0gc2hhcGVEYXRhLmVuZEFuZ2xlID09PSBhY3RpdmVUb29sdGlwSXRlbS5lbmRBbmdsZTtcbiAgdmFyIGVuZEFuZ2xlTWF0Y2hlcyA9IHNoYXBlRGF0YS5zdGFydEFuZ2xlID09PSBhY3RpdmVUb29sdGlwSXRlbS5zdGFydEFuZ2xlO1xuICByZXR1cm4gc3RhcnRBbmdsZU1hdGNoZXMgJiYgZW5kQW5nbGVNYXRjaGVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVTY2F0dGVyKHNoYXBlRGF0YSwgYWN0aXZlVG9vbHRpcEl0ZW0pIHtcbiAgdmFyIHhNYXRjaGVzID0gc2hhcGVEYXRhLnggPT09IGFjdGl2ZVRvb2x0aXBJdGVtLng7XG4gIHZhciB5TWF0Y2hlcyA9IHNoYXBlRGF0YS55ID09PSBhY3RpdmVUb29sdGlwSXRlbS55O1xuICB2YXIgek1hdGNoZXMgPSBzaGFwZURhdGEueiA9PT0gYWN0aXZlVG9vbHRpcEl0ZW0uejtcbiAgcmV0dXJuIHhNYXRjaGVzICYmIHlNYXRjaGVzICYmIHpNYXRjaGVzO1xufVxuZnVuY3Rpb24gZ2V0Q29tcGFyaXNvbkZuKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pIHtcbiAgdmFyIGNvbXBhcmlzb247XG4gIGlmIChpc0Z1bm5lbChncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIGNvbXBhcmlzb24gPSBjb21wYXJlRnVubmVsO1xuICB9IGVsc2UgaWYgKGlzUGllKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgY29tcGFyaXNvbiA9IGNvbXBhcmVQaWU7XG4gIH0gZWxzZSBpZiAoaXNTY2F0dGVyKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgY29tcGFyaXNvbiA9IGNvbXBhcmVTY2F0dGVyO1xuICB9XG4gIHJldHVybiBjb21wYXJpc29uO1xufVxuZnVuY3Rpb24gZ2V0U2hhcGVEYXRhS2V5KGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pIHtcbiAgdmFyIHNoYXBlS2V5O1xuICBpZiAoaXNGdW5uZWwoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlSXRlbSkpIHtcbiAgICBzaGFwZUtleSA9ICd0cmFwZXpvaWRzJztcbiAgfSBlbHNlIGlmIChpc1BpZShncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHNoYXBlS2V5ID0gJ3NlY3RvcnMnO1xuICB9IGVsc2UgaWYgKGlzU2NhdHRlcihncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHNoYXBlS2V5ID0gJ3BvaW50cyc7XG4gIH1cbiAgcmV0dXJuIHNoYXBlS2V5O1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlU2hhcGVUb29sdGlwUGF5bG9hZChncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSB7XG4gIGlmIChpc0Z1bm5lbChncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHZhciBfYWN0aXZlSXRlbSR0b29sdGlwUGE7XG4gICAgcmV0dXJuIChfYWN0aXZlSXRlbSR0b29sdGlwUGEgPSBhY3RpdmVJdGVtLnRvb2x0aXBQYXlsb2FkKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEgPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID0gX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhWzBdKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEgPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhID0gX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhLnBheWxvYWQpID09PSBudWxsIHx8IF9hY3RpdmVJdGVtJHRvb2x0aXBQYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhLnBheWxvYWQ7XG4gIH1cbiAgaWYgKGlzUGllKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZUl0ZW0pKSB7XG4gICAgdmFyIF9hY3RpdmVJdGVtJHRvb2x0aXBQYTI7XG4gICAgcmV0dXJuIChfYWN0aXZlSXRlbSR0b29sdGlwUGEyID0gYWN0aXZlSXRlbS50b29sdGlwUGF5bG9hZCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9PT0gdm9pZCAwIHx8IChfYWN0aXZlSXRlbSR0b29sdGlwUGEyID0gX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMlswXSkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiA9PT0gdm9pZCAwIHx8IChfYWN0aXZlSXRlbSR0b29sdGlwUGEyID0gX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMi5wYXlsb2FkKSA9PT0gbnVsbCB8fCBfYWN0aXZlSXRlbSR0b29sdGlwUGEyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYWN0aXZlSXRlbSR0b29sdGlwUGEyLnBheWxvYWQ7XG4gIH1cbiAgaWYgKGlzU2NhdHRlcihncmFwaGljYWxJdGVtLCBhY3RpdmVJdGVtKSkge1xuICAgIHJldHVybiBhY3RpdmVJdGVtLnBheWxvYWQ7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuLyoqXG4gKlxuICogQHBhcmFtIHtHZXRBY3RpdmVTaGFwZUluZGV4Rm9yVG9vbHRpcH0gYXJnIGFuIG9iamVjdCBvZiBpbmNvbWluZyBhdHRyaWJ1dGVzIGZyb20gVG9vbHRpcFxuICogQHJldHVybnMge251bWJlcn1cbiAqXG4gKiBUbyBoYW5kbGUgcG9zc2libGUgZHVwbGljYXRlcyBpbiB0aGUgZGF0YSBzZXQsXG4gKiBtYXRjaCBib3RoIHRoZSBkYXRhIHZhbHVlIG9mIHRoZSBhY3RpdmUgaXRlbSB0byBhIGRhdGEgdmFsdWUgb24gYSBncmFwaCBpdGVtLFxuICogYW5kIG1hdGNoIHRoZSBtb3VzZSBjb29yZGluYXRlcyBvZiB0aGUgYWN0aXZlIGl0ZW0gdG8gdGhlIGNvb3JkaW5hdGVzIG9mIGluIGEgcGFydGljdWxhciBjb21wb25lbnRzIHNoYXBlIGRhdGEuXG4gKiBUaGlzIGFzc3VtZXMgZXF1YWwgbGVuZ3RocyBvZiBzaGFwZSBvYmplY3RzIHRvIGRhdGEgaXRlbXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3RpdmVTaGFwZUluZGV4Rm9yVG9vbHRpcChfcmVmMykge1xuICB2YXIgYWN0aXZlVG9vbHRpcEl0ZW0gPSBfcmVmMy5hY3RpdmVUb29sdGlwSXRlbSxcbiAgICBncmFwaGljYWxJdGVtID0gX3JlZjMuZ3JhcGhpY2FsSXRlbSxcbiAgICBpdGVtRGF0YSA9IF9yZWYzLml0ZW1EYXRhO1xuICB2YXIgc2hhcGVLZXkgPSBnZXRTaGFwZURhdGFLZXkoZ3JhcGhpY2FsSXRlbSwgYWN0aXZlVG9vbHRpcEl0ZW0pO1xuICB2YXIgdG9vbHRpcFBheWxvYWQgPSBnZXRBY3RpdmVTaGFwZVRvb2x0aXBQYXlsb2FkKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZVRvb2x0aXBJdGVtKTtcbiAgdmFyIGFjdGl2ZUl0ZW1NYXRjaGVzID0gaXRlbURhdGEuZmlsdGVyKGZ1bmN0aW9uIChkYXR1bSwgZGF0YUluZGV4KSB7XG4gICAgdmFyIHZhbHVlc01hdGNoID0gaXNFcXVhbCh0b29sdGlwUGF5bG9hZCwgZGF0dW0pO1xuICAgIHZhciBtb3VzZUNvb3JkaW5hdGVNYXRjaGVzID0gZ3JhcGhpY2FsSXRlbS5wcm9wc1tzaGFwZUtleV0uZmlsdGVyKGZ1bmN0aW9uIChzaGFwZURhdGEpIHtcbiAgICAgIHZhciBjb21wYXJpc29uID0gZ2V0Q29tcGFyaXNvbkZuKGdyYXBoaWNhbEl0ZW0sIGFjdGl2ZVRvb2x0aXBJdGVtKTtcbiAgICAgIHJldHVybiBjb21wYXJpc29uKHNoYXBlRGF0YSwgYWN0aXZlVG9vbHRpcEl0ZW0pO1xuICAgIH0pO1xuXG4gICAgLy8gZ2V0IHRoZSBsYXN0IGluZGV4IGluIGNhc2Ugb2YgbXVsdGlwbGUgbWF0Y2hlc1xuICAgIHZhciBpbmRleE9mTW91c2VDb29yZGluYXRlcyA9IGdyYXBoaWNhbEl0ZW0ucHJvcHNbc2hhcGVLZXldLmluZGV4T2YobW91c2VDb29yZGluYXRlTWF0Y2hlc1ttb3VzZUNvb3JkaW5hdGVNYXRjaGVzLmxlbmd0aCAtIDFdKTtcbiAgICB2YXIgY29vcmRpbmF0ZXNNYXRjaCA9IGRhdGFJbmRleCA9PT0gaW5kZXhPZk1vdXNlQ29vcmRpbmF0ZXM7XG4gICAgcmV0dXJuIHZhbHVlc01hdGNoICYmIGNvb3JkaW5hdGVzTWF0Y2g7XG4gIH0pO1xuXG4gIC8vIGdldCB0aGUgbGFzdCBpbmRleCBpbiBjYXNlIG9mIG11bHRpcGxlIG1hdGNoZXNcbiAgdmFyIGFjdGl2ZUluZGV4ID0gaXRlbURhdGEuaW5kZXhPZihhY3RpdmVJdGVtTWF0Y2hlc1thY3RpdmVJdGVtTWF0Y2hlcy5sZW5ndGggLSAxXSk7XG4gIHJldHVybiBhY3RpdmVJbmRleDtcbn0iXSwibmFtZXMiOlsiX2V4Y2x1ZGVkIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwic291cmNlIiwiZXhjbHVkZWQiLCJ0YXJnZXQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImtleSIsImkiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwibGVuZ3RoIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2FsbCIsInNvdXJjZUtleXMiLCJrZXlzIiwib3duS2V5cyIsImUiLCJyIiwidCIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIk51bWJlciIsIlJlYWN0IiwiaXNWYWxpZEVsZW1lbnQiLCJjbG9uZUVsZW1lbnQiLCJpc0Z1bmN0aW9uIiwiaXNQbGFpbk9iamVjdCIsImlzQm9vbGVhbiIsImlzRXF1YWwiLCJSZWN0YW5nbGUiLCJUcmFwZXpvaWQiLCJTZWN0b3IiLCJMYXllciIsIlN5bWJvbHMiLCJkZWZhdWx0UHJvcFRyYW5zZm9ybWVyIiwib3B0aW9uIiwicHJvcHMiLCJpc1N5bWJvbHNQcm9wcyIsInNoYXBlVHlwZSIsIl9lbGVtZW50UHJvcHMiLCJTaGFwZVNlbGVjdG9yIiwiX3JlZiIsImVsZW1lbnRQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJnZXRQcm9wc0Zyb21TaGFwZU9wdGlvbiIsIlNoYXBlIiwiX3JlZjIiLCJfcmVmMiRwcm9wVHJhbnNmb3JtZXIiLCJwcm9wVHJhbnNmb3JtZXIiLCJfcmVmMiRhY3RpdmVDbGFzc05hbWUiLCJhY3RpdmVDbGFzc05hbWUiLCJpc0FjdGl2ZSIsInNoYXBlIiwibmV4dFByb3BzIiwiY2xhc3NOYW1lIiwiaXNGdW5uZWwiLCJncmFwaGljYWxJdGVtIiwiX2l0ZW0iLCJpc1BpZSIsImlzU2NhdHRlciIsImNvbXBhcmVGdW5uZWwiLCJzaGFwZURhdGEiLCJhY3RpdmVUb29sdGlwSXRlbSIsIl9hY3RpdmVUb29sdGlwSXRlbSRsYSIsIl9hY3RpdmVUb29sdGlwSXRlbSRsYTIiLCJ4TWF0Y2hlcyIsIngiLCJsYWJlbFZpZXdCb3giLCJ5TWF0Y2hlcyIsInkiLCJjb21wYXJlUGllIiwic3RhcnRBbmdsZU1hdGNoZXMiLCJlbmRBbmdsZSIsImVuZEFuZ2xlTWF0Y2hlcyIsInN0YXJ0QW5nbGUiLCJjb21wYXJlU2NhdHRlciIsInpNYXRjaGVzIiwieiIsImdldENvbXBhcmlzb25GbiIsImFjdGl2ZUl0ZW0iLCJjb21wYXJpc29uIiwiZ2V0U2hhcGVEYXRhS2V5Iiwic2hhcGVLZXkiLCJnZXRBY3RpdmVTaGFwZVRvb2x0aXBQYXlsb2FkIiwiX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhIiwidG9vbHRpcFBheWxvYWQiLCJwYXlsb2FkIiwiX2FjdGl2ZUl0ZW0kdG9vbHRpcFBhMiIsImdldEFjdGl2ZVNoYXBlSW5kZXhGb3JUb29sdGlwIiwiX3JlZjMiLCJpdGVtRGF0YSIsImFjdGl2ZUl0ZW1NYXRjaGVzIiwiZGF0dW0iLCJkYXRhSW5kZXgiLCJ2YWx1ZXNNYXRjaCIsIm1vdXNlQ29vcmRpbmF0ZU1hdGNoZXMiLCJpbmRleE9mTW91c2VDb29yZGluYXRlcyIsImNvb3JkaW5hdGVzTWF0Y2giLCJhY3RpdmVJbmRleCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/BarUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/BarUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BarRectangle: () => (/* binding */ BarRectangle),\n/* harmony export */ minPointSizeCallback: () => (/* binding */ minPointSizeCallback)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"(ssr)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n/* harmony import */ var _ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ActiveShapeUtils */ \"(ssr)/./node_modules/recharts/es6/util/ActiveShapeUtils.js\");\nvar _excluded = [\n \"x\",\n \"y\"\n];\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n var xProp = _ref.x, yProp = _ref.y, option = _objectWithoutProperties(_ref, _excluded);\n var xValue = \"\".concat(xProp);\n var x = parseInt(xValue, 10);\n var yValue = \"\".concat(yProp);\n var y = parseInt(yValue, 10);\n var heightValue = \"\".concat(props.height || option.height);\n var height = parseInt(heightValue, 10);\n var widthValue = \"\".concat(props.width || option.width);\n var width = parseInt(widthValue, 10);\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n x: x\n } : {}), y ? {\n y: y\n } : {}), {}, {\n height: height,\n width: width,\n name: props.name,\n radius: props.radius\n });\n}\nfunction BarRectangle(props) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ActiveShapeUtils__WEBPACK_IMPORTED_MODULE_2__.Shape, _extends({\n shapeType: \"rectangle\",\n propTransformer: typeguardBarRectangleProps,\n activeClassName: \"recharts-active-bar\"\n }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */ var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return function(value, index) {\n if (typeof minPointSize === \"number\") return minPointSize;\n var isValueNumber = typeof value === \"number\";\n if (isValueNumber) {\n return minPointSize(value, index);\n }\n !isValueNumber ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers are supported.\")) : 0 : void 0;\n return defaultValue;\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQmFyVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0lBQUs7Q0FBSTtBQUMxQixTQUFTQyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPRyxTQUFTLEdBQUcsV0FBVyxPQUFPSjtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDN1QsU0FBU0s7SUFBYUEsV0FBV0MsT0FBT0MsTUFBTSxHQUFHRCxPQUFPQyxNQUFNLENBQUNDLElBQUksS0FBSyxTQUFVQyxNQUFNO1FBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlDLFVBQVVDLE1BQU0sRUFBRUYsSUFBSztZQUFFLElBQUlHLFNBQVNGLFNBQVMsQ0FBQ0QsRUFBRTtZQUFFLElBQUssSUFBSUksT0FBT0QsT0FBUTtnQkFBRSxJQUFJUCxPQUFPRixTQUFTLENBQUNXLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxRQUFRQyxNQUFNO29CQUFFTCxNQUFNLENBQUNLLElBQUksR0FBR0QsTUFBTSxDQUFDQyxJQUFJO2dCQUFFO1lBQUU7UUFBRTtRQUFFLE9BQU9MO0lBQVE7SUFBRyxPQUFPSixTQUFTWSxLQUFLLENBQUMsSUFBSSxFQUFFTjtBQUFZO0FBQ2xWLFNBQVNPLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlmLE9BQU9nQixJQUFJLENBQUNIO0lBQUksSUFBSWIsT0FBT2lCLHFCQUFxQixFQUFFO1FBQUUsSUFBSXZCLElBQUlNLE9BQU9pQixxQkFBcUIsQ0FBQ0o7UUFBSUMsS0FBTXBCLENB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R0FBR0E7SUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7UUFDWE8sUUFBUUE7UUFDUkUsT0FBT0E7UUFDUEMsTUFBTWQsTUFBTWMsSUFBSTtRQUNoQkMsUUFBUWYsTUFBTWUsTUFBTTtJQUN0QjtBQUNGO0FBQ08sU0FBU0MsYUFBYWhCLEtBQUs7SUFDaEMsT0FBTyxXQUFXLEdBQUVMLDBEQUFtQixDQUFDRSxvREFBS0EsRUFBRWhELFNBQVM7UUFDdERxRSxXQUFXO1FBQ1hDLGlCQUFpQnJCO1FBQ2pCc0IsaUJBQWlCO0lBQ25CLEdBQUdwQjtBQUNMO0FBQ0E7Ozs7O0NBS0MsR0FDTSxJQUFJcUIsdUJBQXVCLFNBQVNBLHFCQUFxQkMsWUFBWTtJQUMxRSxJQUFJQyxlQUFlcEUsVUFBVUMsTUFBTSxHQUFHLEtBQUtELFNBQVMsQ0FBQyxFQUFFLEtBQUtxRSxZQUFZckUsU0FBUyxDQUFDLEVBQUUsR0FBRztJQUN2RixPQUFPLFNBQVV3QixLQUFLLEVBQUU4QyxLQUFLO1FBQzNCLElBQUksT0FBT0gsaUJBQWlCLFVBQVUsT0FBT0E7UUFDN0MsSUFBSUksZ0JBQWdCLE9BQU8vQyxVQUFVO1FBQ3JDLElBQUkrQyxlQUFlO1lBQ2pCLE9BQU9KLGFBQWEzQyxPQUFPOEM7UUFDN0I7UUFDQSxDQUFDQyxnQkFBZ0JDLEtBQXFDLEdBQUcvQiwwREFBU0EsQ0FBQyxPQUFPLGdFQUFnRVcsTUFBTSxDQUFDaEUsUUFBUW9DLFFBQVEsOENBQThDaUIsQ0FBZ0IsR0FBRyxLQUFLO1FBQ3ZPLE9BQU8yQjtJQUNUO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQmFyVXRpbHMuanM/NzQ3ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wieFwiLCBcInlcIl07XG5mdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTsgdmFyIGtleSwgaTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICd0aW55LWludmFyaWFudCc7XG5pbXBvcnQgeyBTaGFwZSB9IGZyb20gJy4vQWN0aXZlU2hhcGVVdGlscyc7XG5cbi8vIFJlY3RhbmdsZSBwcm9wcyBpcyBleHBlY3RpbmcgeCwgeSwgaGVpZ2h0LCB3aWR0aCBhcyBudW1iZXJzLCBuYW1lIGFzIGEgc3RyaW5nLCBhbmQgcmFkaXVzIGFzIGEgY3VzdG9tIHR5cGVcbi8vIFdoZW4gcHJvcHMgYXJlIGJlaW5nIHNwcmVhZCBpbiBmcm9tIGEgdXNlciBkZWZpbmVkIGNvbXBvbmVudCBpbiBCYXIsXG4vLyB0aGUgcHJvcCB0eXBlcyBvZiBhbiBTVkdFbGVtZW50IGhhdmUgdGhlc2UgdHlwZWQgYXMgc29tZXRoaW5nIGVsc2UuXG4vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBwYXNzZWQgaW4gcHJvcHNcbi8vIGFsb25nIHdpdGggeCwgeSwgaGVpZ2h0IGFzIG51bWJlcnMsIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCByYWRpdXMgYXMgbnVtYmVyIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbmZ1bmN0aW9uIHR5cGVndWFyZEJhclJlY3RhbmdsZVByb3BzKF9yZWYsIHByb3BzKSB7XG4gIHZhciB4UHJvcCA9IF9yZWYueCxcbiAgICB5UHJvcCA9IF9yZWYueSxcbiAgICBvcHRpb24gPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgdmFyIHhWYWx1ZSA9IFwiXCIuY29uY2F0KHhQcm9wKTtcbiAgdmFyIHggPSBwYXJzZUludCh4VmFsdWUsIDEwKTtcbiAgdmFyIHlWYWx1ZSA9IFwiXCIuY29uY2F0KHlQcm9wKTtcbiAgdmFyIHkgPSBwYXJzZUludCh5VmFsdWUsIDEwKTtcbiAgdmFyIGhlaWdodFZhbHVlID0gXCJcIi5jb25jYXQocHJvcHMuaGVpZ2h0IHx8IG9wdGlvbi5oZWlnaHQpO1xuICB2YXIgaGVpZ2h0ID0gcGFyc2VJbnQoaGVpZ2h0VmFsdWUsIDEwKTtcbiAgdmFyIHdpZHRoVmFsdWUgPSBcIlwiLmNvbmNhdChwcm9wcy53aWR0aCB8fCBvcHRpb24ud2lkdGgpO1xuICB2YXIgd2lkdGggPSBwYXJzZUludCh3aWR0aFZhbHVlLCAxMCk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwgb3B0aW9uKSwgeCA/IHtcbiAgICB4OiB4XG4gIH0gOiB7fSksIHkgPyB7XG4gICAgeTogeVxuICB9IDoge30pLCB7fSwge1xuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgIHJhZGl1czogcHJvcHMucmFkaXVzXG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIEJhclJlY3RhbmdsZShwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU2hhcGUsIF9leHRlbmRzKHtcbiAgICBzaGFwZVR5cGU6IFwicmVjdGFuZ2xlXCIsXG4gICAgcHJvcFRyYW5zZm9ybWVyOiB0eXBlZ3VhcmRCYXJSZWN0YW5nbGVQcm9wcyxcbiAgICBhY3RpdmVDbGFzc05hbWU6IFwicmVjaGFydHMtYWN0aXZlLWJhclwiXG4gIH0sIHByb3BzKSk7XG59XG4vKipcbiAqIFNhZmVseSBnZXRzIG1pblBvaW50U2l6ZSBmcm9tIGZyb20gdGhlIG1pblBvaW50U2l6ZSBwcm9wIGlmIGl0IGlzIGEgZnVuY3Rpb25cbiAqIEBwYXJhbSBtaW5Qb2ludFNpemUgbWluUG9pbnRTaXplIGFzIHBhc3NlZCB0byB0aGUgQmFyIGNvbXBvbmVudFxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBkZWZhdWx0IG1pblBvaW50U2l6ZVxuICogQHJldHVybnMgbWluUG9pbnRTaXplXG4gKi9cbmV4cG9ydCB2YXIgbWluUG9pbnRTaXplQ2FsbGJhY2sgPSBmdW5jdGlvbiBtaW5Qb2ludFNpemVDYWxsYmFjayhtaW5Qb2ludFNpemUpIHtcbiAgdmFyIGRlZmF1bHRWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIG1pblBvaW50U2l6ZSA9PT0gJ251bWJlcicpIHJldHVybiBtaW5Qb2ludFNpemU7XG4gICAgdmFyIGlzVmFsdWVOdW1iZXIgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICAgIGlmIChpc1ZhbHVlTnVtYmVyKSB7XG4gICAgICByZXR1cm4gbWluUG9pbnRTaXplKHZhbHVlLCBpbmRleCk7XG4gICAgfVxuICAgICFpc1ZhbHVlTnVtYmVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIm1pblBvaW50U2l6ZSBjYWxsYmFjayBmdW5jdGlvbiByZWNlaXZlZCBhIHZhbHVlIHdpdGggdHlwZSBvZiBcIi5jb25jYXQoX3R5cGVvZih2YWx1ZSksIFwiLiBDdXJyZW50bHkgb25seSBudW1iZXJzIGFyZSBzdXBwb3J0ZWQuXCIpKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfTtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJlIiwiciIsInQiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIk51bWJlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlJlYWN0IiwiaW52YXJpYW50IiwiU2hhcGUiLCJ0eXBlZ3VhcmRCYXJSZWN0YW5nbGVQcm9wcyIsIl9yZWYiLCJwcm9wcyIsInhQcm9wIiwieCIsInlQcm9wIiwieSIsIm9wdGlvbiIsInhWYWx1ZSIsImNvbmNhdCIsInBhcnNlSW50IiwieVZhbHVlIiwiaGVpZ2h0VmFsdWUiLCJoZWlnaHQiLCJ3aWR0aFZhbHVlIiwid2lkdGgiLCJuYW1lIiwicmFkaXVzIiwiQmFyUmVjdGFuZ2xlIiwiY3JlYXRlRWxlbWVudCIsInNoYXBlVHlwZSIsInByb3BUcmFuc2Zvcm1lciIsImFjdGl2ZUNsYXNzTmFtZSIsIm1pblBvaW50U2l6ZUNhbGxiYWNrIiwibWluUG9pbnRTaXplIiwiZGVmYXVsdFZhbHVlIiwidW5kZWZpbmVkIiwiaW5kZXgiLCJpc1ZhbHVlTnVtYmVyIiwicHJvY2VzcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/BarUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/CartesianUtils.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ScaleHelper: () => (/* binding */ ScaleHelper),\n/* harmony export */ createLabeledScales: () => (/* binding */ createLabeledScales),\n/* harmony export */ formatAxisMap: () => (/* binding */ formatAxisMap),\n/* harmony export */ getAngledRectangleWidth: () => (/* binding */ getAngledRectangleWidth),\n/* harmony export */ normalizeAngle: () => (/* binding */ normalizeAngle),\n/* harmony export */ rectWithCoords: () => (/* binding */ rectWithCoords),\n/* harmony export */ rectWithPoints: () => (/* binding */ rectWithPoints)\n/* harmony export */ });\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/mapValues */ \"(ssr)/./node_modules/lodash/mapValues.js\");\n/* harmony import */ var lodash_mapValues__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_mapValues__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/every */ \"(ssr)/./node_modules/lodash/every.js\");\n/* harmony import */ var lodash_every__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_every__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _cartesian_Bar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/Bar */ \"(ssr)/./node_modules/recharts/es6/cartesian/Bar.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\n\n\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */ var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width, height = props.height, layout = props.layout, children = props.children;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n var hasBar = !!(0,_ReactUtils__WEBPACK_IMPORTED_MODULE_2__.findChildByType)(children, _cartesian_Bar__WEBPACK_IMPORTED_MODULE_3__.Bar);\n return ids.reduce(function(result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation, domain = axis.domain, _axis$padding = axis.padding, padding = _axis$padding === void 0 ? {} : _axis$padding, mirror = axis.mirror, reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? \"Mirror\" : \"\");\n var calculatedPadding, range, x, y, needSpace;\n if (axis.type === \"number\" && (axis.padding === \"gap\" || axis.padding === \"no-gap\")) {\n var diff = domain[1] - domain[0];\n var smallestDistanceBetweenValues = Infinity;\n var sortedValues = axis.categoricalDomain.sort();\n sortedValues.forEach(function(value, index) {\n if (index > 0) {\n smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n }\n });\n if (Number.isFinite(smallestDistanceBetweenValues)) {\n var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n var rangeWidth = axis.layout === \"vertical\" ? offset.height : offset.width;\n if (axis.padding === \"gap\") {\n calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n }\n if (axis.padding === \"no-gap\") {\n var gap = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_4__.getPercentValue)(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n }\n }\n }\n if (axisType === \"xAxis\") {\n range = [\n offset.left + (padding.left || 0) + (calculatedPadding || 0),\n offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)\n ];\n } else if (axisType === \"yAxis\") {\n range = layout === \"horizontal\" ? [\n offset.top + offset.height - (padding.bottom || 0),\n offset.top + (padding.top || 0)\n ] : [\n offset.top + (padding.top || 0) + (calculatedPadding || 0),\n offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)\n ];\n } else {\n range = axis.range;\n }\n if (reversed) {\n range = [\n range[1],\n range[0]\n ];\n }\n var _parseScale = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.parseScale)(axis, chartName, hasBar), scale = _parseScale.scale, realScaleType = _parseScale.realScaleType;\n scale.domain(domain).range(range);\n (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.checkDomainOfScale)(scale);\n var ticks = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getTicksOfScale)(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n if (axisType === \"xAxis\") {\n needSpace = orientation === \"top\" && !mirror || orientation === \"bottom\" && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === \"yAxis\") {\n needSpace = orientation === \"left\" && !mirror || orientation === \"right\" && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === \"xAxis\" ? offset.width : axis.width,\n height: axisType === \"yAxis\" ? offset.height : axis.height\n });\n finalAxis.bandSize = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_5__.getBandSizeOfAxis)(finalAxis, ticks);\n if (!axis.hide && axisType === \"xAxis\") {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nvar rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x, y1 = _ref.y;\n var x2 = _ref2.x, y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */ var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1, y1 = _ref3.y1, x2 = _ref3.x2, y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nvar ScaleHelper = /*#__PURE__*/ function() {\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n this.scale = scale;\n }\n _createClass(ScaleHelper, [\n {\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n },\n {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n },\n {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n },\n {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n },\n {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n },\n {\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, bandAware = _ref4.bandAware, position = _ref4.position;\n if (value === undefined) {\n return undefined;\n }\n if (position) {\n switch(position){\n case \"start\":\n {\n return this.scale(value);\n }\n case \"middle\":\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n case \"end\":\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n return this.scale(value) + _offset;\n }\n default:\n {\n return this.scale(value);\n }\n }\n }\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + _offset2;\n }\n return this.scale(value);\n }\n },\n {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }\n ], [\n {\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }\n ]);\n return ScaleHelper;\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nvar createLabeledScales = function createLabeledScales(options) {\n var scales = Object.keys(options).reduce(function(res, key) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n }, {});\n return _objectSpread(_objectSpread({}, scales), {}, {\n apply: function apply(coord) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, bandAware = _ref5.bandAware, position = _ref5.position;\n return lodash_mapValues__WEBPACK_IMPORTED_MODULE_0___default()(coord, function(value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware,\n position: position\n });\n });\n },\n isInRange: function isInRange(coord) {\n return lodash_every__WEBPACK_IMPORTED_MODULE_1___default()(coord, function(value, label) {\n return scales[label].isInRange(value);\n });\n }\n });\n};\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */ function normalizeAngle(angle) {\n return (angle % 180 + 180) % 180;\n}\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */ var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n var width = _ref6.width, height = _ref6.height;\n var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Ensure angle is >= 0 && < 180\n var normalizedAngle = normalizeAngle(angle);\n var angleRadians = normalizedAngle * Math.PI / 180;\n /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n * width. This threshold defines when each formula should kick in. */ var angleThreshold = Math.atan(height / width);\n var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n return Math.abs(angledWidth);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ2FydGVzaWFuVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsUUFBUSxFQUFFQyxXQUFXO0lBQUksSUFBSSxDQUFFRCxDQUFBQSxvQkFBb0JDLFdBQVUsR0FBSTtRQUFFLE1BQU0sSUFBSUMsVUFBVTtJQUFzQztBQUFFO0FBQ3hKLFNBQVNDLGtCQUFrQkMsTUFBTSxFQUFFQyxLQUFLO0lBQUksSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlELE1BQU1FLE1BQU0sRUFBRUQsSUFBSztRQUFFLElBQUlFLGFBQWFILEtBQUssQ0FBQ0MsRUFBRTtRQUFFRSxXQUFXQyxVQUFVLEdBQUdELFdBQVdDLFVBQVUsSUFBSTtRQUFPRCxXQUFXRSxZQUFZLEdBQUc7UUFBTSxJQUFJLFdBQVdGLFlBQVlBLFdBQVdHLFFBQVEsR0FBRztRQUFNQyxPQUFPQyxjQUFjLENBQUNULFFBQVFVLGVBQWVOLFdBQVdPLEdBQUcsR0FBR1A7SUFBYTtBQUFFO0FBQzVVLFNBQVNRLGFBQWFmLFdBQVcsRUFBRWdCLFVBQVUsRUFBRUMsV0FBVztJQUFJLElBQUlELFlBQVlkLGtCQUFrQkYsWUFBWUgsU0FBUyxFQUFFbUI7SUFBYSxJQUFJQyxhQUFhZixrQkFBa0JGLGFBQWFpQjtJQUFjTixPQUFPQyxjQUFjLENBQUNaLGFBQWEsYUFBYTtRQUFFVSxVQUFVO0lBQU07SUFBSSxPQUFPVjtBQUFhO0FBQzVSLFNBQVNrQixRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJVixPQUFPVyxJQUFJLENBQUNIO0lBQUksSUFBSVIsT0FBT1kscUJBQXFCLEVBQUU7UUFBRSxJQUFJOUIsSUFBSWtCLE9BQU9ZLHFCQUFxQixDQUFDSjtRQUFJQyxLQUFNM0IsQ0FBQUEsSUFBSUEsRUFBRStCLE1BQU0sQ0FBQyxTQUFVSixDQUFDO1lBQUksT0FBT1QsT0FBT2Msd0JBQXdCLENBQUNOLEdBQUdDLEdBQUdaLFVBQVU7UUFBRSxFQUFDLEdBQUlhLEVBQUVLLElBQUksQ0FBQ0MsS0FBSyxDQUFDTixHQUFHNUI7SUFBSTtJQUFFLE9BQU80QjtBQUFHO0FBQzlQLFNBQVNPLGNBQWNULENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVMsVUFBVXZCLE1BQU0sRUFBRWMsSUFBSztRQUFFLElBQUlDLElBQUksUUFBUVEsU0FBUyxDQUFDVCxFQUFFLEdBQUdTLFNBQVMsQ0FBQ1QsRUFBRSxHQUFHLENBQUM7UUFBR0EsSUFBSSxJQUFJRixRQUFRUCxPQUFPVSxJQUFJLENBQUMsR0FBR1MsT0FBTyxDQUFDLFNBQVVWLENBQUM7WUFBSVcsZ0JBQWdCWixHQUFHQyxHQUFHQyxDQUFDLENBQUNELEVBQUU7UUFBRyxLQUFLVCxPQUFPcUIseUJBQXlCLEdBQUdyQixPQUFPc0IsZ0JBQWdCLENBQUNkLEdBQUdSLE9BQU9xQix5QkFBeUIsQ0FBQ1gsTUFBTUgsUUFBUVAsT0FBT1UsSUFBSVMsT0FBTyxDQUFDLFNBQVVWLENBQUM7WUFBSVQsT0FBT0MsY0FBYyxDQUFDTyxHQUFHQyxHQUFHVCxPQUFPYyx3QkFBd0IsQ0FBQ0osR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTWSxnQkFBZ0JHLEdBQUcsRUFBRXBCLEdBQUcsRUFBRXFCLEtBQUs7SUFBSXJCLE1BQU1ELGVBQWVDO0lBQU0sSUFBSUEsT0FBT29CLEtBQUs7UUFBRXZCLE9BQU9DLGNBQWMsQ0FBQ3NCLEtBQUtwQixLQUFLO1lBQUVxQixPQUFPQTtZQUFPM0IsWUFBWTtZQUFNQyxjQUFjO1lBQU1DLFVBQVU7UUFBSztJQUFJLE9BQU87UUFBRXdCLEdBQUcsQ0FBQ3BCLElBQUksR0FBR3FCO0lBQU87SUFBRSxPQUFPRDtBQUFLO0FBQzNPLFNBQVNyQixlQUFlUSxDQUFDO0lBQUksSUFBSWhCLElBQUkrQixhQUFhZixHQUFHO0lBQVcsT0FBTyxZQUFZN0IsUUFBUWEsS0FBS0EsSUFBSWdDLE9BQU9oQztBQUFJO0FBQy9HLFNBQVMrQixhQUFhZixDQUFDLEVBQUVELENBQUM7SUFBSSxJQUFJLFlBQVk1QixRQUFRNkIsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUYsSUFBSUUsQ0FBQyxDQUFDM0IsT0FBTzRDLFdBQVcsQ0FBQztJQUFFLElBQUksS0FBSyxNQUFNbkIsR0FBRztRQUFFLElBQUlkLElBQUljLEVBQUVvQixJQUFJLENBQUNsQixHQUFHRCxLQUFLO1FBQVksSUFBSSxZQUFZNUIsUUFBUWEsSUFBSSxPQUFPQTtRQUFHLE1BQU0sSUFBSUosVUFBVTtJQUFpRDtJQUFFLE9BQU8sQ0FBQyxhQUFhbUIsSUFBSWlCLFNBQVNHLE1BQUssRUFBR25CO0FBQUk7QUFDbFI7QUFDUjtBQUNpRTtBQUNuRDtBQUNEO0FBQ1A7QUFFdkM7Ozs7Ozs7O0NBUUMsR0FDTSxJQUFJNkIsZ0JBQWdCLFNBQVNBLGNBQWM5QyxLQUFLLEVBQUUrQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTO0lBQzNGLElBQUlDLFFBQVFuRCxNQUFNbUQsS0FBSyxFQUNyQkMsU0FBU3BELE1BQU1vRCxNQUFNLEVBQ3JCQyxTQUFTckQsTUFBTXFELE1BQU0sRUFDckJDLFdBQVd0RCxNQUFNc0QsUUFBUTtJQUMzQixJQUFJQyxNQUFNaEQsT0FBT1csSUFBSSxDQUFDNkI7SUFDdEIsSUFBSVMsUUFBUTtRQUNWQyxNQUFNVCxPQUFPUyxJQUFJO1FBQ2pCQyxZQUFZVixPQUFPUyxJQUFJO1FBQ3ZCRSxPQUFPUixRQUFRSCxPQUFPVyxLQUFLO1FBQzNCQyxhQUFhVCxRQUFRSCxPQUFPVyxLQUFLO1FBQ2pDRSxLQUFLYixPQUFPYSxHQUFHO1FBQ2ZDLFdBQVdkLE9BQU9hLEdBQUc7UUFDckJFLFFBQVFYLFNBQVNKLE9BQU9lLE1BQU07UUFDOUJDLGNBQWNaLFNBQVNKLE9BQU9lLE1BQU07SUFDdEM7SUFDQSxJQUFJRSxTQUFTLENBQUMsQ0FBQ3RCLDREQUFlQSxDQUFDVyxVQUFVVCwrQ0FBR0E7SUFDNUMsT0FBT1UsSUFBSVcsTUFBTSxDQUFDLFNBQVVDLE1BQU0sRUFBRUMsRUFBRTtRQUNwQyxJQUFJQyxPQUFPdEIsT0FBTyxDQUFDcUIsR0FBRztRQUN0QixJQUFJRSxjQUFjRCxLQUFLQyxXQUFXLEVBQ2hDQyxTQUFTRixLQUFLRSxNQUFNLEVBQ3BCQyxnQkFBZ0JILEtBQUtJLE9BQU8sRUFDNUJBLFVBQVVELGtCQUFrQixLQUFLLElBQUksQ0FBQyxJQUFJQSxlQUMxQ0UsU0FBU0wsS0FBS0ssTUFBTSxFQUNwQkMsV0FBV04sS0FBS00sUUFBUTtRQUMxQixJQUFJQyxZQUFZLEdBQUdDLE1BQU0sQ0FBQ1AsYUFBYU8sTUFBTSxDQUFDSCxTQUFTLFdBQVc7UUFDbEUsSUFBSUksbUJBQW1CQyxPQUFPQyxHQUFHQyxHQUFHQztRQUNwQyxJQUFJYixLQUFLYyxJQUFJLEtBQUssWUFBYWQsQ0FBQUEsS0FBS0ksT0FBTyxLQUFLLFNBQVNKLEtBQUtJLE9BQU8sS0FBSyxRQUFPLEdBQUk7WUFDbkYsSUFBSVcsT0FBT2IsTUFBTSxDQUFDLEVBQUUsR0FBR0EsTUFBTSxDQUFDLEVBQUU7WUFDaEMsSUFBSWMsZ0NBQWdDQztZQUNwQyxJQUFJQyxlQUFlbEIsS0FBS21CLGlCQUFpQixDQUFDQyxJQUFJO1lBQzlDRixhQUFhN0QsT0FBTyxDQUFDLFNBQVVLLEtBQUssRUFBRTJELEtBQUs7Z0JBQ3pDLElBQUlBLFFBQVEsR0FBRztvQkFDYkwsZ0NBQWdDTSxLQUFLQyxHQUFHLENBQUMsQ0FBQzdELFNBQVMsS0FBTXdELENBQUFBLFlBQVksQ0FBQ0csUUFBUSxFQUFFLElBQUksSUFBSUw7Z0JBQzFGO1lBQ0Y7WUFDQSxJQUFJakQsT0FBT3lELFFBQVEsQ0FBQ1IsZ0NBQWdDO2dCQUNsRCxJQUFJUyw0QkFBNEJULGdDQUFnQ0Q7Z0JBQ2hFLElBQUlXLGFBQWExQixLQUFLaEIsTUFBTSxLQUFLLGFBQWFMLE9BQU9JLE1BQU0sR0FBR0osT0FBT0csS0FBSztnQkFDMUUsSUFBSWtCLEtBQUtJLE9BQU8sS0FBSyxPQUFPO29CQUMxQkssb0JBQW9CZ0IsNEJBQTRCQyxhQUFhO2dCQUMvRDtnQkFDQSxJQUFJMUIsS0FBS0ksT0FBTyxLQUFLLFVBQVU7b0JBQzdCLElBQUl1QixNQUFNcEQsMkRBQWVBLENBQUM1QyxNQUFNaUcsY0FBYyxFQUFFSCw0QkFBNEJDO29CQUM1RSxJQUFJRyxXQUFXSiw0QkFBNEJDLGFBQWE7b0JBQ3hEakIsb0JBQW9Cb0IsV0FBV0YsTUFBTSxDQUFDRSxXQUFXRixHQUFFLElBQUtELGFBQWFDO2dCQUN2RTtZQUNGO1FBQ0Y7UUFDQSxJQUFJL0MsYUFBYSxTQUFTO1lBQ3hCOEIsUUFBUTtnQkFBQy9CLE9BQU9TLElBQUksR0FBSWdCLENBQUFBLFFBQVFoQixJQUFJLElBQUksS0FBTXFCLENBQUFBLHFCQUFxQjtnQkFBSTlCLE9BQU9TLElBQUksR0FBR1QsT0FBT0csS0FBSyxHQUFJc0IsQ0FBQUEsUUFBUWQsS0FBSyxJQUFJLEtBQU1tQixDQUFBQSxxQkFBcUI7YUFBRztRQUN0SixPQUFPLElBQUk3QixhQUFhLFNBQVM7WUFDL0I4QixRQUFRMUIsV0FBVyxlQUFlO2dCQUFDTCxPQUFPYSxHQUFHLEdBQUdiLE9BQU9JLE1BQU0sR0FBSXFCLENBQUFBLFFBQVFWLE1BQU0sSUFBSTtnQkFBSWYsT0FBT2EsR0FBRyxHQUFJWSxDQUFBQSxRQUFRWixHQUFHLElBQUk7YUFBRyxHQUFHO2dCQUFDYixPQUFPYSxHQUFHLEdBQUlZLENBQUFBLFFBQVFaLEdBQUcsSUFBSSxLQUFNaUIsQ0FBQUEscUJBQXFCO2dCQUFJOUIsT0FBT2EsR0FBRyxHQUFHYixPQUFPSSxNQUFNLEdBQUlxQixDQUFBQSxRQUFRVixNQUFNLElBQUksS0FBTWUsQ0FBQUEscUJBQXFCO2FBQUc7UUFDdlEsT0FBTztZQUNMQyxRQUFRVixLQUFLVSxLQUFLO1FBQ3BCO1FBQ0EsSUFBSUosVUFBVTtZQUNaSSxRQUFRO2dCQUFDQSxLQUFLLENBQUMsRUFBRTtnQkFBRUEsS0FBSyxDQUFDLEVBQUU7YUFBQztRQUM5QjtRQUNBLElBQUlvQixjQUFjM0QsdURBQVVBLENBQUM2QixNQUFNbkIsV0FBV2UsU0FDNUNtQyxRQUFRRCxZQUFZQyxLQUFLLEVBQ3pCQyxnQkFBZ0JGLFlBQVlFLGFBQWE7UUFDM0NELE1BQU03QixNQUFNLENBQUNBLFFBQVFRLEtBQUssQ0FBQ0E7UUFDM0J0QywrREFBa0JBLENBQUMyRDtRQUNuQixJQUFJRSxRQUFRL0QsNERBQWVBLENBQUM2RCxPQUFPNUUsY0FBY0EsY0FBYyxDQUFDLEdBQUc2QyxPQUFPLENBQUMsR0FBRztZQUM1RWdDLGVBQWVBO1FBQ2pCO1FBQ0EsSUFBSXBELGFBQWEsU0FBUztZQUN4QmlDLFlBQVlaLGdCQUFnQixTQUFTLENBQUNJLFVBQVVKLGdCQUFnQixZQUFZSTtZQUM1RU0sSUFBSWhDLE9BQU9TLElBQUk7WUFDZndCLElBQUl6QixLQUFLLENBQUNvQixVQUFVLEdBQUdNLFlBQVliLEtBQUtqQixNQUFNO1FBQ2hELE9BQU8sSUFBSUgsYUFBYSxTQUFTO1lBQy9CaUMsWUFBWVosZ0JBQWdCLFVBQVUsQ0FBQ0ksVUFBVUosZ0JBQWdCLFdBQVdJO1lBQzVFTSxJQUFJeEIsS0FBSyxDQUFDb0IsVUFBVSxHQUFHTSxZQUFZYixLQUFLbEIsS0FBSztZQUM3QzhCLElBQUlqQyxPQUFPYSxHQUFHO1FBQ2hCO1FBQ0EsSUFBSTBDLFlBQVkvRSxjQUFjQSxjQUFjQSxjQUFjLENBQUMsR0FBRzZDLE9BQU9pQyxRQUFRLENBQUMsR0FBRztZQUMvRUQsZUFBZUE7WUFDZnJCLEdBQUdBO1lBQ0hDLEdBQUdBO1lBQ0htQixPQUFPQTtZQUNQakQsT0FBT0YsYUFBYSxVQUFVRCxPQUFPRyxLQUFLLEdBQUdrQixLQUFLbEIsS0FBSztZQUN2REMsUUFBUUgsYUFBYSxVQUFVRCxPQUFPSSxNQUFNLEdBQUdpQixLQUFLakIsTUFBTTtRQUM1RDtRQUNBbUQsVUFBVUMsUUFBUSxHQUFHOUQsOERBQWlCQSxDQUFDNkQsV0FBV0Q7UUFDbEQsSUFBSSxDQUFDakMsS0FBS29DLElBQUksSUFBSXhELGFBQWEsU0FBUztZQUN0Q08sS0FBSyxDQUFDb0IsVUFBVSxJQUFJLENBQUNNLFlBQVksQ0FBQyxJQUFJLEtBQUtxQixVQUFVbkQsTUFBTTtRQUM3RCxPQUFPLElBQUksQ0FBQ2lCLEtBQUtvQyxJQUFJLEVBQUU7WUFDckJqRCxLQUFLLENBQUNvQixVQUFVLElBQUksQ0FBQ00sWUFBWSxDQUFDLElBQUksS0FBS3FCLFVBQVVwRCxLQUFLO1FBQzVEO1FBQ0EsT0FBTzNCLGNBQWNBLGNBQWMsQ0FBQyxHQUFHMkMsU0FBUyxDQUFDLEdBQUd4QyxnQkFBZ0IsQ0FBQyxHQUFHeUMsSUFBSW1DO0lBQzlFLEdBQUcsQ0FBQztBQUNOLEVBQUU7QUFDSyxJQUFJRyxpQkFBaUIsU0FBU0EsZUFBZUMsSUFBSSxFQUFFQyxLQUFLO0lBQzdELElBQUlDLEtBQUtGLEtBQUszQixDQUFDLEVBQ2I4QixLQUFLSCxLQUFLMUIsQ0FBQztJQUNiLElBQUk4QixLQUFLSCxNQUFNNUIsQ0FBQyxFQUNkZ0MsS0FBS0osTUFBTTNCLENBQUM7SUFDZCxPQUFPO1FBQ0xELEdBQUdXLEtBQUtDLEdBQUcsQ0FBQ2lCLElBQUlFO1FBQ2hCOUIsR0FBR1UsS0FBS0MsR0FBRyxDQUFDa0IsSUFBSUU7UUFDaEI3RCxPQUFPd0MsS0FBS3NCLEdBQUcsQ0FBQ0YsS0FBS0Y7UUFDckJ6RCxRQUFRdUMsS0FBS3NCLEdBQUcsQ0FBQ0QsS0FBS0Y7SUFDeEI7QUFDRixFQUFFO0FBRUY7Ozs7Q0FJQyxHQUNNLElBQUlJLGlCQUFpQixTQUFTQSxlQUFlQyxLQUFLO0lBQ3ZELElBQUlOLEtBQUtNLE1BQU1OLEVBQUUsRUFDZkMsS0FBS0ssTUFBTUwsRUFBRSxFQUNiQyxLQUFLSSxNQUFNSixFQUFFLEVBQ2JDLEtBQUtHLE1BQU1ILEVBQUU7SUFDZixPQUFPTixlQUFlO1FBQ3BCMUIsR0FBRzZCO1FBQ0g1QixHQUFHNkI7SUFDTCxHQUFHO1FBQ0Q5QixHQUFHK0I7UUFDSDlCLEdBQUcrQjtJQUNMO0FBQ0YsRUFBRTtBQUNLLElBQUlJLGNBQWMsV0FBVyxHQUFFO0lBQ3BDLFNBQVNBLFlBQVloQixLQUFLO1FBQ3hCMUcsZ0JBQWdCLElBQUksRUFBRTBIO1FBQ3RCLElBQUksQ0FBQ2hCLEtBQUssR0FBR0E7SUFDZjtJQUNBekYsYUFBYXlHLGFBQWE7UUFBQztZQUN6QjFHLEtBQUs7WUFDTDJHLEtBQUssU0FBU0E7Z0JBQ1osT0FBTyxJQUFJLENBQUNqQixLQUFLLENBQUM3QixNQUFNO1lBQzFCO1FBQ0Y7UUFBRztZQUNEN0QsS0FBSztZQUNMMkcsS0FBSyxTQUFTQTtnQkFDWixPQUFPLElBQUksQ0FBQ2pCLEtBQUssQ0FBQ3JCLEtBQUs7WUFDekI7UUFDRjtRQUFHO1lBQ0RyRSxLQUFLO1lBQ0wyRyxLQUFLLFNBQVNBO2dCQUNaLE9BQU8sSUFBSSxDQUFDdEMsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN4QjtRQUNGO1FBQUc7WUFDRHJFLEtBQUs7WUFDTDJHLEtBQUssU0FBU0E7Z0JBQ1osT0FBTyxJQUFJLENBQUN0QyxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ3hCO1FBQ0Y7UUFBRztZQUNEckUsS0FBSztZQUNMMkcsS0FBSyxTQUFTQTtnQkFDWixPQUFPLElBQUksQ0FBQ2pCLEtBQUssQ0FBQ2tCLFNBQVM7WUFDN0I7UUFDRjtRQUFHO1lBQ0Q1RyxLQUFLO1lBQ0xxQixPQUFPLFNBQVNSLE1BQU1RLEtBQUs7Z0JBQ3pCLElBQUl3RixRQUFROUYsVUFBVXZCLE1BQU0sR0FBRyxLQUFLdUIsU0FBUyxDQUFDLEVBQUUsS0FBSytGLFlBQVkvRixTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsR0FDL0VnRyxZQUFZRixNQUFNRSxTQUFTLEVBQzNCQyxXQUFXSCxNQUFNRyxRQUFRO2dCQUMzQixJQUFJM0YsVUFBVXlGLFdBQVc7b0JBQ3ZCLE9BQU9BO2dCQUNUO2dCQUNBLElBQUlFLFVBQVU7b0JBQ1osT0FBUUE7d0JBQ04sS0FBSzs0QkFDSDtnQ0FDRSxPQUFPLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ3JFOzRCQUNwQjt3QkFDRixLQUFLOzRCQUNIO2dDQUNFLElBQUlpQixTQUFTLElBQUksQ0FBQ3NFLFNBQVMsR0FBRyxJQUFJLENBQUNBLFNBQVMsS0FBSyxJQUFJO2dDQUNyRCxPQUFPLElBQUksQ0FBQ2xCLEtBQUssQ0FBQ3JFLFNBQVNpQjs0QkFDN0I7d0JBQ0YsS0FBSzs0QkFDSDtnQ0FDRSxJQUFJMkUsVUFBVSxJQUFJLENBQUNMLFNBQVMsR0FBRyxJQUFJLENBQUNBLFNBQVMsS0FBSztnQ0FDbEQsT0FBTyxJQUFJLENBQUNsQixLQUFLLENBQUNyRSxTQUFTNEY7NEJBQzdCO3dCQUNGOzRCQUNFO2dDQUNFLE9BQU8sSUFBSSxDQUFDdkIsS0FBSyxDQUFDckU7NEJBQ3BCO29CQUNKO2dCQUNGO2dCQUNBLElBQUkwRixXQUFXO29CQUNiLElBQUlHLFdBQVcsSUFBSSxDQUFDTixTQUFTLEdBQUcsSUFBSSxDQUFDQSxTQUFTLEtBQUssSUFBSTtvQkFDdkQsT0FBTyxJQUFJLENBQUNsQixLQUFLLENBQUNyRSxTQUFTNkY7Z0JBQzdCO2dCQUNBLE9BQU8sSUFBSSxDQUFDeEIsS0FBSyxDQUFDckU7WUFDcEI7UUFDRjtRQUFHO1lBQ0RyQixLQUFLO1lBQ0xxQixPQUFPLFNBQVM4RixVQUFVOUYsS0FBSztnQkFDN0IsSUFBSWdELFFBQVEsSUFBSSxDQUFDQSxLQUFLO2dCQUN0QixJQUFJK0MsUUFBUS9DLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixJQUFJZ0QsT0FBT2hELEtBQUssQ0FBQ0EsTUFBTTdFLE1BQU0sR0FBRyxFQUFFO2dCQUNsQyxPQUFPNEgsU0FBU0MsT0FBT2hHLFNBQVMrRixTQUFTL0YsU0FBU2dHLE9BQU9oRyxTQUFTZ0csUUFBUWhHLFNBQVMrRjtZQUNyRjtRQUNGO0tBQUUsRUFBRTtRQUFDO1lBQ0hwSCxLQUFLO1lBQ0xxQixPQUFPLFNBQVNpRyxPQUFPbEcsR0FBRztnQkFDeEIsT0FBTyxJQUFJc0YsWUFBWXRGO1lBQ3pCO1FBQ0Y7S0FBRTtJQUNGLE9BQU9zRjtBQUNULElBQUk7QUFDSnpGLGdCQUFnQnlGLGFBQWEsT0FBTztBQUM3QixJQUFJYSxzQkFBc0IsU0FBU0Esb0JBQW9CQyxPQUFPO0lBQ25FLElBQUlDLFNBQVM1SCxPQUFPVyxJQUFJLENBQUNnSCxTQUFTaEUsTUFBTSxDQUFDLFNBQVVrRSxHQUFHLEVBQUUxSCxHQUFHO1FBQ3pELE9BQU9jLGNBQWNBLGNBQWMsQ0FBQyxHQUFHNEcsTUFBTSxDQUFDLEdBQUd6RyxnQkFBZ0IsQ0FBQyxHQUFHakIsS0FBSzBHLFlBQVlZLE1BQU0sQ0FBQ0UsT0FBTyxDQUFDeEgsSUFBSTtJQUMzRyxHQUFHLENBQUM7SUFDSixPQUFPYyxjQUFjQSxjQUFjLENBQUMsR0FBRzJHLFNBQVMsQ0FBQyxHQUFHO1FBQ2xENUcsT0FBTyxTQUFTQSxNQUFNOEcsS0FBSztZQUN6QixJQUFJQyxRQUFRN0csVUFBVXZCLE1BQU0sR0FBRyxLQUFLdUIsU0FBUyxDQUFDLEVBQUUsS0FBSytGLFlBQVkvRixTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsR0FDL0VnRyxZQUFZYSxNQUFNYixTQUFTLEVBQzNCQyxXQUFXWSxNQUFNWixRQUFRO1lBQzNCLE9BQU9yRix1REFBU0EsQ0FBQ2dHLE9BQU8sU0FBVXRHLEtBQUssRUFBRXdHLEtBQUs7Z0JBQzVDLE9BQU9KLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDaEgsS0FBSyxDQUFDUSxPQUFPO29CQUNoQzBGLFdBQVdBO29CQUNYQyxVQUFVQTtnQkFDWjtZQUNGO1FBQ0Y7UUFDQUcsV0FBVyxTQUFTQSxVQUFVUSxLQUFLO1lBQ2pDLE9BQU8vRixtREFBS0EsQ0FBQytGLE9BQU8sU0FBVXRHLEtBQUssRUFBRXdHLEtBQUs7Z0JBQ3hDLE9BQU9KLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDVixTQUFTLENBQUM5RjtZQUNqQztRQUNGO0lBQ0Y7QUFDRixFQUFFO0FBRUY7O3VHQUV1RyxHQUNoRyxTQUFTeUcsZUFBZUMsS0FBSztJQUNsQyxPQUFPLENBQUNBLFFBQVEsTUFBTSxHQUFFLElBQUs7QUFDL0I7QUFFQTs7OztDQUlDLEdBQ00sSUFBSUMsMEJBQTBCLFNBQVNBLHdCQUF3QkMsS0FBSztJQUN6RSxJQUFJeEYsUUFBUXdGLE1BQU14RixLQUFLLEVBQ3JCQyxTQUFTdUYsTUFBTXZGLE1BQU07SUFDdkIsSUFBSXFGLFFBQVFoSCxVQUFVdkIsTUFBTSxHQUFHLEtBQUt1QixTQUFTLENBQUMsRUFBRSxLQUFLK0YsWUFBWS9GLFNBQVMsQ0FBQyxFQUFFLEdBQUc7SUFDaEYsZ0NBQWdDO0lBQ2hDLElBQUltSCxrQkFBa0JKLGVBQWVDO0lBQ3JDLElBQUlJLGVBQWVELGtCQUFrQmpELEtBQUttRCxFQUFFLEdBQUc7SUFFL0M7cUVBQ21FLEdBQ25FLElBQUlDLGlCQUFpQnBELEtBQUtxRCxJQUFJLENBQUM1RixTQUFTRDtJQUN4QyxJQUFJOEYsY0FBY0osZUFBZUUsa0JBQWtCRixlQUFlbEQsS0FBS21ELEVBQUUsR0FBR0MsaUJBQWlCM0YsU0FBU3VDLEtBQUt1RCxHQUFHLENBQUNMLGdCQUFnQjFGLFFBQVF3QyxLQUFLd0QsR0FBRyxDQUFDTjtJQUNoSixPQUFPbEQsS0FBS3NCLEdBQUcsQ0FBQ2dDO0FBQ2xCLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0NhcnRlc2lhblV0aWxzLmpzP2YwN2QiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgbWFwVmFsdWVzIGZyb20gJ2xvZGFzaC9tYXBWYWx1ZXMnO1xuaW1wb3J0IGV2ZXJ5IGZyb20gJ2xvZGFzaC9ldmVyeSc7XG5pbXBvcnQgeyBnZXRUaWNrc09mU2NhbGUsIHBhcnNlU2NhbGUsIGNoZWNrRG9tYWluT2ZTY2FsZSwgZ2V0QmFuZFNpemVPZkF4aXMgfSBmcm9tICcuL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgZmluZENoaWxkQnlUeXBlIH0gZnJvbSAnLi9SZWFjdFV0aWxzJztcbmltcG9ydCB7IGdldFBlcmNlbnRWYWx1ZSB9IGZyb20gJy4vRGF0YVV0aWxzJztcbmltcG9ydCB7IEJhciB9IGZyb20gJy4uL2NhcnRlc2lhbi9CYXInO1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2NhbGUgZnVuY3Rpb24sIHBvc2l0aW9uLCB3aWR0aCwgaGVpZ2h0IG9mIGF4ZXNcbiAqIEBwYXJhbSAge09iamVjdH0gcHJvcHMgICAgIExhdGVzdCBwcm9wc1xuICogQHBhcmFtICB7T2JqZWN0fSBheGlzTWFwICAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYXhlc1xuICogQHBhcmFtICB7T2JqZWN0fSBvZmZzZXQgICAgVGhlIG9mZnNldCBvZiBtYWluIHBhcnQgaW4gdGhlIHN2ZyBlbGVtZW50XG4gKiBAcGFyYW0gIHtTdHJpbmd9IGF4aXNUeXBlICBUaGUgdHlwZSBvZiBheGVzLCB4LWF4aXMgb3IgeS1heGlzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGNoYXJ0TmFtZSBUaGUgbmFtZSBvZiBjaGFydFxuICogQHJldHVybiB7T2JqZWN0fSBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCB2YXIgZm9ybWF0QXhpc01hcCA9IGZ1bmN0aW9uIGZvcm1hdEF4aXNNYXAocHJvcHMsIGF4aXNNYXAsIG9mZnNldCwgYXhpc1R5cGUsIGNoYXJ0TmFtZSkge1xuICB2YXIgd2lkdGggPSBwcm9wcy53aWR0aCxcbiAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBpZHMgPSBPYmplY3Qua2V5cyhheGlzTWFwKTtcbiAgdmFyIHN0ZXBzID0ge1xuICAgIGxlZnQ6IG9mZnNldC5sZWZ0LFxuICAgIGxlZnRNaXJyb3I6IG9mZnNldC5sZWZ0LFxuICAgIHJpZ2h0OiB3aWR0aCAtIG9mZnNldC5yaWdodCxcbiAgICByaWdodE1pcnJvcjogd2lkdGggLSBvZmZzZXQucmlnaHQsXG4gICAgdG9wOiBvZmZzZXQudG9wLFxuICAgIHRvcE1pcnJvcjogb2Zmc2V0LnRvcCxcbiAgICBib3R0b206IGhlaWdodCAtIG9mZnNldC5ib3R0b20sXG4gICAgYm90dG9tTWlycm9yOiBoZWlnaHQgLSBvZmZzZXQuYm90dG9tXG4gIH07XG4gIHZhciBoYXNCYXIgPSAhIWZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgQmFyKTtcbiAgcmV0dXJuIGlkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgYXhpcyA9IGF4aXNNYXBbaWRdO1xuICAgIHZhciBvcmllbnRhdGlvbiA9IGF4aXMub3JpZW50YXRpb24sXG4gICAgICBkb21haW4gPSBheGlzLmRvbWFpbixcbiAgICAgIF9heGlzJHBhZGRpbmcgPSBheGlzLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX2F4aXMkcGFkZGluZyA9PT0gdm9pZCAwID8ge30gOiBfYXhpcyRwYWRkaW5nLFxuICAgICAgbWlycm9yID0gYXhpcy5taXJyb3IsXG4gICAgICByZXZlcnNlZCA9IGF4aXMucmV2ZXJzZWQ7XG4gICAgdmFyIG9mZnNldEtleSA9IFwiXCIuY29uY2F0KG9yaWVudGF0aW9uKS5jb25jYXQobWlycm9yID8gJ01pcnJvcicgOiAnJyk7XG4gICAgdmFyIGNhbGN1bGF0ZWRQYWRkaW5nLCByYW5nZSwgeCwgeSwgbmVlZFNwYWNlO1xuICAgIGlmIChheGlzLnR5cGUgPT09ICdudW1iZXInICYmIChheGlzLnBhZGRpbmcgPT09ICdnYXAnIHx8IGF4aXMucGFkZGluZyA9PT0gJ25vLWdhcCcpKSB7XG4gICAgICB2YXIgZGlmZiA9IGRvbWFpblsxXSAtIGRvbWFpblswXTtcbiAgICAgIHZhciBzbWFsbGVzdERpc3RhbmNlQmV0d2VlblZhbHVlcyA9IEluZmluaXR5O1xuICAgICAgdmFyIHNvcnRlZFZhbHVlcyA9IGF4aXMuY2F0ZWdvcmljYWxEb21haW4uc29ydCgpO1xuICAgICAgc29ydGVkVmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgc21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMgPSBNYXRoLm1pbigodmFsdWUgfHwgMCkgLSAoc29ydGVkVmFsdWVzW2luZGV4IC0gMV0gfHwgMCksIHNtYWxsZXN0RGlzdGFuY2VCZXR3ZWVuVmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHNtYWxsZXN0RGlzdGFuY2VCZXR3ZWVuVmFsdWVzKSkge1xuICAgICAgICB2YXIgc21hbGxlc3REaXN0YW5jZUluUGVyY2VudCA9IHNtYWxsZXN0RGlzdGFuY2VCZXR3ZWVuVmFsdWVzIC8gZGlmZjtcbiAgICAgICAgdmFyIHJhbmdlV2lkdGggPSBheGlzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/IG9mZnNldC5oZWlnaHQgOiBvZmZzZXQud2lkdGg7XG4gICAgICAgIGlmIChheGlzLnBhZGRpbmcgPT09ICdnYXAnKSB7XG4gICAgICAgICAgY2FsY3VsYXRlZFBhZGRpbmcgPSBzbWFsbGVzdERpc3RhbmNlSW5QZXJjZW50ICogcmFuZ2VXaWR0aCAvIDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF4aXMucGFkZGluZyA9PT0gJ25vLWdhcCcpIHtcbiAgICAgICAgICB2YXIgZ2FwID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLmJhckNhdGVnb3J5R2FwLCBzbWFsbGVzdERpc3RhbmNlSW5QZXJjZW50ICogcmFuZ2VXaWR0aCk7XG4gICAgICAgICAgdmFyIGhhbGZCYW5kID0gc21hbGxlc3REaXN0YW5jZUluUGVyY2VudCAqIHJhbmdlV2lkdGggLyAyO1xuICAgICAgICAgIGNhbGN1bGF0ZWRQYWRkaW5nID0gaGFsZkJhbmQgLSBnYXAgLSAoaGFsZkJhbmQgLSBnYXApIC8gcmFuZ2VXaWR0aCAqIGdhcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYXhpc1R5cGUgPT09ICd4QXhpcycpIHtcbiAgICAgIHJhbmdlID0gW29mZnNldC5sZWZ0ICsgKHBhZGRpbmcubGVmdCB8fCAwKSArIChjYWxjdWxhdGVkUGFkZGluZyB8fCAwKSwgb2Zmc2V0LmxlZnQgKyBvZmZzZXQud2lkdGggLSAocGFkZGluZy5yaWdodCB8fCAwKSAtIChjYWxjdWxhdGVkUGFkZGluZyB8fCAwKV07XG4gICAgfSBlbHNlIGlmIChheGlzVHlwZSA9PT0gJ3lBeGlzJykge1xuICAgICAgcmFuZ2UgPSBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IFtvZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodCAtIChwYWRkaW5nLmJvdHRvbSB8fCAwKSwgb2Zmc2V0LnRvcCArIChwYWRkaW5nLnRvcCB8fCAwKV0gOiBbb2Zmc2V0LnRvcCArIChwYWRkaW5nLnRvcCB8fCAwKSArIChjYWxjdWxhdGVkUGFkZGluZyB8fCAwKSwgb2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQgLSAocGFkZGluZy5ib3R0b20gfHwgMCkgLSAoY2FsY3VsYXRlZFBhZGRpbmcgfHwgMCldO1xuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZSA9IGF4aXMucmFuZ2U7XG4gICAgfVxuICAgIGlmIChyZXZlcnNlZCkge1xuICAgICAgcmFuZ2UgPSBbcmFuZ2VbMV0sIHJhbmdlWzBdXTtcbiAgICB9XG4gICAgdmFyIF9wYXJzZVNjYWxlID0gcGFyc2VTY2FsZShheGlzLCBjaGFydE5hbWUsIGhhc0JhciksXG4gICAgICBzY2FsZSA9IF9wYXJzZVNjYWxlLnNjYWxlLFxuICAgICAgcmVhbFNjYWxlVHlwZSA9IF9wYXJzZVNjYWxlLnJlYWxTY2FsZVR5cGU7XG4gICAgc2NhbGUuZG9tYWluKGRvbWFpbikucmFuZ2UocmFuZ2UpO1xuICAgIGNoZWNrRG9tYWluT2ZTY2FsZShzY2FsZSk7XG4gICAgdmFyIHRpY2tzID0gZ2V0VGlja3NPZlNjYWxlKHNjYWxlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB7fSwge1xuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZVxuICAgIH0pKTtcbiAgICBpZiAoYXhpc1R5cGUgPT09ICd4QXhpcycpIHtcbiAgICAgIG5lZWRTcGFjZSA9IG9yaWVudGF0aW9uID09PSAndG9wJyAmJiAhbWlycm9yIHx8IG9yaWVudGF0aW9uID09PSAnYm90dG9tJyAmJiBtaXJyb3I7XG4gICAgICB4ID0gb2Zmc2V0LmxlZnQ7XG4gICAgICB5ID0gc3RlcHNbb2Zmc2V0S2V5XSAtIG5lZWRTcGFjZSAqIGF4aXMuaGVpZ2h0O1xuICAgIH0gZWxzZSBpZiAoYXhpc1R5cGUgPT09ICd5QXhpcycpIHtcbiAgICAgIG5lZWRTcGFjZSA9IG9yaWVudGF0aW9uID09PSAnbGVmdCcgJiYgIW1pcnJvciB8fCBvcmllbnRhdGlvbiA9PT0gJ3JpZ2h0JyAmJiBtaXJyb3I7XG4gICAgICB4ID0gc3RlcHNbb2Zmc2V0S2V5XSAtIG5lZWRTcGFjZSAqIGF4aXMud2lkdGg7XG4gICAgICB5ID0gb2Zmc2V0LnRvcDtcbiAgICB9XG4gICAgdmFyIGZpbmFsQXhpcyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBheGlzKSwgdGlja3MpLCB7fSwge1xuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZSxcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5LFxuICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgd2lkdGg6IGF4aXNUeXBlID09PSAneEF4aXMnID8gb2Zmc2V0LndpZHRoIDogYXhpcy53aWR0aCxcbiAgICAgIGhlaWdodDogYXhpc1R5cGUgPT09ICd5QXhpcycgPyBvZmZzZXQuaGVpZ2h0IDogYXhpcy5oZWlnaHRcbiAgICB9KTtcbiAgICBmaW5hbEF4aXMuYmFuZFNpemUgPSBnZXRCYW5kU2l6ZU9mQXhpcyhmaW5hbEF4aXMsIHRpY2tzKTtcbiAgICBpZiAoIWF4aXMuaGlkZSAmJiBheGlzVHlwZSA9PT0gJ3hBeGlzJykge1xuICAgICAgc3RlcHNbb2Zmc2V0S2V5XSArPSAobmVlZFNwYWNlID8gLTEgOiAxKSAqIGZpbmFsQXhpcy5oZWlnaHQ7XG4gICAgfSBlbHNlIGlmICghYXhpcy5oaWRlKSB7XG4gICAgICBzdGVwc1tvZmZzZXRLZXldICs9IChuZWVkU3BhY2UgPyAtMSA6IDEpICogZmluYWxBeGlzLndpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBpZCwgZmluYWxBeGlzKSk7XG4gIH0sIHt9KTtcbn07XG5leHBvcnQgdmFyIHJlY3RXaXRoUG9pbnRzID0gZnVuY3Rpb24gcmVjdFdpdGhQb2ludHMoX3JlZiwgX3JlZjIpIHtcbiAgdmFyIHgxID0gX3JlZi54LFxuICAgIHkxID0gX3JlZi55O1xuICB2YXIgeDIgPSBfcmVmMi54LFxuICAgIHkyID0gX3JlZjIueTtcbiAgcmV0dXJuIHtcbiAgICB4OiBNYXRoLm1pbih4MSwgeDIpLFxuICAgIHk6IE1hdGgubWluKHkxLCB5MiksXG4gICAgd2lkdGg6IE1hdGguYWJzKHgyIC0geDEpLFxuICAgIGhlaWdodDogTWF0aC5hYnMoeTIgLSB5MSlcbiAgfTtcbn07XG5cbi8qKlxuICogQ29tcHV0ZSB0aGUgeCwgeSwgd2lkdGgsIGFuZCBoZWlnaHQgb2YgYSBib3ggZnJvbSB0d28gcmVmZXJlbmNlIHBvaW50cy5cbiAqIEBwYXJhbSAge09iamVjdH0gY29vcmRzICAgICB4MSwgeDIsIHkxLCBhbmQgeTJcbiAqIEByZXR1cm4ge09iamVjdH0gb2JqZWN0XG4gKi9cbmV4cG9ydCB2YXIgcmVjdFdpdGhDb29yZHMgPSBmdW5jdGlvbiByZWN0V2l0aENvb3JkcyhfcmVmMykge1xuICB2YXIgeDEgPSBfcmVmMy54MSxcbiAgICB5MSA9IF9yZWYzLnkxLFxuICAgIHgyID0gX3JlZjMueDIsXG4gICAgeTIgPSBfcmVmMy55MjtcbiAgcmV0dXJuIHJlY3RXaXRoUG9pbnRzKHtcbiAgICB4OiB4MSxcbiAgICB5OiB5MVxuICB9LCB7XG4gICAgeDogeDIsXG4gICAgeTogeTJcbiAgfSk7XG59O1xuZXhwb3J0IHZhciBTY2FsZUhlbHBlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNjYWxlSGVscGVyKHNjYWxlKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNjYWxlSGVscGVyKTtcbiAgICB0aGlzLnNjYWxlID0gc2NhbGU7XG4gIH1cbiAgX2NyZWF0ZUNsYXNzKFNjYWxlSGVscGVyLCBbe1xuICAgIGtleTogXCJkb21haW5cIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYWxlLmRvbWFpbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmFuZ2VcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjYWxlLnJhbmdlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyYW5nZU1pblwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UoKVswXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmFuZ2VNYXhcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlKClbMV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImJhbmR3aWR0aFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbGUuYmFuZHdpZHRoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhcHBseVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhcHBseSh2YWx1ZSkge1xuICAgICAgdmFyIF9yZWY0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgICAgYmFuZEF3YXJlID0gX3JlZjQuYmFuZEF3YXJlLFxuICAgICAgICBwb3NpdGlvbiA9IF9yZWY0LnBvc2l0aW9uO1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbikge1xuICAgICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IHRoaXMuYmFuZHdpZHRoID8gdGhpcy5iYW5kd2lkdGgoKSAvIDIgOiAwO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSkgKyBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdmFyIF9vZmZzZXQgPSB0aGlzLmJhbmR3aWR0aCA/IHRoaXMuYmFuZHdpZHRoKCkgOiAwO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSkgKyBfb2Zmc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjYWxlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJhbmRBd2FyZSkge1xuICAgICAgICB2YXIgX29mZnNldDIgPSB0aGlzLmJhbmR3aWR0aCA/IHRoaXMuYmFuZHdpZHRoKCkgLyAyIDogMDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUodmFsdWUpICsgX29mZnNldDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zY2FsZSh2YWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzSW5SYW5nZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0luUmFuZ2UodmFsdWUpIHtcbiAgICAgIHZhciByYW5nZSA9IHRoaXMucmFuZ2UoKTtcbiAgICAgIHZhciBmaXJzdCA9IHJhbmdlWzBdO1xuICAgICAgdmFyIGxhc3QgPSByYW5nZVtyYW5nZS5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBmaXJzdCA8PSBsYXN0ID8gdmFsdWUgPj0gZmlyc3QgJiYgdmFsdWUgPD0gbGFzdCA6IHZhbHVlID49IGxhc3QgJiYgdmFsdWUgPD0gZmlyc3Q7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiY3JlYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNyZWF0ZShvYmopIHtcbiAgICAgIHJldHVybiBuZXcgU2NhbGVIZWxwZXIob2JqKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIFNjYWxlSGVscGVyO1xufSgpO1xuX2RlZmluZVByb3BlcnR5KFNjYWxlSGVscGVyLCBcIkVQU1wiLCAxZS00KTtcbmV4cG9ydCB2YXIgY3JlYXRlTGFiZWxlZFNjYWxlcyA9IGZ1bmN0aW9uIGNyZWF0ZUxhYmVsZWRTY2FsZXMob3B0aW9ucykge1xuICB2YXIgc2NhbGVzID0gT2JqZWN0LmtleXMob3B0aW9ucykucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGtleSkge1xuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlcyksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGtleSwgU2NhbGVIZWxwZXIuY3JlYXRlKG9wdGlvbnNba2V5XSkpKTtcbiAgfSwge30pO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzY2FsZXMpLCB7fSwge1xuICAgIGFwcGx5OiBmdW5jdGlvbiBhcHBseShjb29yZCkge1xuICAgICAgdmFyIF9yZWY1ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcbiAgICAgICAgYmFuZEF3YXJlID0gX3JlZjUuYmFuZEF3YXJlLFxuICAgICAgICBwb3NpdGlvbiA9IF9yZWY1LnBvc2l0aW9uO1xuICAgICAgcmV0dXJuIG1hcFZhbHVlcyhjb29yZCwgZnVuY3Rpb24gKHZhbHVlLCBsYWJlbCkge1xuICAgICAgICByZXR1cm4gc2NhbGVzW2xhYmVsXS5hcHBseSh2YWx1ZSwge1xuICAgICAgICAgIGJhbmRBd2FyZTogYmFuZEF3YXJlLFxuICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgaXNJblJhbmdlOiBmdW5jdGlvbiBpc0luUmFuZ2UoY29vcmQpIHtcbiAgICAgIHJldHVybiBldmVyeShjb29yZCwgZnVuY3Rpb24gKHZhbHVlLCBsYWJlbCkge1xuICAgICAgICByZXR1cm4gc2NhbGVzW2xhYmVsXS5pc0luUmFuZ2UodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKiBOb3JtYWxpemVzIHRoZSBhbmdsZSBzbyB0aGF0IDAgPD0gYW5nbGUgPCAxODAuXG4gKiBAcGFyYW0ge251bWJlcn0gYW5nbGUgQW5nbGUgaW4gZGVncmVlcy5cbiAqIEByZXR1cm4ge251bWJlcn0gdGhlIG5vcm1hbGl6ZWQgYW5nbGUgd2l0aCBhIHZhbHVlIG9mIGF0IGxlYXN0IDAgYW5kIG5ldmVyIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMTgwLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUFuZ2xlKGFuZ2xlKSB7XG4gIHJldHVybiAoYW5nbGUgJSAxODAgKyAxODApICUgMTgwO1xufVxuXG4vKiogQ2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3QgaG9yaXpvbnRhbCBsaW5lIHRoYXQgZml0cyBpbnNpZGUgYSByZWN0YW5nbGUgdGhhdCBpcyBkaXNwbGF5ZWQgYXQgYW4gYW5nbGUuXG4gKiBAcGFyYW0ge09iamVjdH0gc2l6ZSBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IGluIGEgaG9yaXpvbnRhbCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBhbmdsZSBBbmdsZSBpbiBkZWdyZWVzIGluIHdoaWNoIHRoZSB0ZXh0IGlzIGRpc3BsYXllZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHdpZHRoIG9mIHRoZSBsYXJnZXN0IGhvcml6b250YWwgbGluZSB0aGF0IGZpdHMgaW5zaWRlIGEgcmVjdGFuZ2xlIHRoYXQgaXMgZGlzcGxheWVkIGF0IGFuIGFuZ2xlLlxuICovXG5leHBvcnQgdmFyIGdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoID0gZnVuY3Rpb24gZ2V0QW5nbGVkUmVjdGFuZ2xlV2lkdGgoX3JlZjYpIHtcbiAgdmFyIHdpZHRoID0gX3JlZjYud2lkdGgsXG4gICAgaGVpZ2h0ID0gX3JlZjYuaGVpZ2h0O1xuICB2YXIgYW5nbGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIC8vIEVuc3VyZSBhbmdsZSBpcyA+PSAwICYmIDwgMTgwXG4gIHZhciBub3JtYWxpemVkQW5nbGUgPSBub3JtYWxpemVBbmdsZShhbmdsZSk7XG4gIHZhciBhbmdsZVJhZGlhbnMgPSBub3JtYWxpemVkQW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xuXG4gIC8qIERlcGVuZGluZyBvbiB0aGUgaGVpZ2h0IGFuZCB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xlLCB3ZSBtYXkgbmVlZCB0byB1c2UgZGlmZmVyZW50IGZvcm11bGFzIHRvIGNhbGN1bGF0ZSB0aGUgYW5nbGVkXG4gICAqIHdpZHRoLiBUaGlzIHRocmVzaG9sZCBkZWZpbmVzIHdoZW4gZWFjaCBmb3JtdWxhIHNob3VsZCBraWNrIGluLiAqL1xuICB2YXIgYW5nbGVUaHJlc2hvbGQgPSBNYXRoLmF0YW4oaGVpZ2h0IC8gd2lkdGgpO1xuICB2YXIgYW5nbGVkV2lkdGggPSBhbmdsZVJhZGlhbnMgPiBhbmdsZVRocmVzaG9sZCAmJiBhbmdsZVJhZGlhbnMgPCBNYXRoLlBJIC0gYW5nbGVUaHJlc2hvbGQgPyBoZWlnaHQgLyBNYXRoLnNpbihhbmdsZVJhZGlhbnMpIDogd2lkdGggLyBNYXRoLmNvcyhhbmdsZVJhZGlhbnMpO1xuICByZXR1cm4gTWF0aC5hYnMoYW5nbGVkV2lkdGgpO1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJpIiwibGVuZ3RoIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJvYmoiLCJ2YWx1ZSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIk51bWJlciIsIm1hcFZhbHVlcyIsImV2ZXJ5IiwiZ2V0VGlja3NPZlNjYWxlIiwicGFyc2VTY2FsZSIsImNoZWNrRG9tYWluT2ZTY2FsZSIsImdldEJhbmRTaXplT2ZBeGlzIiwiZmluZENoaWxkQnlUeXBlIiwiZ2V0UGVyY2VudFZhbHVlIiwiQmFyIiwiZm9ybWF0QXhpc01hcCIsImF4aXNNYXAiLCJvZmZzZXQiLCJheGlzVHlwZSIsImNoYXJ0TmFtZSIsIndpZHRoIiwiaGVpZ2h0IiwibGF5b3V0IiwiY2hpbGRyZW4iLCJpZHMiLCJzdGVwcyIsImxlZnQiLCJsZWZ0TWlycm9yIiwicmlnaHQiLCJyaWdodE1pcnJvciIsInRvcCIsInRvcE1pcnJvciIsImJvdHRvbSIsImJvdHRvbU1pcnJvciIsImhhc0JhciIsInJlZHVjZSIsInJlc3VsdCIsImlkIiwiYXhpcyIsIm9yaWVudGF0aW9uIiwiZG9tYWluIiwiX2F4aXMkcGFkZGluZyIsInBhZGRpbmciLCJtaXJyb3IiLCJyZXZlcnNlZCIsIm9mZnNldEtleSIsImNvbmNhdCIsImNhbGN1bGF0ZWRQYWRkaW5nIiwicmFuZ2UiLCJ4IiwieSIsIm5lZWRTcGFjZSIsInR5cGUiLCJkaWZmIiwic21hbGxlc3REaXN0YW5jZUJldHdlZW5WYWx1ZXMiLCJJbmZpbml0eSIsInNvcnRlZFZhbHVlcyIsImNhdGVnb3JpY2FsRG9tYWluIiwic29ydCIsImluZGV4IiwiTWF0aCIsIm1pbiIsImlzRmluaXRlIiwic21hbGxlc3REaXN0YW5jZUluUGVyY2VudCIsInJhbmdlV2lkdGgiLCJnYXAiLCJiYXJDYXRlZ29yeUdhcCIsImhhbGZCYW5kIiwiX3BhcnNlU2NhbGUiLCJzY2FsZSIsInJlYWxTY2FsZVR5cGUiLCJ0aWNrcyIsImZpbmFsQXhpcyIsImJhbmRTaXplIiwiaGlkZSIsInJlY3RXaXRoUG9pbnRzIiwiX3JlZiIsIl9yZWYyIiwieDEiLCJ5MSIsIngyIiwieTIiLCJhYnMiLCJyZWN0V2l0aENvb3JkcyIsIl9yZWYzIiwiU2NhbGVIZWxwZXIiLCJnZXQiLCJiYW5kd2lkdGgiLCJfcmVmNCIsInVuZGVmaW5lZCIsImJhbmRBd2FyZSIsInBvc2l0aW9uIiwiX29mZnNldCIsIl9vZmZzZXQyIiwiaXNJblJhbmdlIiwiZmlyc3QiLCJsYXN0IiwiY3JlYXRlIiwiY3JlYXRlTGFiZWxlZFNjYWxlcyIsIm9wdGlvbnMiLCJzY2FsZXMiLCJyZXMiLCJjb29yZCIsIl9yZWY1IiwibGFiZWwiLCJub3JtYWxpemVBbmdsZSIsImFuZ2xlIiwiZ2V0QW5nbGVkUmVjdGFuZ2xlV2lkdGgiLCJfcmVmNiIsIm5vcm1hbGl6ZWRBbmdsZSIsImFuZ2xlUmFkaWFucyIsIlBJIiwiYW5nbGVUaHJlc2hvbGQiLCJhdGFuIiwiYW5nbGVkV2lkdGgiLCJzaW4iLCJjb3MiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ChartUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/ChartUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MAX_VALUE_REG: () => (/* binding */ MAX_VALUE_REG),\n/* harmony export */ MIN_VALUE_REG: () => (/* binding */ MIN_VALUE_REG),\n/* harmony export */ appendOffsetOfLegend: () => (/* binding */ appendOffsetOfLegend),\n/* harmony export */ calculateActiveTickIndex: () => (/* binding */ calculateActiveTickIndex),\n/* harmony export */ checkDomainOfScale: () => (/* binding */ checkDomainOfScale),\n/* harmony export */ combineEventHandlers: () => (/* binding */ combineEventHandlers),\n/* harmony export */ findPositionOfBar: () => (/* binding */ findPositionOfBar),\n/* harmony export */ getBandSizeOfAxis: () => (/* binding */ getBandSizeOfAxis),\n/* harmony export */ getBarPosition: () => (/* binding */ getBarPosition),\n/* harmony export */ getBarSizeList: () => (/* binding */ getBarSizeList),\n/* harmony export */ getBaseValueOfBar: () => (/* binding */ getBaseValueOfBar),\n/* harmony export */ getCateCoordinateOfBar: () => (/* binding */ getCateCoordinateOfBar),\n/* harmony export */ getCateCoordinateOfLine: () => (/* binding */ getCateCoordinateOfLine),\n/* harmony export */ getCoordinatesOfGrid: () => (/* binding */ getCoordinatesOfGrid),\n/* harmony export */ getDomainOfDataByKey: () => (/* binding */ getDomainOfDataByKey),\n/* harmony export */ getDomainOfErrorBars: () => (/* binding */ getDomainOfErrorBars),\n/* harmony export */ getDomainOfItemsWithSameAxis: () => (/* binding */ getDomainOfItemsWithSameAxis),\n/* harmony export */ getDomainOfStackGroups: () => (/* binding */ getDomainOfStackGroups),\n/* harmony export */ getLegendProps: () => (/* reexport safe */ _getLegendProps__WEBPACK_IMPORTED_MODULE_14__.getLegendProps),\n/* harmony export */ getMainColorOfGraphicItem: () => (/* binding */ getMainColorOfGraphicItem),\n/* harmony export */ getStackGroupsByAxisId: () => (/* binding */ getStackGroupsByAxisId),\n/* harmony export */ getStackedData: () => (/* binding */ getStackedData),\n/* harmony export */ getStackedDataOfItem: () => (/* binding */ getStackedDataOfItem),\n/* harmony export */ getTicksOfAxis: () => (/* binding */ getTicksOfAxis),\n/* harmony export */ getTicksOfScale: () => (/* binding */ getTicksOfScale),\n/* harmony export */ getTooltipItem: () => (/* binding */ getTooltipItem),\n/* harmony export */ getValueByDataKey: () => (/* binding */ getValueByDataKey),\n/* harmony export */ isCategoricalAxis: () => (/* binding */ isCategoricalAxis),\n/* harmony export */ offsetPositive: () => (/* binding */ offsetPositive),\n/* harmony export */ offsetSign: () => (/* binding */ offsetSign),\n/* harmony export */ parseDomainOfCategoryAxis: () => (/* binding */ parseDomainOfCategoryAxis),\n/* harmony export */ parseErrorBarsOfAxis: () => (/* binding */ parseErrorBarsOfAxis),\n/* harmony export */ parseScale: () => (/* binding */ parseScale),\n/* harmony export */ parseSpecifiedDomain: () => (/* binding */ parseSpecifiedDomain),\n/* harmony export */ truncateByDomain: () => (/* binding */ truncateByDomain)\n/* harmony export */ });\n/* harmony import */ var victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! victory-vendor/d3-scale */ \"(ssr)/./node_modules/victory-vendor/es/d3-scale.js\");\n/* harmony import */ var victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! victory-vendor/d3-shape */ \"(ssr)/./node_modules/victory-vendor/es/d3-shape.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/max */ \"(ssr)/./node_modules/lodash/max.js\");\n/* harmony import */ var lodash_max__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_max__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_min__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/min */ \"(ssr)/./node_modules/lodash/min.js\");\n/* harmony import */ var lodash_min__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_min__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/flatMap */ \"(ssr)/./node_modules/lodash/flatMap.js\");\n/* harmony import */ var lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_flatMap__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/isNaN */ \"(ssr)/./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/upperFirst */ \"(ssr)/./node_modules/lodash/upperFirst.js\");\n/* harmony import */ var lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/isEqual */ \"(ssr)/./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! lodash/sortBy */ \"(ssr)/./node_modules/lodash/sortBy.js\");\n/* harmony import */ var lodash_sortBy__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(lodash_sortBy__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var recharts_scale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! recharts-scale */ \"(ssr)/./node_modules/recharts-scale/es6/index.js\");\n/* harmony import */ var _cartesian_ErrorBar__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../cartesian/ErrorBar */ \"(ssr)/./node_modules/recharts/es6/cartesian/ErrorBar.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _getLegendProps__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./getLegendProps */ \"(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\n// Exported for backwards compatibility\n\nfunction getValueByDataKey(obj, dataKey, defaultValue) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(obj) || lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(dataKey)) {\n return defaultValue;\n }\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(dataKey)) {\n return lodash_get__WEBPACK_IMPORTED_MODULE_7___default()(obj, dataKey, defaultValue);\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(dataKey)) {\n return dataKey(obj);\n }\n return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */ function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = lodash_flatMap__WEBPACK_IMPORTED_MODULE_8___default()(data, function(entry) {\n return getValueByDataKey(entry, key);\n });\n if (type === \"number\") {\n // @ts-expect-error parseFloat type only accepts strings\n var domain = flattenData.filter(function(entry) {\n return (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(entry) || parseFloat(entry);\n });\n return domain.length ? [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(domain),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(domain)\n ] : [\n Infinity,\n -Infinity\n ];\n }\n var validateData = filterNil ? flattenData.filter(function(entry) {\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry);\n }) : flattenData;\n // Supports x-axis of Date type\n return validateData.map(function(entry) {\n return (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(entry) || entry instanceof Date ? entry : \"\";\n });\n}\nvar calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n var _ticks$length;\n var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n var index = -1;\n var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n // if there are 1 or less ticks ticks then the active tick is at index 0\n if (len <= 1) {\n return 0;\n }\n if (axis && axis.axisType === \"angleAxis\" && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range;\n // ticks are distributed in a circle\n for(var i = 0; i < len; i++){\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(cur - before) !== (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(after - cur)) {\n var diffInterval = [];\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(after - cur) === (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n var sameInterval = [\n Math.min(cur, (sameDirectionCoord + cur) / 2),\n Math.max(cur, (sameDirectionCoord + cur) / 2)\n ];\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var minValue = Math.min(before, after);\n var maxValue = Math.max(before, after);\n if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for(var _i = 0; _i < len; _i++){\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */ var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var _ref = item, displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n var _item$props = item.props, stroke = _item$props.stroke, fill = _item$props.fill;\n var result;\n switch(displayName){\n case \"Line\":\n result = stroke;\n break;\n case \"Area\":\n case \"Radar\":\n result = stroke && stroke !== \"none\" ? stroke : fill;\n break;\n default:\n result = fill;\n break;\n }\n return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */ var getBarSizeList = function getBarSizeList(_ref2) {\n var globalSize = _ref2.barSize, totalSize = _ref2.totalSize, _ref2$stackGroups = _ref2.stackGroups, stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n if (!stackGroups) {\n return {};\n }\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n for(var i = 0, len = numericAxisIds.length; i < len; i++){\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n for(var j = 0, sLen = stackIds.length; j < sLen; j++){\n var _sgs$stackIds$j = sgs[stackIds[j]], items = _sgs$stackIds$j.items, cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function(item) {\n return (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.getDisplayName)(item.type).indexOf(\"Bar\") >= 0;\n });\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n if (!result[cateId]) {\n result[cateId] = [];\n }\n var barSize = lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(selfSize) ? globalSize : selfSize;\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(barSize) ? undefined : (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barSize, totalSize, 0)\n });\n }\n }\n }\n return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param {number} bandSize is the size of area where bars can render\n * @param {number | string} barGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n * Can be defined as number or percent string\n * @param {Array<object>} sizeList Sizes of all groups\n * @param {number} maxBarSize The maximum size of each bar\n * @return {Array<object>} The size and offset of each bar\n */ var getBarPosition = function getBarPosition(_ref3) {\n var barGap = _ref3.barGap, barCategoryGap = _ref3.barCategoryGap, bandSize = _ref3.bandSize, _ref3$sizeList = _ref3.sizeList, sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList, maxBarSize = _ref3.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barGap, bandSize, 0, true);\n var result;\n var initialValue = [];\n // whether or not is barSize setted by user\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n // @ts-expect-error the type check above does not check for type number explicitly\n var sum = sizeList.reduce(function(res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function(res, entry) {\n var newPosition = {\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n // @ts-expect-error the type check above does not check for type number explicitly\n size: useFull ? fullBarSize : entry.barSize\n }\n };\n var newRes = [].concat(_toConsumableArray(res), [\n newPosition\n ]);\n prev = newRes[newRes.length - 1].position;\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function(item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n return newRes;\n }, initialValue);\n } else {\n var _offset = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.getPercentValue)(barCategoryGap, bandSize, 0, true);\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function(res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [\n {\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }\n ]);\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function(item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n return newRes;\n }, initialValue);\n }\n return result;\n};\nvar appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n var children = props.children, width = props.width, margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendProps = (0,_getLegendProps__WEBPACK_IMPORTED_MODULE_14__.getLegendProps)({\n children: children,\n legendWidth: legendWidth\n });\n if (legendProps) {\n var _ref4 = legendBox || {}, boxWidth = _ref4.width, boxHeight = _ref4.height;\n var align = legendProps.align, verticalAlign = legendProps.verticalAlign, layout = legendProps.layout;\n if ((layout === \"vertical\" || layout === \"horizontal\" && verticalAlign === \"middle\") && align !== \"center\" && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(offset[align])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n }\n if ((layout === \"horizontal\" || layout === \"vertical\" && align === \"center\") && verticalAlign !== \"middle\" && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(offset[verticalAlign])) {\n return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n }\n }\n return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(axisType)) {\n return true;\n }\n if (layout === \"horizontal\") {\n return axisType === \"yAxis\";\n }\n if (layout === \"vertical\") {\n return axisType === \"xAxis\";\n }\n if (direction === \"x\") {\n return axisType === \"xAxis\";\n }\n if (direction === \"y\") {\n return axisType === \"yAxis\";\n }\n return true;\n};\nvar getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n var children = item.props.children;\n var errorBars = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.findAllByType)(children, _cartesian_ErrorBar__WEBPACK_IMPORTED_MODULE_17__.ErrorBar).filter(function(errorBarChild) {\n return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n });\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function(errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function(result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey);\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entryValue)) return result;\n var mainValue = Array.isArray(entryValue) ? [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(entryValue),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(entryValue)\n ] : [\n entryValue,\n entryValue\n ];\n var errorDomain = keys.reduce(function(prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n return [\n Math.min(lowerValue, prevErrorArr[0]),\n Math.max(upperValue, prevErrorArr[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n return [\n Math.min(errorDomain[0], result[0]),\n Math.max(errorDomain[1], result[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n return null;\n};\nvar parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n var domains = items.map(function(item) {\n return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n }).filter(function(entry) {\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry);\n });\n if (domains && domains.length) {\n return domains.reduce(function(result, entry) {\n return [\n Math.min(result[0], entry[0]),\n Math.max(result[1], entry[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {LayoutType} layout The type of layout\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */ var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n var domains = items.map(function(item) {\n var dataKey = item.props.dataKey;\n if (type === \"number\" && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n if (type === \"number\") {\n // Calculate the domain of number axis\n return domains.reduce(// @ts-expect-error if (type === number) means that the domain is numerical type\n // - but this link is missing in the type definition\n function(result, entry) {\n return [\n Math.min(result[0], entry[0]),\n Math.max(result[1], entry[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n }\n var tag = {};\n // Get the union set of category axis\n return domains.reduce(function(result, entry) {\n for(var i = 0, len = entry.length; i < len; i++){\n // @ts-expect-error Date cannot index an object\n if (!tag[entry[i]]) {\n // @ts-expect-error Date cannot index an object\n tag[entry[i]] = true;\n // @ts-expect-error Date cannot index an object\n result.push(entry[i]);\n }\n }\n return result;\n }, []);\n};\nvar isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n return layout === \"horizontal\" && axisType === \"xAxis\" || layout === \"vertical\" && axisType === \"yAxis\" || layout === \"centric\" && axisType === \"angleAxis\" || layout === \"radial\" && axisType === \"radiusAxis\";\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} minValue The minimun value of axis\n * @param {Number} maxValue The maximun value of axis\n * @param {boolean} syncWithTicks Synchronize grid lines with ticks or not\n * @return {Array} Coordinates\n */ var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n if (syncWithTicks) {\n return ticks.map(function(entry) {\n return entry.coordinate;\n });\n }\n var hasMin, hasMax;\n var values = ticks.map(function(entry) {\n if (entry.coordinate === minValue) {\n hasMin = true;\n }\n if (entry.coordinate === maxValue) {\n hasMax = true;\n }\n return entry.coordinate;\n });\n if (!hasMin) {\n values.push(minValue);\n }\n if (!hasMax) {\n values.push(maxValue);\n }\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */ var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain, type = axis.type, range = axis.range;\n var offsetForBand = axis.realScaleType === \"scaleBand\" ? scale.bandwidth() / 2 : 2;\n var offset = (isGrid || isAll) && type === \"category\" && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n offset = axis.axisType === \"angleAxis\" && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.mathSign)(range[0] - range[1]) * 2 * offset : offset;\n // The ticks set by user should only affect the ticks adjacent to axis line\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n var result = (axis.ticks || axis.niceTicks).map(function(entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n // If the scaleContent is not a number, the coordinate will be NaN.\n // That could be the case for example with a PointScale and a string as domain.\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n return result.filter(function(row) {\n return !lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(row.coordinate);\n });\n }\n // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n if (axis.isCategorical && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function(entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function(entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n // When axis has duplicated text, serial numbers are used to generate scale\n return scale.domain().map(function(entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */ var handlerWeakMap = new WeakMap();\nvar combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n if (typeof childHandler !== \"function\") {\n return defaultHandler;\n }\n if (!handlerWeakMap.has(defaultHandler)) {\n handlerWeakMap.set(defaultHandler, new WeakMap());\n }\n var childWeakMap = handlerWeakMap.get(defaultHandler);\n if (childWeakMap.has(childHandler)) {\n return childWeakMap.get(childHandler);\n }\n var combineHandler = function combineHandler() {\n defaultHandler.apply(void 0, arguments);\n childHandler.apply(void 0, arguments);\n };\n childWeakMap.set(childHandler, combineHandler);\n return combineHandler;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @param {Boolean} hasBar if it has a bar\n * @return {object} The scale function and resolved name\n */ var parseScale = function parseScale(axis, chartType, hasBar) {\n var scale = axis.scale, type = axis.type, layout = axis.layout, axisType = axis.axisType;\n if (scale === \"auto\") {\n if (layout === \"radial\" && axisType === \"radiusAxis\") {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleBand(),\n realScaleType: \"band\"\n };\n }\n if (layout === \"radial\" && axisType === \"angleAxis\") {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleLinear(),\n realScaleType: \"linear\"\n };\n }\n if (type === \"category\" && chartType && (chartType.indexOf(\"LineChart\") >= 0 || chartType.indexOf(\"AreaChart\") >= 0 || chartType.indexOf(\"ComposedChart\") >= 0 && !hasBar)) {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint(),\n realScaleType: \"point\"\n };\n }\n if (type === \"category\") {\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleBand(),\n realScaleType: \"band\"\n };\n }\n return {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scaleLinear(),\n realScaleType: \"linear\"\n };\n }\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_6___default()(scale)) {\n var name = \"scale\".concat(lodash_upperFirst__WEBPACK_IMPORTED_MODULE_10___default()(scale));\n return {\n scale: (victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__[name] || victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint)(),\n realScaleType: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__[name] ? name : \"point\"\n };\n }\n return lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(scale) ? {\n scale: scale\n } : {\n scale: victory_vendor_d3_scale__WEBPACK_IMPORTED_MODULE_0__.scalePoint(),\n realScaleType: \"point\"\n };\n};\nvar EPS = 1e-4;\nvar checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n if (!domain || domain.length <= 2) {\n return;\n }\n var len = domain.length;\n var range = scale.range();\n var minValue = Math.min(range[0], range[1]) - EPS;\n var maxValue = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n scale.domain([\n domain[0],\n domain[len - 1]\n ]);\n }\n};\nvar findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n for(var i = 0, len = barPosition.length; i < len; i++){\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n return null;\n};\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */ var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(domain[0]) || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(domain[1])) {\n return value;\n }\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n var result = [\n value[0],\n value[1]\n ];\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(value[0]) || value[0] < minValue) {\n result[0] = minValue;\n }\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(value[1]) || value[1] > maxValue) {\n result[1] = maxValue;\n }\n if (result[0] > maxValue) {\n result[0] = maxValue;\n }\n if (result[1] < minValue) {\n result[1] = minValue;\n }\n return result;\n};\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */ var offsetSign = function offsetSign(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for(var j = 0, m = series[0].length; j < m; ++j){\n var positive = 0;\n var negative = 0;\n for(var i = 0; i < n; ++i){\n var value = lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring, no-param-reassign */ if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */ }\n }\n};\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */ var offsetPositive = function offsetPositive(series) {\n var n = series.length;\n if (n <= 0) {\n return;\n }\n for(var j = 0, m = series[0].length; j < m; ++j){\n var positive = 0;\n for(var i = 0; i < n; ++i){\n var value = lodash_isNaN__WEBPACK_IMPORTED_MODULE_9___default()(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring, no-param-reassign */ if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = 0;\n series[i][j][1] = 0;\n }\n /* eslint-enable prefer-destructuring, no-param-reassign */ }\n }\n};\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */ var STACK_OFFSET_MAP = {\n sign: offsetSign,\n // @ts-expect-error definitelytyped types are incorrect\n expand: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetExpand,\n // @ts-expect-error definitelytyped types are incorrect\n none: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetNone,\n // @ts-expect-error definitelytyped types are incorrect\n silhouette: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetSilhouette,\n // @ts-expect-error definitelytyped types are incorrect\n wiggle: victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOffsetWiggle,\n positive: offsetPositive\n};\nvar getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function(item) {\n return item.props.dataKey;\n });\n var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n var stack = (0,victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stack)()// @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n .keys(dataKeys).value(function(d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(victory_vendor_d3_shape__WEBPACK_IMPORTED_MODULE_1__.stackOrderNone)// @ts-expect-error definitelytyped types are incorrect\n .offset(offsetAccessor);\n return stack(data);\n};\nvar getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n }\n // reversing items to affect render order (for layering)\n var items = reverseStackOrder ? _items.reverse() : _items;\n var parentStackGroupsInitialValue = {};\n var stackGroups = items.reduce(function(result, item) {\n var _item$props2 = item.props, stackId = _item$props2.stackId, hide = _item$props2.hide;\n if (hide) {\n return result;\n }\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[(0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.uniqueId)(\"_stackId_\")] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [\n item\n ]\n };\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n }, parentStackGroupsInitialValue);\n var axisStackGroupsInitialValue = {};\n return Object.keys(stackGroups).reduce(function(result, axisId) {\n var group = stackGroups[axisId];\n if (group.hasStack) {\n var stackGroupsInitialValue = {};\n group.stackGroups = Object.keys(group.stackGroups).reduce(function(res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, stackGroupsInitialValue);\n }\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n }, axisStackGroupsInitialValue);\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */ var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType, type = opts.type, tickCount = opts.tickCount, originalDomain = opts.originalDomain, allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n if (scaleType !== \"auto\" && scaleType !== \"linear\") {\n return null;\n }\n if (tickCount && type === \"number\" && originalDomain && (originalDomain[0] === \"auto\" || originalDomain[1] === \"auto\")) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n if (!domain.length) {\n return null;\n }\n var tickValues = (0,recharts_scale__WEBPACK_IMPORTED_MODULE_13__.getNiceTickValues)(domain, tickCount, allowDecimals);\n scale.domain([\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(tickValues),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(tickValues)\n ]);\n return {\n niceTicks: tickValues\n };\n }\n if (tickCount && type === \"number\") {\n var _domain = scale.domain();\n var _tickValues = (0,recharts_scale__WEBPACK_IMPORTED_MODULE_13__.getTickValuesFixedDomain)(_domain, tickCount, allowDecimals);\n return {\n niceTicks: _tickValues\n };\n }\n return null;\n};\nfunction getCateCoordinateOfLine(_ref5) {\n var axis = _ref5.axis, ticks = _ref5.ticks, bandSize = _ref5.bandSize, entry = _ref5.entry, index = _ref5.index, dataKey = _ref5.dataKey;\n if (axis.type === \"category\") {\n // find coordinate of category axis by the value of category\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n if (!axis.allowDuplicatedCategory && axis.dataKey && !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(entry[axis.dataKey])) {\n // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n var matchedTick = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.findEntryInArray)(ticks, \"value\", entry[axis.dataKey]);\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n var value = getValueByDataKey(entry, !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(dataKey) ? dataKey : axis.dataKey);\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(value) ? axis.scale(value) : null;\n}\nvar getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n var axis = _ref6.axis, ticks = _ref6.ticks, offset = _ref6.offset, bandSize = _ref6.bandSize, entry = _ref6.entry, index = _ref6.index;\n if (axis.type === \"category\") {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !lodash_isNil__WEBPACK_IMPORTED_MODULE_4___default()(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nvar getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n var numericAxis = _ref7.numericAxis;\n var domain = numericAxis.scale.domain();\n if (numericAxis.type === \"number\") {\n var minValue = Math.min(domain[0], domain[1]);\n var maxValue = Math.max(domain[0], domain[1]);\n if (minValue <= 0 && maxValue >= 0) {\n return 0;\n }\n if (maxValue < 0) {\n return maxValue;\n }\n return minValue;\n }\n return domain[0];\n};\nvar getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumOrStr)(stackId)) {\n var group = stackGroups[stackId];\n if (group) {\n var itemIndex = group.items.indexOf(item);\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function(result, entry) {\n return [\n lodash_min__WEBPACK_IMPORTED_MODULE_3___default()(entry.concat([\n result[0]\n ]).filter(_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)),\n lodash_max__WEBPACK_IMPORTED_MODULE_2___default()(entry.concat([\n result[1]\n ]).filter(_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber))\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n};\nvar getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function(result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function(res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [\n Math.min(res[0], s[0]),\n Math.max(res[1], s[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]);\n return [\n Math.min(domain[0], result[0]),\n Math.max(domain[1], result[1])\n ];\n }, [\n Infinity,\n -Infinity\n ]).map(function(result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nvar MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nvar MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nvar parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain)) {\n return specifiedDomain(dataDomain, allowDataOverflow);\n }\n if (!Array.isArray(specifiedDomain)) {\n return dataDomain;\n }\n var domain = [];\n /* eslint-disable prefer-destructuring */ if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_15__.isNumber)(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n domain[1] = dataDomain[1] + _value;\n } else if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */ return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @param {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */ var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n // @ts-expect-error we need to rethink scale type\n if (axis && axis.scale && axis.scale.bandwidth) {\n // @ts-expect-error we need to rethink scale type\n var bandWidth = axis.scale.bandwidth();\n if (!isBar || bandWidth > 0) {\n return bandWidth;\n }\n }\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = lodash_sortBy__WEBPACK_IMPORTED_MODULE_12___default()(ticks, function(o) {\n return o.coordinate;\n });\n var bandSize = Infinity;\n for(var i = 1, len = orderedTicks.length; i < len; i++){\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n return bandSize === Infinity ? 0 : bandSize;\n }\n return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis ReactElement\n * @returns {Array} domains\n */ var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n if (lodash_isEqual__WEBPACK_IMPORTED_MODULE_11___default()(specifiedDomain, lodash_get__WEBPACK_IMPORTED_MODULE_7___default()(axisChild, \"type.defaultProps.domain\"))) {\n return calculatedDomain;\n }\n return specifiedDomain;\n};\nvar getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n var _graphicalItem$props = graphicalItem.props, dataKey = _graphicalItem$props.dataKey, name = _graphicalItem$props.name, unit = _graphicalItem$props.unit, formatter = _graphicalItem$props.formatter, tooltipType = _graphicalItem$props.tooltipType, chartType = _graphicalItem$props.chartType, hide = _graphicalItem$props.hide;\n return _objectSpread(_objectSpread({}, (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_16__.filterProps)(graphicalItem, false)), {}, {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(graphicalItem),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload,\n chartType: chartType,\n hide: hide\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ2hhcnRVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8s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MEJBQTBCK007UUFDakNuVCxPQUFPOEQsa0JBQWtCc1AsU0FBU3JQO1FBQ2xDSSxNQUFNcVA7UUFDTkosU0FBU0E7UUFDVDNGLFdBQVdBO1FBQ1h3QyxNQUFNQTtJQUNSO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ2hhcnRVdGlscy5qcz9mOGE3Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIG93bktleXMoZSwgcikgeyB2YXIgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgbyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7IHIgJiYgKG8gPSBvLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCByKS5lbnVtZXJhYmxlOyB9KSksIHQucHVzaC5hcHBseSh0LCBvKTsgfSByZXR1cm4gdDsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKSB7IGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7IHZhciB0ID0gbnVsbCAhPSBhcmd1bWVudHNbcl0gPyBhcmd1bWVudHNbcl0gOiB7fTsgciAlIDIgPyBvd25LZXlzKE9iamVjdCh0KSwgITApLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgX2RlZmluZVByb3BlcnR5KGUsIHIsIHRbcl0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwgcikpOyB9KTsgfSByZXR1cm4gZTsgfVxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBrZXkgPSBfdG9Qcm9wZXJ0eUtleShrZXkpOyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cbmZ1bmN0aW9uIF90b1Byb3BlcnR5S2V5KHQpIHsgdmFyIGkgPSBfdG9QcmltaXRpdmUodCwgXCJzdHJpbmdcIik7IHJldHVybiBcInN5bWJvbFwiID09IF90eXBlb2YoaSkgPyBpIDogU3RyaW5nKGkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUodCwgcikgeyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDsgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmICh2b2lkIDAgIT09IGUpIHsgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YoaSkpIHJldHVybiBpOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTsgfVxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTsgfVxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cbmltcG9ydCAqIGFzIGQzU2NhbGVzIGZyb20gJ3ZpY3RvcnktdmVuZG9yL2QzLXNjYWxlJztcbmltcG9ydCB7IHN0YWNrIGFzIHNoYXBlU3RhY2ssIHN0YWNrT2Zmc2V0RXhwYW5kLCBzdGFja09mZnNldE5vbmUsIHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZSwgc3RhY2tPZmZzZXRXaWdnbGUsIHN0YWNrT3JkZXJOb25lIH0gZnJvbSAndmljdG9yeS12ZW5kb3IvZDMtc2hhcGUnO1xuaW1wb3J0IG1heCBmcm9tICdsb2Rhc2gvbWF4JztcbmltcG9ydCBtaW4gZnJvbSAnbG9kYXNoL21pbic7XG5pbXBvcnQgaXNOaWwgZnJvbSAnbG9kYXNoL2lzTmlsJztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcbmltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBmbGF0TWFwIGZyb20gJ2xvZGFzaC9mbGF0TWFwJztcbmltcG9ydCBpc05hbiBmcm9tICdsb2Rhc2gvaXNOYU4nO1xuaW1wb3J0IHVwcGVyRmlyc3QgZnJvbSAnbG9kYXNoL3VwcGVyRmlyc3QnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCB7IGdldE5pY2VUaWNrVmFsdWVzLCBnZXRUaWNrVmFsdWVzRml4ZWREb21haW4gfSBmcm9tICdyZWNoYXJ0cy1zY2FsZSc7XG5pbXBvcnQgeyBFcnJvckJhciB9IGZyb20gJy4uL2NhcnRlc2lhbi9FcnJvckJhcic7XG5pbXBvcnQgeyBmaW5kRW50cnlJbkFycmF5LCBnZXRQZXJjZW50VmFsdWUsIGlzTnVtYmVyLCBpc051bU9yU3RyLCBtYXRoU2lnbiwgdW5pcXVlSWQgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBmaWx0ZXJQcm9wcywgZmluZEFsbEJ5VHlwZSwgZ2V0RGlzcGxheU5hbWUgfSBmcm9tICcuL1JlYWN0VXRpbHMnO1xuLy8gVE9ETzogQ2F1c2Ugb2YgY2lyY3VsYXIgZGVwZW5kZW5jeS4gTmVlZHMgcmVmYWN0b3IuXG4vLyBpbXBvcnQgeyBSYWRpdXNBeGlzUHJvcHMsIEFuZ2xlQXhpc1Byb3BzIH0gZnJvbSAnLi4vcG9sYXIvdHlwZXMnO1xuXG5pbXBvcnQgeyBnZXRMZWdlbmRQcm9wcyB9IGZyb20gJy4vZ2V0TGVnZW5kUHJvcHMnO1xuXG4vLyBFeHBvcnRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbmV4cG9ydCB7IGdldExlZ2VuZFByb3BzIH07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWVCeURhdGFLZXkob2JqLCBkYXRhS2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgaWYgKGlzTmlsKG9iaikgfHwgaXNOaWwoZGF0YUtleSkpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIGlmIChpc051bU9yU3RyKGRhdGFLZXkpKSB7XG4gICAgcmV0dXJuIGdldChvYmosIGRhdGFLZXksIGRlZmF1bHRWYWx1ZSk7XG4gIH1cbiAgaWYgKGlzRnVuY3Rpb24oZGF0YUtleSkpIHtcbiAgICByZXR1cm4gZGF0YUtleShvYmopO1xuICB9XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59XG4vKipcbiAqIEdldCBkb21haW4gb2YgZGF0YSBieSBrZXkuXG4gKiBAcGFyYW0gIHtBcnJheX0gICBkYXRhICAgICAgVGhlIGRhdGEgZGlzcGxheWVkIGluIHRoZSBjaGFydFxuICogQHBhcmFtICB7U3RyaW5nfSAga2V5ICAgICAgIFRoZSB1bmlxdWUga2V5IG9mIGEgZ3JvdXAgb2YgZGF0YVxuICogQHBhcmFtICB7U3RyaW5nfSAgdHlwZSAgICAgIFRoZSB0eXBlIG9mIGF4aXNcbiAqIEBwYXJhbSAge0Jvb2xlYW59IGZpbHRlck5pbCBXaGV0aGVyIG9yIG5vdCBmaWx0ZXIgbmlsIHZhbHVlc1xuICogQHJldHVybiB7QXJyYXl9IERvbWFpbiBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBrZXksIHR5cGUsIGZpbHRlck5pbCkge1xuICB2YXIgZmxhdHRlbkRhdGEgPSBmbGF0TWFwKGRhdGEsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwga2V5KTtcbiAgfSk7XG4gIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcGFyc2VGbG9hdCB0eXBlIG9ubHkgYWNjZXB0cyBzdHJpbmdzXG4gICAgdmFyIGRvbWFpbiA9IGZsYXR0ZW5EYXRhLmZpbHRlcihmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiBpc051bWJlcihlbnRyeSkgfHwgcGFyc2VGbG9hdChlbnRyeSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRvbWFpbi5sZW5ndGggPyBbbWluKGRvbWFpbiksIG1heChkb21haW4pXSA6IFtJbmZpbml0eSwgLUluZmluaXR5XTtcbiAgfVxuICB2YXIgdmFsaWRhdGVEYXRhID0gZmlsdGVyTmlsID8gZmxhdHRlbkRhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHJldHVybiAhaXNOaWwoZW50cnkpO1xuICB9KSA6IGZsYXR0ZW5EYXRhO1xuXG4gIC8vIFN1cHBvcnRzIHgtYXhpcyBvZiBEYXRlIHR5cGVcbiAgcmV0dXJuIHZhbGlkYXRlRGF0YS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIGlzTnVtT3JTdHIoZW50cnkpIHx8IGVudHJ5IGluc3RhbmNlb2YgRGF0ZSA/IGVudHJ5IDogJyc7XG4gIH0pO1xufVxuZXhwb3J0IHZhciBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXggPSBmdW5jdGlvbiBjYWxjdWxhdGVBY3RpdmVUaWNrSW5kZXgoY29vcmRpbmF0ZSkge1xuICB2YXIgX3RpY2tzJGxlbmd0aDtcbiAgdmFyIHRpY2tzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTtcbiAgdmFyIHVuc29ydGVkVGlja3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGF4aXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMyA/IGFyZ3VtZW50c1szXSA6IHVuZGVmaW5lZDtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW4gPSAoX3RpY2tzJGxlbmd0aCA9IHRpY2tzID09PSBudWxsIHx8IHRpY2tzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0aWNrcy5sZW5ndGgpICE9PSBudWxsICYmIF90aWNrcyRsZW5ndGggIT09IHZvaWQgMCA/IF90aWNrcyRsZW5ndGggOiAwO1xuXG4gIC8vIGlmIHRoZXJlIGFyZSAxIG9yIGxlc3MgdGlja3MgdGlja3MgdGhlbiB0aGUgYWN0aXZlIHRpY2sgaXMgYXQgaW5kZXggMFxuICBpZiAobGVuIDw9IDEpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAoYXhpcyAmJiBheGlzLmF4aXNUeXBlID09PSAnYW5nbGVBeGlzJyAmJiBNYXRoLmFicyhNYXRoLmFicyhheGlzLnJhbmdlWzFdIC0gYXhpcy5yYW5nZVswXSkgLSAzNjApIDw9IDFlLTYpIHtcbiAgICB2YXIgcmFuZ2UgPSBheGlzLnJhbmdlO1xuICAgIC8vIHRpY2tzIGFyZSBkaXN0cmlidXRlZCBpbiBhIGNpcmNsZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBiZWZvcmUgPSBpID4gMCA/IHVuc29ydGVkVGlja3NbaSAtIDFdLmNvb3JkaW5hdGUgOiB1bnNvcnRlZFRpY2tzW2xlbiAtIDFdLmNvb3JkaW5hdGU7XG4gICAgICB2YXIgY3VyID0gdW5zb3J0ZWRUaWNrc1tpXS5jb29yZGluYXRlO1xuICAgICAgdmFyIGFmdGVyID0gaSA+PSBsZW4gLSAxID8gdW5zb3J0ZWRUaWNrc1swXS5jb29yZGluYXRlIDogdW5zb3J0ZWRUaWNrc1tpICsgMV0uY29vcmRpbmF0ZTtcbiAgICAgIHZhciBzYW1lRGlyZWN0aW9uQ29vcmQgPSB2b2lkIDA7XG4gICAgICBpZiAobWF0aFNpZ24oY3VyIC0gYmVmb3JlKSAhPT0gbWF0aFNpZ24oYWZ0ZXIgLSBjdXIpKSB7XG4gICAgICAgIHZhciBkaWZmSW50ZXJ2YWwgPSBbXTtcbiAgICAgICAgaWYgKG1hdGhTaWduKGFmdGVyIC0gY3VyKSA9PT0gbWF0aFNpZ24ocmFuZ2VbMV0gLSByYW5nZVswXSkpIHtcbiAgICAgICAgICBzYW1lRGlyZWN0aW9uQ29vcmQgPSBhZnRlcjtcbiAgICAgICAgICB2YXIgY3VySW5SYW5nZSA9IGN1ciArIHJhbmdlWzFdIC0gcmFuZ2VbMF07XG4gICAgICAgICAgZGlmZkludGVydmFsWzBdID0gTWF0aC5taW4oY3VySW5SYW5nZSwgKGN1ckluUmFuZ2UgKyBiZWZvcmUpIC8gMik7XG4gICAgICAgICAgZGlmZkludGVydmFsWzFdID0gTWF0aC5tYXgoY3VySW5SYW5nZSwgKGN1ckluUmFuZ2UgKyBiZWZvcmUpIC8gMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2FtZURpcmVjdGlvbkNvb3JkID0gYmVmb3JlO1xuICAgICAgICAgIHZhciBhZnRlckluUmFuZ2UgPSBhZnRlciArIHJhbmdlWzFdIC0gcmFuZ2VbMF07XG4gICAgICAgICAgZGlmZkludGVydmFsWzBdID0gTWF0aC5taW4oY3VyLCAoYWZ0ZXJJblJhbmdlICsgY3VyKSAvIDIpO1xuICAgICAgICAgIGRpZmZJbnRlcnZhbFsxXSA9IE1hdGgubWF4KGN1ciwgKGFmdGVySW5SYW5nZSArIGN1cikgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2FtZUludGVydmFsID0gW01hdGgubWluKGN1ciwgKHNhbWVEaXJlY3Rpb25Db29yZCArIGN1cikgLyAyKSwgTWF0aC5tYXgoY3VyLCAoc2FtZURpcmVjdGlvbkNvb3JkICsgY3VyKSAvIDIpXTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGUgPiBzYW1lSW50ZXJ2YWxbMF0gJiYgY29vcmRpbmF0ZSA8PSBzYW1lSW50ZXJ2YWxbMV0gfHwgY29vcmRpbmF0ZSA+PSBkaWZmSW50ZXJ2YWxbMF0gJiYgY29vcmRpbmF0ZSA8PSBkaWZmSW50ZXJ2YWxbMV0pIHtcbiAgICAgICAgICBpbmRleCA9IHVuc29ydGVkVGlja3NbaV0uaW5kZXg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBtaW5WYWx1ZSA9IE1hdGgubWluKGJlZm9yZSwgYWZ0ZXIpO1xuICAgICAgICB2YXIgbWF4VmFsdWUgPSBNYXRoLm1heChiZWZvcmUsIGFmdGVyKTtcbiAgICAgICAgaWYgKGNvb3JkaW5hdGUgPiAobWluVmFsdWUgKyBjdXIpIC8gMiAmJiBjb29yZGluYXRlIDw9IChtYXhWYWx1ZSArIGN1cikgLyAyKSB7XG4gICAgICAgICAgaW5kZXggPSB1bnNvcnRlZFRpY2tzW2ldLmluZGV4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIHRpY2tzIGFyZSBkaXN0cmlidXRlZCBpbiBhIHNpbmdsZSBkaXJlY3Rpb25cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGVuOyBfaSsrKSB7XG4gICAgICBpZiAoX2kgPT09IDAgJiYgY29vcmRpbmF0ZSA8PSAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSArIDFdLmNvb3JkaW5hdGUpIC8gMiB8fCBfaSA+IDAgJiYgX2kgPCBsZW4gLSAxICYmIGNvb3JkaW5hdGUgPiAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSAtIDFdLmNvb3JkaW5hdGUpIC8gMiAmJiBjb29yZGluYXRlIDw9ICh0aWNrc1tfaV0uY29vcmRpbmF0ZSArIHRpY2tzW19pICsgMV0uY29vcmRpbmF0ZSkgLyAyIHx8IF9pID09PSBsZW4gLSAxICYmIGNvb3JkaW5hdGUgPiAodGlja3NbX2ldLmNvb3JkaW5hdGUgKyB0aWNrc1tfaSAtIDFdLmNvb3JkaW5hdGUpIC8gMikge1xuICAgICAgICBpbmRleCA9IHRpY2tzW19pXS5pbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmRleDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBtYWluIGNvbG9yIG9mIGVhY2ggZ3JhcGhpYyBpdGVtXG4gKiBAcGFyYW0gIHtSZWFjdEVsZW1lbnR9IGl0ZW0gQSBncmFwaGljIGl0ZW1cbiAqIEByZXR1cm4ge1N0cmluZ30gICAgICAgICAgICBDb2xvclxuICovXG5leHBvcnQgdmFyIGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0gPSBmdW5jdGlvbiBnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtKGl0ZW0pIHtcbiAgdmFyIF9yZWYgPSBpdGVtLFxuICAgIGRpc3BsYXlOYW1lID0gX3JlZi50eXBlLmRpc3BsYXlOYW1lOyAvLyBUT0RPOiBjaGVjayBpZiBkaXNwbGF5TmFtZSBpcyB2YWxpZC5cbiAgdmFyIF9pdGVtJHByb3BzID0gaXRlbS5wcm9wcyxcbiAgICBzdHJva2UgPSBfaXRlbSRwcm9wcy5zdHJva2UsXG4gICAgZmlsbCA9IF9pdGVtJHByb3BzLmZpbGw7XG4gIHZhciByZXN1bHQ7XG4gIHN3aXRjaCAoZGlzcGxheU5hbWUpIHtcbiAgICBjYXNlICdMaW5lJzpcbiAgICAgIHJlc3VsdCA9IHN0cm9rZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0FyZWEnOlxuICAgIGNhc2UgJ1JhZGFyJzpcbiAgICAgIHJlc3VsdCA9IHN0cm9rZSAmJiBzdHJva2UgIT09ICdub25lJyA/IHN0cm9rZSA6IGZpbGw7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVzdWx0ID0gZmlsbDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNpemUgb2YgYWxsIGdyb3VwcyBmb3Igc3RhY2tlZCBiYXIgZ3JhcGhcbiAqIEBwYXJhbSAge09iamVjdH0gc3RhY2tHcm91cHMgVGhlIGl0ZW1zIGdyb3VwZWQgYnkgYXhpc0lkIGFuZCBzdGFja0lkXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBzaXplIG9mIGFsbCBncm91cHNcbiAqL1xuZXhwb3J0IHZhciBnZXRCYXJTaXplTGlzdCA9IGZ1bmN0aW9uIGdldEJhclNpemVMaXN0KF9yZWYyKSB7XG4gIHZhciBnbG9iYWxTaXplID0gX3JlZjIuYmFyU2l6ZSxcbiAgICB0b3RhbFNpemUgPSBfcmVmMi50b3RhbFNpemUsXG4gICAgX3JlZjIkc3RhY2tHcm91cHMgPSBfcmVmMi5zdGFja0dyb3VwcyxcbiAgICBzdGFja0dyb3VwcyA9IF9yZWYyJHN0YWNrR3JvdXBzID09PSB2b2lkIDAgPyB7fSA6IF9yZWYyJHN0YWNrR3JvdXBzO1xuICBpZiAoIXN0YWNrR3JvdXBzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgdmFyIG51bWVyaWNBeGlzSWRzID0gT2JqZWN0LmtleXMoc3RhY2tHcm91cHMpO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gbnVtZXJpY0F4aXNJZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgc2dzID0gc3RhY2tHcm91cHNbbnVtZXJpY0F4aXNJZHNbaV1dLnN0YWNrR3JvdXBzO1xuICAgIHZhciBzdGFja0lkcyA9IE9iamVjdC5rZXlzKHNncyk7XG4gICAgZm9yICh2YXIgaiA9IDAsIHNMZW4gPSBzdGFja0lkcy5sZW5ndGg7IGogPCBzTGVuOyBqKyspIHtcbiAgICAgIHZhciBfc2dzJHN0YWNrSWRzJGogPSBzZ3Nbc3RhY2tJZHNbal1dLFxuICAgICAgICBpdGVtcyA9IF9zZ3Mkc3RhY2tJZHMkai5pdGVtcyxcbiAgICAgICAgY2F0ZUF4aXNJZCA9IF9zZ3Mkc3RhY2tJZHMkai5jYXRlQXhpc0lkO1xuICAgICAgdmFyIGJhckl0ZW1zID0gaXRlbXMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShpdGVtLnR5cGUpLmluZGV4T2YoJ0JhcicpID49IDA7XG4gICAgICB9KTtcbiAgICAgIGlmIChiYXJJdGVtcyAmJiBiYXJJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIHNlbGZTaXplID0gYmFySXRlbXNbMF0ucHJvcHMuYmFyU2l6ZTtcbiAgICAgICAgdmFyIGNhdGVJZCA9IGJhckl0ZW1zWzBdLnByb3BzW2NhdGVBeGlzSWRdO1xuICAgICAgICBpZiAoIXJlc3VsdFtjYXRlSWRdKSB7XG4gICAgICAgICAgcmVzdWx0W2NhdGVJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYmFyU2l6ZSA9IGlzTmlsKHNlbGZTaXplKSA/IGdsb2JhbFNpemUgOiBzZWxmU2l6ZTtcbiAgICAgICAgcmVzdWx0W2NhdGVJZF0ucHVzaCh7XG4gICAgICAgICAgaXRlbTogYmFySXRlbXNbMF0sXG4gICAgICAgICAgc3RhY2tMaXN0OiBiYXJJdGVtcy5zbGljZSgxKSxcbiAgICAgICAgICBiYXJTaXplOiBpc05pbChiYXJTaXplKSA/IHVuZGVmaW5lZCA6IGdldFBlcmNlbnRWYWx1ZShiYXJTaXplLCB0b3RhbFNpemUsIDApXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIGVhY2ggYmFyIGFuZCBvZmZzZXQgYmV0d2VlbiBzdGFydCBvZiBiYW5kIGFuZCB0aGUgYmFyXG4gKlxuICogQHBhcmFtICB7bnVtYmVyfSBiYW5kU2l6ZSBpcyB0aGUgc2l6ZSBvZiBhcmVhIHdoZXJlIGJhcnMgY2FuIHJlbmRlclxuICogQHBhcmFtICB7bnVtYmVyIHwgc3RyaW5nfSBiYXJHYXAgaXMgdGhlIGdhcCBzaXplLCBhcyBhIHBlcmNlbnRhZ2Ugb2YgYGJhbmRTaXplYC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSBkZWZpbmVkIGFzIG51bWJlciBvciBwZXJjZW50IHN0cmluZ1xuICogQHBhcmFtICB7bnVtYmVyIHwgc3RyaW5nfSBiYXJDYXRlZ29yeUdhcCBpcyB0aGUgZ2FwIHNpemUsIGFzIGEgcGVyY2VudGFnZSBvZiBgYmFuZFNpemVgLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIGRlZmluZWQgYXMgbnVtYmVyIG9yIHBlcmNlbnQgc3RyaW5nXG4gKiBAcGFyYW0gIHtBcnJheTxvYmplY3Q+fSBzaXplTGlzdCBTaXplcyBvZiBhbGwgZ3JvdXBzXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG1heEJhclNpemUgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGJhclxuICogQHJldHVybiB7QXJyYXk8b2JqZWN0Pn0gVGhlIHNpemUgYW5kIG9mZnNldCBvZiBlYWNoIGJhclxuICovXG5leHBvcnQgdmFyIGdldEJhclBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0QmFyUG9zaXRpb24oX3JlZjMpIHtcbiAgdmFyIGJhckdhcCA9IF9yZWYzLmJhckdhcCxcbiAgICBiYXJDYXRlZ29yeUdhcCA9IF9yZWYzLmJhckNhdGVnb3J5R2FwLFxuICAgIGJhbmRTaXplID0gX3JlZjMuYmFuZFNpemUsXG4gICAgX3JlZjMkc2l6ZUxpc3QgPSBfcmVmMy5zaXplTGlzdCxcbiAgICBzaXplTGlzdCA9IF9yZWYzJHNpemVMaXN0ID09PSB2b2lkIDAgPyBbXSA6IF9yZWYzJHNpemVMaXN0LFxuICAgIG1heEJhclNpemUgPSBfcmVmMy5tYXhCYXJTaXplO1xuICB2YXIgbGVuID0gc2l6ZUxpc3QubGVuZ3RoO1xuICBpZiAobGVuIDwgMSkgcmV0dXJuIG51bGw7XG4gIHZhciByZWFsQmFyR2FwID0gZ2V0UGVyY2VudFZhbHVlKGJhckdhcCwgYmFuZFNpemUsIDAsIHRydWUpO1xuICB2YXIgcmVzdWx0O1xuICB2YXIgaW5pdGlhbFZhbHVlID0gW107XG5cbiAgLy8gd2hldGhlciBvciBub3QgaXMgYmFyU2l6ZSBzZXR0ZWQgYnkgdXNlclxuICBpZiAoc2l6ZUxpc3RbMF0uYmFyU2l6ZSA9PT0gK3NpemVMaXN0WzBdLmJhclNpemUpIHtcbiAgICB2YXIgdXNlRnVsbCA9IGZhbHNlO1xuICAgIHZhciBmdWxsQmFyU2l6ZSA9IGJhbmRTaXplIC8gbGVuO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIHR5cGUgY2hlY2sgYWJvdmUgZG9lcyBub3QgY2hlY2sgZm9yIHR5cGUgbnVtYmVyIGV4cGxpY2l0bHlcbiAgICB2YXIgc3VtID0gc2l6ZUxpc3QucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgICByZXR1cm4gcmVzICsgZW50cnkuYmFyU2l6ZSB8fCAwO1xuICAgIH0sIDApO1xuICAgIHN1bSArPSAobGVuIC0gMSkgKiByZWFsQmFyR2FwO1xuICAgIGlmIChzdW0gPj0gYmFuZFNpemUpIHtcbiAgICAgIHN1bSAtPSAobGVuIC0gMSkgKiByZWFsQmFyR2FwO1xuICAgICAgcmVhbEJhckdhcCA9IDA7XG4gICAgfVxuICAgIGlmIChzdW0gPj0gYmFuZFNpemUgJiYgZnVsbEJhclNpemUgPiAwKSB7XG4gICAgICB1c2VGdWxsID0gdHJ1ZTtcbiAgICAgIGZ1bGxCYXJTaXplICo9IDAuOTtcbiAgICAgIHN1bSA9IGxlbiAqIGZ1bGxCYXJTaXplO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gKGJhbmRTaXplIC0gc3VtKSAvIDIgPj4gMDtcbiAgICB2YXIgcHJldiA9IHtcbiAgICAgIG9mZnNldDogb2Zmc2V0IC0gcmVhbEJhckdhcCxcbiAgICAgIHNpemU6IDBcbiAgICB9O1xuICAgIHJlc3VsdCA9IHNpemVMaXN0LnJlZHVjZShmdW5jdGlvbiAocmVzLCBlbnRyeSkge1xuICAgICAgdmFyIG5ld1Bvc2l0aW9uID0ge1xuICAgICAgICBpdGVtOiBlbnRyeS5pdGVtLFxuICAgICAgICBwb3NpdGlvbjoge1xuICAgICAgICAgIG9mZnNldDogcHJldi5vZmZzZXQgKyBwcmV2LnNpemUgKyByZWFsQmFyR2FwLFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdGhlIHR5cGUgY2hlY2sgYWJvdmUgZG9lcyBub3QgY2hlY2sgZm9yIHR5cGUgbnVtYmVyIGV4cGxpY2l0bHlcbiAgICAgICAgICBzaXplOiB1c2VGdWxsID8gZnVsbEJhclNpemUgOiBlbnRyeS5iYXJTaXplXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgbmV3UmVzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXMpLCBbbmV3UG9zaXRpb25dKTtcbiAgICAgIHByZXYgPSBuZXdSZXNbbmV3UmVzLmxlbmd0aCAtIDFdLnBvc2l0aW9uO1xuICAgICAgaWYgKGVudHJ5LnN0YWNrTGlzdCAmJiBlbnRyeS5zdGFja0xpc3QubGVuZ3RoKSB7XG4gICAgICAgIGVudHJ5LnN0YWNrTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgbmV3UmVzLnB1c2goe1xuICAgICAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwcmV2XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1JlcztcbiAgICB9LCBpbml0aWFsVmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBfb2Zmc2V0ID0gZ2V0UGVyY2VudFZhbHVlKGJhckNhdGVnb3J5R2FwLCBiYW5kU2l6ZSwgMCwgdHJ1ZSk7XG4gICAgaWYgKGJhbmRTaXplIC0gMiAqIF9vZmZzZXQgLSAobGVuIC0gMSkgKiByZWFsQmFyR2FwIDw9IDApIHtcbiAgICAgIHJlYWxCYXJHYXAgPSAwO1xuICAgIH1cbiAgICB2YXIgb3JpZ2luYWxTaXplID0gKGJhbmRTaXplIC0gMiAqIF9vZmZzZXQgLSAobGVuIC0gMSkgKiByZWFsQmFyR2FwKSAvIGxlbjtcbiAgICBpZiAob3JpZ2luYWxTaXplID4gMSkge1xuICAgICAgb3JpZ2luYWxTaXplID4+PSAwO1xuICAgIH1cbiAgICB2YXIgc2l6ZSA9IG1heEJhclNpemUgPT09ICttYXhCYXJTaXplID8gTWF0aC5taW4ob3JpZ2luYWxTaXplLCBtYXhCYXJTaXplKSA6IG9yaWdpbmFsU2l6ZTtcbiAgICByZXN1bHQgPSBzaXplTGlzdC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnksIGkpIHtcbiAgICAgIHZhciBuZXdSZXMgPSBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlcyksIFt7XG4gICAgICAgIGl0ZW06IGVudHJ5Lml0ZW0sXG4gICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgb2Zmc2V0OiBfb2Zmc2V0ICsgKG9yaWdpbmFsU2l6ZSArIHJlYWxCYXJHYXApICogaSArIChvcmlnaW5hbFNpemUgLSBzaXplKSAvIDIsXG4gICAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgICB9XG4gICAgICB9XSk7XG4gICAgICBpZiAoZW50cnkuc3RhY2tMaXN0ICYmIGVudHJ5LnN0YWNrTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgZW50cnkuc3RhY2tMaXN0LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICBuZXdSZXMucHVzaCh7XG4gICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgcG9zaXRpb246IG5ld1Jlc1tuZXdSZXMubGVuZ3RoIC0gMV0ucG9zaXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3UmVzO1xuICAgIH0sIGluaXRpYWxWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgdmFyIGFwcGVuZE9mZnNldE9mTGVnZW5kID0gZnVuY3Rpb24gYXBwZW5kT2Zmc2V0T2ZMZWdlbmQob2Zmc2V0LCBfdW51c2VkLCBwcm9wcywgbGVnZW5kQm94KSB7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgbWFyZ2luID0gcHJvcHMubWFyZ2luO1xuICB2YXIgbGVnZW5kV2lkdGggPSB3aWR0aCAtIChtYXJnaW4ubGVmdCB8fCAwKSAtIChtYXJnaW4ucmlnaHQgfHwgMCk7XG4gIHZhciBsZWdlbmRQcm9wcyA9IGdldExlZ2VuZFByb3BzKHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgbGVnZW5kV2lkdGg6IGxlZ2VuZFdpZHRoXG4gIH0pO1xuICBpZiAobGVnZW5kUHJvcHMpIHtcbiAgICB2YXIgX3JlZjQgPSBsZWdlbmRCb3ggfHwge30sXG4gICAgICBib3hXaWR0aCA9IF9yZWY0LndpZHRoLFxuICAgICAgYm94SGVpZ2h0ID0gX3JlZjQuaGVpZ2h0O1xuICAgIHZhciBhbGlnbiA9IGxlZ2VuZFByb3BzLmFsaWduLFxuICAgICAgdmVydGljYWxBbGlnbiA9IGxlZ2VuZFByb3BzLnZlcnRpY2FsQWxpZ24sXG4gICAgICBsYXlvdXQgPSBsZWdlbmRQcm9wcy5sYXlvdXQ7XG4gICAgaWYgKChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgfHwgbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgJiYgdmVydGljYWxBbGlnbiA9PT0gJ21pZGRsZScpICYmIGFsaWduICE9PSAnY2VudGVyJyAmJiBpc051bWJlcihvZmZzZXRbYWxpZ25dKSkge1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb2Zmc2V0KSwge30sIF9kZWZpbmVQcm9wZXJ0eSh7fSwgYWxpZ24sIG9mZnNldFthbGlnbl0gKyAoYm94V2lkdGggfHwgMCkpKTtcbiAgICB9XG4gICAgaWYgKChsYXlvdXQgPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgJiYgYWxpZ24gPT09ICdjZW50ZXInKSAmJiB2ZXJ0aWNhbEFsaWduICE9PSAnbWlkZGxlJyAmJiBpc051bWJlcihvZmZzZXRbdmVydGljYWxBbGlnbl0pKSB7XG4gICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvZmZzZXQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCB2ZXJ0aWNhbEFsaWduLCBvZmZzZXRbdmVydGljYWxBbGlnbl0gKyAoYm94SGVpZ2h0IHx8IDApKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvZmZzZXQ7XG59O1xudmFyIGlzRXJyb3JCYXJSZWxldmFudEZvckF4aXMgPSBmdW5jdGlvbiBpc0Vycm9yQmFyUmVsZXZhbnRGb3JBeGlzKGxheW91dCwgYXhpc1R5cGUsIGRpcmVjdGlvbikge1xuICBpZiAoaXNOaWwoYXhpc1R5cGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgcmV0dXJuIGF4aXNUeXBlID09PSAneUF4aXMnO1xuICB9XG4gIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICByZXR1cm4gYXhpc1R5cGUgPT09ICd4QXhpcyc7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ3gnKSB7XG4gICAgcmV0dXJuIGF4aXNUeXBlID09PSAneEF4aXMnO1xuICB9XG4gIGlmIChkaXJlY3Rpb24gPT09ICd5Jykge1xuICAgIHJldHVybiBheGlzVHlwZSA9PT0gJ3lBeGlzJztcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgdmFyIGdldERvbWFpbk9mRXJyb3JCYXJzID0gZnVuY3Rpb24gZ2V0RG9tYWluT2ZFcnJvckJhcnMoZGF0YSwgaXRlbSwgZGF0YUtleSwgbGF5b3V0LCBheGlzVHlwZSkge1xuICB2YXIgY2hpbGRyZW4gPSBpdGVtLnByb3BzLmNoaWxkcmVuO1xuICB2YXIgZXJyb3JCYXJzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgRXJyb3JCYXIpLmZpbHRlcihmdW5jdGlvbiAoZXJyb3JCYXJDaGlsZCkge1xuICAgIHJldHVybiBpc0Vycm9yQmFyUmVsZXZhbnRGb3JBeGlzKGxheW91dCwgYXhpc1R5cGUsIGVycm9yQmFyQ2hpbGQucHJvcHMuZGlyZWN0aW9uKTtcbiAgfSk7XG4gIGlmIChlcnJvckJhcnMgJiYgZXJyb3JCYXJzLmxlbmd0aCkge1xuICAgIHZhciBrZXlzID0gZXJyb3JCYXJzLm1hcChmdW5jdGlvbiAoZXJyb3JCYXJDaGlsZCkge1xuICAgICAgcmV0dXJuIGVycm9yQmFyQ2hpbGQucHJvcHMuZGF0YUtleTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZW50cnkpIHtcbiAgICAgIHZhciBlbnRyeVZhbHVlID0gZ2V0VmFsdWVCeURhdGFLZXkoZW50cnksIGRhdGFLZXkpO1xuICAgICAgaWYgKGlzTmlsKGVudHJ5VmFsdWUpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgdmFyIG1haW5WYWx1ZSA9IEFycmF5LmlzQXJyYXkoZW50cnlWYWx1ZSkgPyBbbWluKGVudHJ5VmFsdWUpLCBtYXgoZW50cnlWYWx1ZSldIDogW2VudHJ5VmFsdWUsIGVudHJ5VmFsdWVdO1xuICAgICAgdmFyIGVycm9yRG9tYWluID0ga2V5cy5yZWR1Y2UoZnVuY3Rpb24gKHByZXZFcnJvckFyciwgaykge1xuICAgICAgICB2YXIgZXJyb3JWYWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBrLCAwKTtcbiAgICAgICAgdmFyIGxvd2VyVmFsdWUgPSBtYWluVmFsdWVbMF0gLSBNYXRoLmFicyhBcnJheS5pc0FycmF5KGVycm9yVmFsdWUpID8gZXJyb3JWYWx1ZVswXSA6IGVycm9yVmFsdWUpO1xuICAgICAgICB2YXIgdXBwZXJWYWx1ZSA9IG1haW5WYWx1ZVsxXSArIE1hdGguYWJzKEFycmF5LmlzQXJyYXkoZXJyb3JWYWx1ZSkgPyBlcnJvclZhbHVlWzFdIDogZXJyb3JWYWx1ZSk7XG4gICAgICAgIHJldHVybiBbTWF0aC5taW4obG93ZXJWYWx1ZSwgcHJldkVycm9yQXJyWzBdKSwgTWF0aC5tYXgodXBwZXJWYWx1ZSwgcHJldkVycm9yQXJyWzFdKV07XG4gICAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihlcnJvckRvbWFpblswXSwgcmVzdWx0WzBdKSwgTWF0aC5tYXgoZXJyb3JEb21haW5bMV0sIHJlc3VsdFsxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IHZhciBwYXJzZUVycm9yQmFyc09mQXhpcyA9IGZ1bmN0aW9uIHBhcnNlRXJyb3JCYXJzT2ZBeGlzKGRhdGEsIGl0ZW1zLCBkYXRhS2V5LCBheGlzVHlwZSwgbGF5b3V0KSB7XG4gIHZhciBkb21haW5zID0gaXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIGdldERvbWFpbk9mRXJyb3JCYXJzKGRhdGEsIGl0ZW0sIGRhdGFLZXksIGxheW91dCwgYXhpc1R5cGUpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuICFpc05pbChlbnRyeSk7XG4gIH0pO1xuICBpZiAoZG9tYWlucyAmJiBkb21haW5zLmxlbmd0aCkge1xuICAgIHJldHVybiBkb21haW5zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBlbnRyeSkge1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIGVudHJ5WzBdKSwgTWF0aC5tYXgocmVzdWx0WzFdLCBlbnRyeVsxXSldO1xuICAgIH0sIFtJbmZpbml0eSwgLUluZmluaXR5XSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIEdldCBkb21haW4gb2YgZGF0YSBieSB0aGUgY29uZmlndXJhdGlvbiBvZiBpdGVtIGVsZW1lbnRcbiAqIEBwYXJhbSAge0FycmF5fSAgIGRhdGEgICAgICBUaGUgZGF0YSBkaXNwbGF5ZWQgaW4gdGhlIGNoYXJ0XG4gKiBAcGFyYW0gIHtBcnJheX0gICBpdGVtcyAgICAgVGhlIGluc3RhbmNlcyBvZiBpdGVtXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICB0eXBlICAgICAgVGhlIHR5cGUgb2YgYXhpcywgbnVtYmVyIC0gTnVtYmVyIEF4aXMsIGNhdGVnb3J5IC0gQ2F0ZWdvcnkgQXhpc1xuICogQHBhcmFtICB7TGF5b3V0VHlwZX0gbGF5b3V0IFRoZSB0eXBlIG9mIGxheW91dFxuICogQHBhcmFtICB7Qm9vbGVhbn0gZmlsdGVyTmlsIFdoZXRoZXIgb3Igbm90IGZpbHRlciBuaWwgdmFsdWVzXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgIERvbWFpblxuICovXG5leHBvcnQgdmFyIGdldERvbWFpbk9mSXRlbXNXaXRoU2FtZUF4aXMgPSBmdW5jdGlvbiBnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzKGRhdGEsIGl0ZW1zLCB0eXBlLCBsYXlvdXQsIGZpbHRlck5pbCkge1xuICB2YXIgZG9tYWlucyA9IGl0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBkYXRhS2V5ID0gaXRlbS5wcm9wcy5kYXRhS2V5O1xuICAgIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBkYXRhS2V5KSB7XG4gICAgICByZXR1cm4gZ2V0RG9tYWluT2ZFcnJvckJhcnMoZGF0YSwgaXRlbSwgZGF0YUtleSwgbGF5b3V0KSB8fCBnZXREb21haW5PZkRhdGFCeUtleShkYXRhLCBkYXRhS2V5LCB0eXBlLCBmaWx0ZXJOaWwpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RG9tYWluT2ZEYXRhQnlLZXkoZGF0YSwgZGF0YUtleSwgdHlwZSwgZmlsdGVyTmlsKTtcbiAgfSk7XG4gIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xuICAgIC8vIENhbGN1bGF0ZSB0aGUgZG9tYWluIG9mIG51bWJlciBheGlzXG4gICAgcmV0dXJuIGRvbWFpbnMucmVkdWNlKFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgaWYgKHR5cGUgPT09IG51bWJlcikgbWVhbnMgdGhhdCB0aGUgZG9tYWluIGlzIG51bWVyaWNhbCB0eXBlXG4gICAgLy8gLSBidXQgdGhpcyBsaW5rIGlzIG1pc3NpbmcgaW4gdGhlIHR5cGUgZGVmaW5pdGlvblxuICAgIGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgICByZXR1cm4gW01hdGgubWluKHJlc3VsdFswXSwgZW50cnlbMF0pLCBNYXRoLm1heChyZXN1bHRbMV0sIGVudHJ5WzFdKV07XG4gICAgfSwgW0luZmluaXR5LCAtSW5maW5pdHldKTtcbiAgfVxuICB2YXIgdGFnID0ge307XG4gIC8vIEdldCB0aGUgdW5pb24gc2V0IG9mIGNhdGVnb3J5IGF4aXNcbiAgcmV0dXJuIGRvbWFpbnMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGVudHJ5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIERhdGUgY2Fubm90IGluZGV4IGFuIG9iamVjdFxuICAgICAgaWYgKCF0YWdbZW50cnlbaV1dKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgRGF0ZSBjYW5ub3QgaW5kZXggYW4gb2JqZWN0XG4gICAgICAgIHRhZ1tlbnRyeVtpXV0gPSB0cnVlO1xuXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgRGF0ZSBjYW5ub3QgaW5kZXggYW4gb2JqZWN0XG4gICAgICAgIHJlc3VsdC5wdXNoKGVudHJ5W2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwgW10pO1xufTtcbmV4cG9ydCB2YXIgaXNDYXRlZ29yaWNhbEF4aXMgPSBmdW5jdGlvbiBpc0NhdGVnb3JpY2FsQXhpcyhsYXlvdXQsIGF4aXNUeXBlKSB7XG4gIHJldHVybiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyAmJiBheGlzVHlwZSA9PT0gJ3hBeGlzJyB8fCBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgJiYgYXhpc1R5cGUgPT09ICd5QXhpcycgfHwgbGF5b3V0ID09PSAnY2VudHJpYycgJiYgYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnIHx8IGxheW91dCA9PT0gJ3JhZGlhbCcgJiYgYXhpc1R5cGUgPT09ICdyYWRpdXNBeGlzJztcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBDb29yZGluYXRlcyBvZiBncmlkXG4gKiBAcGFyYW0gIHtBcnJheX0gdGlja3MgICAgICAgICAgIFRoZSB0aWNrcyBpbiBheGlzXG4gKiBAcGFyYW0ge051bWJlcn0gbWluVmFsdWUgICAgICAgIFRoZSBtaW5pbXVuIHZhbHVlIG9mIGF4aXNcbiAqIEBwYXJhbSB7TnVtYmVyfSBtYXhWYWx1ZSAgICAgICAgVGhlIG1heGltdW4gdmFsdWUgb2YgYXhpc1xuICogQHBhcmFtIHtib29sZWFufSBzeW5jV2l0aFRpY2tzICBTeW5jaHJvbml6ZSBncmlkIGxpbmVzIHdpdGggdGlja3Mgb3Igbm90XG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgICAgICAgIENvb3JkaW5hdGVzXG4gKi9cbmV4cG9ydCB2YXIgZ2V0Q29vcmRpbmF0ZXNPZkdyaWQgPSBmdW5jdGlvbiBnZXRDb29yZGluYXRlc09mR3JpZCh0aWNrcywgbWluVmFsdWUsIG1heFZhbHVlLCBzeW5jV2l0aFRpY2tzKSB7XG4gIGlmIChzeW5jV2l0aFRpY2tzKSB7XG4gICAgcmV0dXJuIHRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIHJldHVybiBlbnRyeS5jb29yZGluYXRlO1xuICAgIH0pO1xuICB9XG4gIHZhciBoYXNNaW4sIGhhc01heDtcbiAgdmFyIHZhbHVlcyA9IHRpY2tzLm1hcChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBpZiAoZW50cnkuY29vcmRpbmF0ZSA9PT0gbWluVmFsdWUpIHtcbiAgICAgIGhhc01pbiA9IHRydWU7XG4gICAgfVxuICAgIGlmIChlbnRyeS5jb29yZGluYXRlID09PSBtYXhWYWx1ZSkge1xuICAgICAgaGFzTWF4ID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5LmNvb3JkaW5hdGU7XG4gIH0pO1xuICBpZiAoIWhhc01pbikge1xuICAgIHZhbHVlcy5wdXNoKG1pblZhbHVlKTtcbiAgfVxuICBpZiAoIWhhc01heCkge1xuICAgIHZhbHVlcy5wdXNoKG1heFZhbHVlKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpY2tzIG9mIGFuIGF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0gIGF4aXMgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gYXhpc1xuICogQHBhcmFtIHtCb29sZWFufSBpc0dyaWQgV2hldGhlciBvciBub3QgYXJlIHRoZSB0aWNrcyBpbiBncmlkXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzQWxsIFJldHVybiB0aGUgdGlja3Mgb2YgYWxsIHRoZSBwb2ludHMgb3Igbm90XG4gKiBAcmV0dXJuIHtBcnJheX0gIFRpY2tzXG4gKi9cbmV4cG9ydCB2YXIgZ2V0VGlja3NPZkF4aXMgPSBmdW5jdGlvbiBnZXRUaWNrc09mQXhpcyhheGlzLCBpc0dyaWQsIGlzQWxsKSB7XG4gIGlmICghYXhpcykgcmV0dXJuIG51bGw7XG4gIHZhciBzY2FsZSA9IGF4aXMuc2NhbGU7XG4gIHZhciBkdXBsaWNhdGVEb21haW4gPSBheGlzLmR1cGxpY2F0ZURvbWFpbixcbiAgICB0eXBlID0gYXhpcy50eXBlLFxuICAgIHJhbmdlID0gYXhpcy5yYW5nZTtcbiAgdmFyIG9mZnNldEZvckJhbmQgPSBheGlzLnJlYWxTY2FsZVR5cGUgPT09ICdzY2FsZUJhbmQnID8gc2NhbGUuYmFuZHdpZHRoKCkgLyAyIDogMjtcbiAgdmFyIG9mZnNldCA9IChpc0dyaWQgfHwgaXNBbGwpICYmIHR5cGUgPT09ICdjYXRlZ29yeScgJiYgc2NhbGUuYmFuZHdpZHRoID8gc2NhbGUuYmFuZHdpZHRoKCkgLyBvZmZzZXRGb3JCYW5kIDogMDtcbiAgb2Zmc2V0ID0gYXhpcy5heGlzVHlwZSA9PT0gJ2FuZ2xlQXhpcycgJiYgKHJhbmdlID09PSBudWxsIHx8IHJhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiByYW5nZS5sZW5ndGgpID49IDIgPyBtYXRoU2lnbihyYW5nZVswXSAtIHJhbmdlWzFdKSAqIDIgKiBvZmZzZXQgOiBvZmZzZXQ7XG5cbiAgLy8gVGhlIHRpY2tzIHNldCBieSB1c2VyIHNob3VsZCBvbmx5IGFmZmVjdCB0aGUgdGlja3MgYWRqYWNlbnQgdG8gYXhpcyBsaW5lXG4gIGlmIChpc0dyaWQgJiYgKGF4aXMudGlja3MgfHwgYXhpcy5uaWNlVGlja3MpKSB7XG4gICAgdmFyIHJlc3VsdCA9IChheGlzLnRpY2tzIHx8IGF4aXMubmljZVRpY2tzKS5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICB2YXIgc2NhbGVDb250ZW50ID0gZHVwbGljYXRlRG9tYWluID8gZHVwbGljYXRlRG9tYWluLmluZGV4T2YoZW50cnkpIDogZW50cnk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAvLyBJZiB0aGUgc2NhbGVDb250ZW50IGlzIG5vdCBhIG51bWJlciwgdGhlIGNvb3JkaW5hdGUgd2lsbCBiZSBOYU4uXG4gICAgICAgIC8vIFRoYXQgY291bGQgYmUgdGhlIGNhc2UgZm9yIGV4YW1wbGUgd2l0aCBhIFBvaW50U2NhbGUgYW5kIGEgc3RyaW5nIGFzIGRvbWFpbi5cbiAgICAgICAgY29vcmRpbmF0ZTogc2NhbGUoc2NhbGVDb250ZW50KSArIG9mZnNldCxcbiAgICAgICAgdmFsdWU6IGVudHJ5LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldFxuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAocm93KSB7XG4gICAgICByZXR1cm4gIWlzTmFuKHJvdy5jb29yZGluYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFdoZW4gYXhpcyBpcyBhIGNhdGVnb3JpYWwgYXhpcywgYnV0IHRoZSB0eXBlIG9mIGF4aXMgaXMgbnVtYmVyIG9yIHRoZSBzY2FsZSBvZiBheGlzIGlzIG5vdCBcImF1dG9cIlxuICBpZiAoYXhpcy5pc0NhdGVnb3JpY2FsICYmIGF4aXMuY2F0ZWdvcmljYWxEb21haW4pIHtcbiAgICByZXR1cm4gYXhpcy5jYXRlZ29yaWNhbERvbWFpbi5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29vcmRpbmF0ZTogc2NhbGUoZW50cnkpICsgb2Zmc2V0LFxuICAgICAgICB2YWx1ZTogZW50cnksXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgaWYgKHNjYWxlLnRpY2tzICYmICFpc0FsbCkge1xuICAgIHJldHVybiBzY2FsZS50aWNrcyhheGlzLnRpY2tDb3VudCkubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29vcmRpbmF0ZTogc2NhbGUoZW50cnkpICsgb2Zmc2V0LFxuICAgICAgICB2YWx1ZTogZW50cnksXG4gICAgICAgIG9mZnNldDogb2Zmc2V0XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiBheGlzIGhhcyBkdXBsaWNhdGVkIHRleHQsIHNlcmlhbCBudW1iZXJzIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHNjYWxlXG4gIHJldHVybiBzY2FsZS5kb21haW4oKS5tYXAoZnVuY3Rpb24gKGVudHJ5LCBpbmRleCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb29yZGluYXRlOiBzY2FsZShlbnRyeSkgKyBvZmZzZXQsXG4gICAgICB2YWx1ZTogZHVwbGljYXRlRG9tYWluID8gZHVwbGljYXRlRG9tYWluW2VudHJ5XSA6IGVudHJ5LFxuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgb2Zmc2V0OiBvZmZzZXRcbiAgICB9O1xuICB9KTtcbn07XG5cbi8qKlxuICogY29tYmluZSB0aGUgaGFuZGxlcnNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBkZWZhdWx0SGFuZGxlciBJbnRlcm5hbCBwcml2YXRlIGhhbmRsZXJcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjaGlsZEhhbmRsZXIgSGFuZGxlciBmdW5jdGlvbiBzcGVjaWZpZWQgaW4gY2hpbGQgY29tcG9uZW50XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gICAgICAgICAgICAgICAgVGhlIGNvbWJpbmVkIGhhbmRsZXJcbiAqL1xuXG52YXIgaGFuZGxlcldlYWtNYXAgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IHZhciBjb21iaW5lRXZlbnRIYW5kbGVycyA9IGZ1bmN0aW9uIGNvbWJpbmVFdmVudEhhbmRsZXJzKGRlZmF1bHRIYW5kbGVyLCBjaGlsZEhhbmRsZXIpIHtcbiAgaWYgKHR5cGVvZiBjaGlsZEhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZGVmYXVsdEhhbmRsZXI7XG4gIH1cbiAgaWYgKCFoYW5kbGVyV2Vha01hcC5oYXMoZGVmYXVsdEhhbmRsZXIpKSB7XG4gICAgaGFuZGxlcldlYWtNYXAuc2V0KGRlZmF1bHRIYW5kbGVyLCBuZXcgV2Vha01hcCgpKTtcbiAgfVxuICB2YXIgY2hpbGRXZWFrTWFwID0gaGFuZGxlcldlYWtNYXAuZ2V0KGRlZmF1bHRIYW5kbGVyKTtcbiAgaWYgKGNoaWxkV2Vha01hcC5oYXMoY2hpbGRIYW5kbGVyKSkge1xuICAgIHJldHVybiBjaGlsZFdlYWtNYXAuZ2V0KGNoaWxkSGFuZGxlcik7XG4gIH1cbiAgdmFyIGNvbWJpbmVIYW5kbGVyID0gZnVuY3Rpb24gY29tYmluZUhhbmRsZXIoKSB7XG4gICAgZGVmYXVsdEhhbmRsZXIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICAgIGNoaWxkSGFuZGxlci5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIH07XG4gIGNoaWxkV2Vha01hcC5zZXQoY2hpbGRIYW5kbGVyLCBjb21iaW5lSGFuZGxlcik7XG4gIHJldHVybiBjb21iaW5lSGFuZGxlcjtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIHNjYWxlIGZ1bmN0aW9uIG9mIGF4aXNcbiAqIEBwYXJhbSAge09iamVjdH0gICBheGlzICAgICAgICAgIFRoZSBvcHRpb24gb2YgYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSAgIGNoYXJ0VHlwZSAgICAgVGhlIGRpc3BsYXlOYW1lIG9mIGNoYXJ0XG4gKiBAcGFyYW0gIHtCb29sZWFufSAgaGFzQmFyICAgICAgICBpZiBpdCBoYXMgYSBiYXJcbiAqIEByZXR1cm4ge29iamVjdH0gICAgICAgICAgICAgICBUaGUgc2NhbGUgZnVuY3Rpb24gYW5kIHJlc29sdmVkIG5hbWVcbiAqL1xuZXhwb3J0IHZhciBwYXJzZVNjYWxlID0gZnVuY3Rpb24gcGFyc2VTY2FsZShheGlzLCBjaGFydFR5cGUsIGhhc0Jhcikge1xuICB2YXIgc2NhbGUgPSBheGlzLnNjYWxlLFxuICAgIHR5cGUgPSBheGlzLnR5cGUsXG4gICAgbGF5b3V0ID0gYXhpcy5sYXlvdXQsXG4gICAgYXhpc1R5cGUgPSBheGlzLmF4aXNUeXBlO1xuICBpZiAoc2NhbGUgPT09ICdhdXRvJykge1xuICAgIGlmIChsYXlvdXQgPT09ICdyYWRpYWwnICYmIGF4aXNUeXBlID09PSAncmFkaXVzQXhpcycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZUJhbmQoKSxcbiAgICAgICAgcmVhbFNjYWxlVHlwZTogJ2JhbmQnXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAobGF5b3V0ID09PSAncmFkaWFsJyAmJiBheGlzVHlwZSA9PT0gJ2FuZ2xlQXhpcycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZUxpbmVhcigpLFxuICAgICAgICByZWFsU2NhbGVUeXBlOiAnbGluZWFyJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdjYXRlZ29yeScgJiYgY2hhcnRUeXBlICYmIChjaGFydFR5cGUuaW5kZXhPZignTGluZUNoYXJ0JykgPj0gMCB8fCBjaGFydFR5cGUuaW5kZXhPZignQXJlYUNoYXJ0JykgPj0gMCB8fCBjaGFydFR5cGUuaW5kZXhPZignQ29tcG9zZWRDaGFydCcpID49IDAgJiYgIWhhc0JhcikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZVBvaW50KCksXG4gICAgICAgIHJlYWxTY2FsZVR5cGU6ICdwb2ludCdcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnY2F0ZWdvcnknKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY2FsZTogZDNTY2FsZXMuc2NhbGVCYW5kKCksXG4gICAgICAgIHJlYWxTY2FsZVR5cGU6ICdiYW5kJ1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjYWxlOiBkM1NjYWxlcy5zY2FsZUxpbmVhcigpLFxuICAgICAgcmVhbFNjYWxlVHlwZTogJ2xpbmVhcidcbiAgICB9O1xuICB9XG4gIGlmIChpc1N0cmluZyhzY2FsZSkpIHtcbiAgICB2YXIgbmFtZSA9IFwic2NhbGVcIi5jb25jYXQodXBwZXJGaXJzdChzY2FsZSkpO1xuICAgIHJldHVybiB7XG4gICAgICBzY2FsZTogKGQzU2NhbGVzW25hbWVdIHx8IGQzU2NhbGVzLnNjYWxlUG9pbnQpKCksXG4gICAgICByZWFsU2NhbGVUeXBlOiBkM1NjYWxlc1tuYW1lXSA/IG5hbWUgOiAncG9pbnQnXG4gICAgfTtcbiAgfVxuICByZXR1cm4gaXNGdW5jdGlvbihzY2FsZSkgPyB7XG4gICAgc2NhbGU6IHNjYWxlXG4gIH0gOiB7XG4gICAgc2NhbGU6IGQzU2NhbGVzLnNjYWxlUG9pbnQoKSxcbiAgICByZWFsU2NhbGVUeXBlOiAncG9pbnQnXG4gIH07XG59O1xudmFyIEVQUyA9IDFlLTQ7XG5leHBvcnQgdmFyIGNoZWNrRG9tYWluT2ZTY2FsZSA9IGZ1bmN0aW9uIGNoZWNrRG9tYWluT2ZTY2FsZShzY2FsZSkge1xuICB2YXIgZG9tYWluID0gc2NhbGUuZG9tYWluKCk7XG4gIGlmICghZG9tYWluIHx8IGRvbWFpbi5sZW5ndGggPD0gMikge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbGVuID0gZG9tYWluLmxlbmd0aDtcbiAgdmFyIHJhbmdlID0gc2NhbGUucmFuZ2UoKTtcbiAgdmFyIG1pblZhbHVlID0gTWF0aC5taW4ocmFuZ2VbMF0sIHJhbmdlWzFdKSAtIEVQUztcbiAgdmFyIG1heFZhbHVlID0gTWF0aC5tYXgocmFuZ2VbMF0sIHJhbmdlWzFdKSArIEVQUztcbiAgdmFyIGZpcnN0ID0gc2NhbGUoZG9tYWluWzBdKTtcbiAgdmFyIGxhc3QgPSBzY2FsZShkb21haW5bbGVuIC0gMV0pO1xuICBpZiAoZmlyc3QgPCBtaW5WYWx1ZSB8fCBmaXJzdCA+IG1heFZhbHVlIHx8IGxhc3QgPCBtaW5WYWx1ZSB8fCBsYXN0ID4gbWF4VmFsdWUpIHtcbiAgICBzY2FsZS5kb21haW4oW2RvbWFpblswXSwgZG9tYWluW2xlbiAtIDFdXSk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGZpbmRQb3NpdGlvbk9mQmFyID0gZnVuY3Rpb24gZmluZFBvc2l0aW9uT2ZCYXIoYmFyUG9zaXRpb24sIGNoaWxkKSB7XG4gIGlmICghYmFyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gYmFyUG9zaXRpb24ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYmFyUG9zaXRpb25baV0uaXRlbSA9PT0gY2hpbGQpIHtcbiAgICAgIHJldHVybiBiYXJQb3NpdGlvbltpXS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIEJvdGggdmFsdWUgYW5kIGRvbWFpbiBhcmUgdHVwbGVzIG9mIHR3byBudW1iZXJzXG4gKiAtIGJ1dCB0aGUgdHlwZSBzdGF5cyBhcyBhcnJheSBvZiBudW1iZXJzIHVudGlsIHdlIGhhdmUgYmV0dGVyIHN1cHBvcnQgaW4gcmVzdCBvZiB0aGUgYXBwXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZSBpbnB1dCB0aGF0IHdpbGwgYmUgdHJ1bmNhdGVkXG4gKiBAcGFyYW0ge0FycmF5fSBkb21haW4gYm91bmRhcmllc1xuICogQHJldHVybnMge0FycmF5fSB0dXBsZSBvZiB0d28gbnVtYmVyc1xuICovXG5leHBvcnQgdmFyIHRydW5jYXRlQnlEb21haW4gPSBmdW5jdGlvbiB0cnVuY2F0ZUJ5RG9tYWluKHZhbHVlLCBkb21haW4pIHtcbiAgaWYgKCFkb21haW4gfHwgZG9tYWluLmxlbmd0aCAhPT0gMiB8fCAhaXNOdW1iZXIoZG9tYWluWzBdKSB8fCAhaXNOdW1iZXIoZG9tYWluWzFdKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgbWluVmFsdWUgPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gIHZhciBtYXhWYWx1ZSA9IE1hdGgubWF4KGRvbWFpblswXSwgZG9tYWluWzFdKTtcbiAgdmFyIHJlc3VsdCA9IFt2YWx1ZVswXSwgdmFsdWVbMV1dO1xuICBpZiAoIWlzTnVtYmVyKHZhbHVlWzBdKSB8fCB2YWx1ZVswXSA8IG1pblZhbHVlKSB7XG4gICAgcmVzdWx0WzBdID0gbWluVmFsdWU7XG4gIH1cbiAgaWYgKCFpc051bWJlcih2YWx1ZVsxXSkgfHwgdmFsdWVbMV0gPiBtYXhWYWx1ZSkge1xuICAgIHJlc3VsdFsxXSA9IG1heFZhbHVlO1xuICB9XG4gIGlmIChyZXN1bHRbMF0gPiBtYXhWYWx1ZSkge1xuICAgIHJlc3VsdFswXSA9IG1heFZhbHVlO1xuICB9XG4gIGlmIChyZXN1bHRbMV0gPCBtaW5WYWx1ZSkge1xuICAgIHJlc3VsdFsxXSA9IG1pblZhbHVlO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFN0YWNrcyBhbGwgcG9zaXRpdmUgbnVtYmVycyBhYm92ZSB6ZXJvIGFuZCBhbGwgbmVnYXRpdmUgbnVtYmVycyBiZWxvdyB6ZXJvLlxuICpcbiAqIElmIGFsbCB2YWx1ZXMgaW4gdGhlIHNlcmllcyBhcmUgcG9zaXRpdmUgdGhlbiB0aGlzIGJlaGF2ZXMgdGhlIHNhbWUgYXMgJ25vbmUnIHN0YWNrZXIuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gc2VyaWVzIGZyb20gZDMtc2hhcGUgU3RhY2tcbiAqIEByZXR1cm4ge0FycmF5fSBzZXJpZXMgd2l0aCBhcHBsaWVkIG9mZnNldFxuICovXG5leHBvcnQgdmFyIG9mZnNldFNpZ24gPSBmdW5jdGlvbiBvZmZzZXRTaWduKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGg7XG4gIGlmIChuIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIgaiA9IDAsIG0gPSBzZXJpZXNbMF0ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgdmFyIHBvc2l0aXZlID0gMDtcbiAgICB2YXIgbmVnYXRpdmUgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpc05hbihzZXJpZXNbaV1bal1bMV0pID8gc2VyaWVzW2ldW2pdWzBdIDogc2VyaWVzW2ldW2pdWzFdO1xuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZywgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbiAgICAgIGlmICh2YWx1ZSA+PSAwKSB7XG4gICAgICAgIHNlcmllc1tpXVtqXVswXSA9IHBvc2l0aXZlO1xuICAgICAgICBzZXJpZXNbaV1bal1bMV0gPSBwb3NpdGl2ZSArIHZhbHVlO1xuICAgICAgICBwb3NpdGl2ZSA9IHNlcmllc1tpXVtqXVsxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcmllc1tpXVtqXVswXSA9IG5lZ2F0aXZlO1xuICAgICAgICBzZXJpZXNbaV1bal1bMV0gPSBuZWdhdGl2ZSArIHZhbHVlO1xuICAgICAgICBuZWdhdGl2ZSA9IHNlcmllc1tpXVtqXVsxXTtcbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcsIG5vLXBhcmFtLXJlYXNzaWduICovXG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFJlcGxhY2VzIGFsbCBuZWdhdGl2ZSB2YWx1ZXMgd2l0aCB6ZXJvIHdoZW4gc3RhY2tpbmcgZGF0YS5cbiAqXG4gKiBJZiBhbGwgdmFsdWVzIGluIHRoZSBzZXJpZXMgYXJlIHBvc2l0aXZlIHRoZW4gdGhpcyBiZWhhdmVzIHRoZSBzYW1lIGFzICdub25lJyBzdGFja2VyLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHNlcmllcyBmcm9tIGQzLXNoYXBlIFN0YWNrXG4gKiBAcmV0dXJuIHtBcnJheX0gc2VyaWVzIHdpdGggYXBwbGllZCBvZmZzZXRcbiAqL1xuZXhwb3J0IHZhciBvZmZzZXRQb3NpdGl2ZSA9IGZ1bmN0aW9uIG9mZnNldFBvc2l0aXZlKHNlcmllcykge1xuICB2YXIgbiA9IHNlcmllcy5sZW5ndGg7XG4gIGlmIChuIDw9IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICh2YXIgaiA9IDAsIG0gPSBzZXJpZXNbMF0ubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgdmFyIHBvc2l0aXZlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFyIHZhbHVlID0gaXNOYW4oc2VyaWVzW2ldW2pdWzFdKSA/IHNlcmllc1tpXVtqXVswXSA6IHNlcmllc1tpXVtqXVsxXTtcblxuICAgICAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcsIG5vLXBhcmFtLXJlYXNzaWduICovXG4gICAgICBpZiAodmFsdWUgPj0gMCkge1xuICAgICAgICBzZXJpZXNbaV1bal1bMF0gPSBwb3NpdGl2ZTtcbiAgICAgICAgc2VyaWVzW2ldW2pdWzFdID0gcG9zaXRpdmUgKyB2YWx1ZTtcbiAgICAgICAgcG9zaXRpdmUgPSBzZXJpZXNbaV1bal1bMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJpZXNbaV1bal1bMF0gPSAwO1xuICAgICAgICBzZXJpZXNbaV1bal1bMV0gPSAwO1xuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZywgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdHlwZSB0byBjb21wdXRlIG9mZnNldCBmb3Igc3RhY2tlZCBkYXRhLlxuICpcbiAqIGQzLXNoYXBlIGhhcyBzb21ldGhpbmcgZmlzaHkgZ29pbmcgb24gd2l0aCBpdHMgdHlwZXMuXG4gKiBJbiBAZGVmaW5pdGVseXR5cGVkL2QzLXNoYXBlLCB0aGlzIGZ1bmN0aW9uICh0aGUgb2Zmc2V0IGFjY2Vzc29yKSBpcyB0eXBlZCBhcyBTZXJpZXM8PiA9PiB2b2lkLlxuICogSG93ZXZlciEgV2hlbiBJIGFjdHVhbGx5IG9wZW4gdGhlIHN0b3J5Ym9vayBJIGNhbiBzZWUgdGhhdCB0aGUgb2Zmc2V0IGFjY2Vzc29yIGFjdHVhbGx5IHJlY2VpdmVzIEFycmF5PFNlcmllczw+Pi5cbiAqIFRoZSBzYW1lIEkgY2FuIHNlZSBpbiB0aGUgc291cmNlIGNvZGUgaXRzZWxmOlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvZGlzY3Vzc2lvbnMvNjYwNDJcbiAqIFRoYXQgb25lIHVuZm9ydHVuYXRlbHkgaGFzIG5vIHR5cGVzIGJ1dCB3ZSBjYW4gdGVsbCBpdCBwYXNzZXMgdGhyZWUtZGltZW5zaW9uYWwgYXJyYXkuXG4gKlxuICogV2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGF0IGRlZmluaXRlbHl0eXBlZCBpcyB3cm9uZyBvbiB0aGlzIG9uZS5cbiAqIFRoZXJlJ3Mgb3BlbiBkaXNjdXNzaW9uIG9uIHRoaXMgdG9waWMgd2l0aG91dCBtdWNoIGF0dGVudGlvbjpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9EZWZpbml0ZWx5VHlwZWQvRGVmaW5pdGVseVR5cGVkL2Rpc2N1c3Npb25zLzY2MDQyXG4gKi9cblxudmFyIFNUQUNLX09GRlNFVF9NQVAgPSB7XG4gIHNpZ246IG9mZnNldFNpZ24sXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgZGVmaW5pdGVseXR5cGVkIHR5cGVzIGFyZSBpbmNvcnJlY3RcbiAgZXhwYW5kOiBzdGFja09mZnNldEV4cGFuZCxcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBkZWZpbml0ZWx5dHlwZWQgdHlwZXMgYXJlIGluY29ycmVjdFxuICBub25lOiBzdGFja09mZnNldE5vbmUsXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgZGVmaW5pdGVseXR5cGVkIHR5cGVzIGFyZSBpbmNvcnJlY3RcbiAgc2lsaG91ZXR0ZTogc3RhY2tPZmZzZXRTaWxob3VldHRlLFxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGRlZmluaXRlbHl0eXBlZCB0eXBlcyBhcmUgaW5jb3JyZWN0XG4gIHdpZ2dsZTogc3RhY2tPZmZzZXRXaWdnbGUsXG4gIHBvc2l0aXZlOiBvZmZzZXRQb3NpdGl2ZVxufTtcbmV4cG9ydCB2YXIgZ2V0U3RhY2tlZERhdGEgPSBmdW5jdGlvbiBnZXRTdGFja2VkRGF0YShkYXRhLCBzdGFja0l0ZW1zLCBvZmZzZXRUeXBlKSB7XG4gIHZhciBkYXRhS2V5cyA9IHN0YWNrSXRlbXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW0ucHJvcHMuZGF0YUtleTtcbiAgfSk7XG4gIHZhciBvZmZzZXRBY2Nlc3NvciA9IFNUQUNLX09GRlNFVF9NQVBbb2Zmc2V0VHlwZV07XG4gIHZhciBzdGFjayA9IHNoYXBlU3RhY2soKVxuICAvLyBAdHMtZXhwZWN0LWVycm9yIHN0YWNrLmtleXMgdHlwZSB3YW50cyBhbiBhcnJheSBvZiBzdHJpbmdzLCBidXQgd2UgcHJvdmlkZSBhcnJheSBvZiBEYXRhS2V5c1xuICAua2V5cyhkYXRhS2V5cykudmFsdWUoZnVuY3Rpb24gKGQsIGtleSkge1xuICAgIHJldHVybiArZ2V0VmFsdWVCeURhdGFLZXkoZCwga2V5LCAwKTtcbiAgfSkub3JkZXIoc3RhY2tPcmRlck5vbmUpXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgZGVmaW5pdGVseXR5cGVkIHR5cGVzIGFyZSBpbmNvcnJlY3RcbiAgLm9mZnNldChvZmZzZXRBY2Nlc3Nvcik7XG4gIHJldHVybiBzdGFjayhkYXRhKTtcbn07XG5leHBvcnQgdmFyIGdldFN0YWNrR3JvdXBzQnlBeGlzSWQgPSBmdW5jdGlvbiBnZXRTdGFja0dyb3Vwc0J5QXhpc0lkKGRhdGEsIF9pdGVtcywgbnVtZXJpY0F4aXNJZCwgY2F0ZUF4aXNJZCwgb2Zmc2V0VHlwZSwgcmV2ZXJzZVN0YWNrT3JkZXIpIHtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyByZXZlcnNpbmcgaXRlbXMgdG8gYWZmZWN0IHJlbmRlciBvcmRlciAoZm9yIGxheWVyaW5nKVxuICB2YXIgaXRlbXMgPSByZXZlcnNlU3RhY2tPcmRlciA/IF9pdGVtcy5yZXZlcnNlKCkgOiBfaXRlbXM7XG4gIHZhciBwYXJlbnRTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSA9IHt9O1xuICB2YXIgc3RhY2tHcm91cHMgPSBpdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaXRlbSkge1xuICAgIHZhciBfaXRlbSRwcm9wczIgPSBpdGVtLnByb3BzLFxuICAgICAgc3RhY2tJZCA9IF9pdGVtJHByb3BzMi5zdGFja0lkLFxuICAgICAgaGlkZSA9IF9pdGVtJHByb3BzMi5oaWRlO1xuICAgIGlmIChoaWRlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgYXhpc0lkID0gaXRlbS5wcm9wc1tudW1lcmljQXhpc0lkXTtcbiAgICB2YXIgcGFyZW50R3JvdXAgPSByZXN1bHRbYXhpc0lkXSB8fCB7XG4gICAgICBoYXNTdGFjazogZmFsc2UsXG4gICAgICBzdGFja0dyb3Vwczoge31cbiAgICB9O1xuICAgIGlmIChpc051bU9yU3RyKHN0YWNrSWQpKSB7XG4gICAgICB2YXIgY2hpbGRHcm91cCA9IHBhcmVudEdyb3VwLnN0YWNrR3JvdXBzW3N0YWNrSWRdIHx8IHtcbiAgICAgICAgbnVtZXJpY0F4aXNJZDogbnVtZXJpY0F4aXNJZCxcbiAgICAgICAgY2F0ZUF4aXNJZDogY2F0ZUF4aXNJZCxcbiAgICAgICAgaXRlbXM6IFtdXG4gICAgICB9O1xuICAgICAgY2hpbGRHcm91cC5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgcGFyZW50R3JvdXAuaGFzU3RhY2sgPSB0cnVlO1xuICAgICAgcGFyZW50R3JvdXAuc3RhY2tHcm91cHNbc3RhY2tJZF0gPSBjaGlsZEdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnRHcm91cC5zdGFja0dyb3Vwc1t1bmlxdWVJZCgnX3N0YWNrSWRfJyldID0ge1xuICAgICAgICBudW1lcmljQXhpc0lkOiBudW1lcmljQXhpc0lkLFxuICAgICAgICBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLFxuICAgICAgICBpdGVtczogW2l0ZW1dXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBheGlzSWQsIHBhcmVudEdyb3VwKSk7XG4gIH0sIHBhcmVudFN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlKTtcbiAgdmFyIGF4aXNTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSA9IHt9O1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3RhY2tHcm91cHMpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBheGlzSWQpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1theGlzSWRdO1xuICAgIGlmIChncm91cC5oYXNTdGFjaykge1xuICAgICAgdmFyIHN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlID0ge307XG4gICAgICBncm91cC5zdGFja0dyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwLnN0YWNrR3JvdXBzKS5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgc3RhY2tJZCkge1xuICAgICAgICB2YXIgZyA9IGdyb3VwLnN0YWNrR3JvdXBzW3N0YWNrSWRdO1xuICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBzdGFja0lkLCB7XG4gICAgICAgICAgbnVtZXJpY0F4aXNJZDogbnVtZXJpY0F4aXNJZCxcbiAgICAgICAgICBjYXRlQXhpc0lkOiBjYXRlQXhpc0lkLFxuICAgICAgICAgIGl0ZW1zOiBnLml0ZW1zLFxuICAgICAgICAgIHN0YWNrZWREYXRhOiBnZXRTdGFja2VkRGF0YShkYXRhLCBnLml0ZW1zLCBvZmZzZXRUeXBlKVxuICAgICAgICB9KSk7XG4gICAgICB9LCBzdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3VsdCksIHt9LCBfZGVmaW5lUHJvcGVydHkoe30sIGF4aXNJZCwgZ3JvdXApKTtcbiAgfSwgYXhpc1N0YWNrR3JvdXBzSW5pdGlhbFZhbHVlKTtcbn07XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSBzY2FsZSBmdW5jdGlvbiBvZiBheGlzXG4gKiBAcGFyYW0ge09iamVjdH0gc2NhbGUgVGhlIHNjYWxlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYXhpc1xuICogQHJldHVybiB7T2JqZWN0fSAgICAgIG51bGxcbiAqL1xuZXhwb3J0IHZhciBnZXRUaWNrc09mU2NhbGUgPSBmdW5jdGlvbiBnZXRUaWNrc09mU2NhbGUoc2NhbGUsIG9wdHMpIHtcbiAgdmFyIHJlYWxTY2FsZVR5cGUgPSBvcHRzLnJlYWxTY2FsZVR5cGUsXG4gICAgdHlwZSA9IG9wdHMudHlwZSxcbiAgICB0aWNrQ291bnQgPSBvcHRzLnRpY2tDb3VudCxcbiAgICBvcmlnaW5hbERvbWFpbiA9IG9wdHMub3JpZ2luYWxEb21haW4sXG4gICAgYWxsb3dEZWNpbWFscyA9IG9wdHMuYWxsb3dEZWNpbWFscztcbiAgdmFyIHNjYWxlVHlwZSA9IHJlYWxTY2FsZVR5cGUgfHwgb3B0cy5zY2FsZTtcbiAgaWYgKHNjYWxlVHlwZSAhPT0gJ2F1dG8nICYmIHNjYWxlVHlwZSAhPT0gJ2xpbmVhcicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInICYmIG9yaWdpbmFsRG9tYWluICYmIChvcmlnaW5hbERvbWFpblswXSA9PT0gJ2F1dG8nIHx8IG9yaWdpbmFsRG9tYWluWzFdID09PSAnYXV0bycpKSB7XG4gICAgLy8gQ2FsY3VsYXRlIHRoZSB0aWNrcyBieSB0aGUgbnVtYmVyIG9mIGdyaWQgd2hlbiB0aGUgYXhpcyBpcyBhIG51bWJlciBheGlzXG4gICAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICAgIGlmICghZG9tYWluLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciB0aWNrVmFsdWVzID0gZ2V0TmljZVRpY2tWYWx1ZXMoZG9tYWluLCB0aWNrQ291bnQsIGFsbG93RGVjaW1hbHMpO1xuICAgIHNjYWxlLmRvbWFpbihbbWluKHRpY2tWYWx1ZXMpLCBtYXgodGlja1ZhbHVlcyldKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmljZVRpY2tzOiB0aWNrVmFsdWVzXG4gICAgfTtcbiAgfVxuICBpZiAodGlja0NvdW50ICYmIHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgdmFyIF9kb21haW4gPSBzY2FsZS5kb21haW4oKTtcbiAgICB2YXIgX3RpY2tWYWx1ZXMgPSBnZXRUaWNrVmFsdWVzRml4ZWREb21haW4oX2RvbWFpbiwgdGlja0NvdW50LCBhbGxvd0RlY2ltYWxzKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmljZVRpY2tzOiBfdGlja1ZhbHVlc1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVDb29yZGluYXRlT2ZMaW5lKF9yZWY1KSB7XG4gIHZhciBheGlzID0gX3JlZjUuYXhpcyxcbiAgICB0aWNrcyA9IF9yZWY1LnRpY2tzLFxuICAgIGJhbmRTaXplID0gX3JlZjUuYmFuZFNpemUsXG4gICAgZW50cnkgPSBfcmVmNS5lbnRyeSxcbiAgICBpbmRleCA9IF9yZWY1LmluZGV4LFxuICAgIGRhdGFLZXkgPSBfcmVmNS5kYXRhS2V5O1xuICBpZiAoYXhpcy50eXBlID09PSAnY2F0ZWdvcnknKSB7XG4gICAgLy8gZmluZCBjb29yZGluYXRlIG9mIGNhdGVnb3J5IGF4aXMgYnkgdGhlIHZhbHVlIG9mIGNhdGVnb3J5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciB3aHkgZG9lcyB0aGlzIHVzZSBkaXJlY3Qgb2JqZWN0IGFjY2VzcyBpbnN0ZWFkIG9mIGdldFZhbHVlQnlEYXRhS2V5P1xuICAgIGlmICghYXhpcy5hbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSAmJiBheGlzLmRhdGFLZXkgJiYgIWlzTmlsKGVudHJ5W2F4aXMuZGF0YUtleV0pKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdoeSBkb2VzIHRoaXMgdXNlIGRpcmVjdCBvYmplY3QgYWNjZXNzIGluc3RlYWQgb2YgZ2V0VmFsdWVCeURhdGFLZXk/XG4gICAgICB2YXIgbWF0Y2hlZFRpY2sgPSBmaW5kRW50cnlJbkFycmF5KHRpY2tzLCAndmFsdWUnLCBlbnRyeVtheGlzLmRhdGFLZXldKTtcbiAgICAgIGlmIChtYXRjaGVkVGljaykge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZFRpY2suY29vcmRpbmF0ZSArIGJhbmRTaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRpY2tzW2luZGV4XSA/IHRpY2tzW2luZGV4XS5jb29yZGluYXRlICsgYmFuZFNpemUgLyAyIDogbnVsbDtcbiAgfVxuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZUJ5RGF0YUtleShlbnRyeSwgIWlzTmlsKGRhdGFLZXkpID8gZGF0YUtleSA6IGF4aXMuZGF0YUtleSk7XG4gIHJldHVybiAhaXNOaWwodmFsdWUpID8gYXhpcy5zY2FsZSh2YWx1ZSkgOiBudWxsO1xufVxuZXhwb3J0IHZhciBnZXRDYXRlQ29vcmRpbmF0ZU9mQmFyID0gZnVuY3Rpb24gZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhcihfcmVmNikge1xuICB2YXIgYXhpcyA9IF9yZWY2LmF4aXMsXG4gICAgdGlja3MgPSBfcmVmNi50aWNrcyxcbiAgICBvZmZzZXQgPSBfcmVmNi5vZmZzZXQsXG4gICAgYmFuZFNpemUgPSBfcmVmNi5iYW5kU2l6ZSxcbiAgICBlbnRyeSA9IF9yZWY2LmVudHJ5LFxuICAgIGluZGV4ID0gX3JlZjYuaW5kZXg7XG4gIGlmIChheGlzLnR5cGUgPT09ICdjYXRlZ29yeScpIHtcbiAgICByZXR1cm4gdGlja3NbaW5kZXhdID8gdGlja3NbaW5kZXhdLmNvb3JkaW5hdGUgKyBvZmZzZXQgOiBudWxsO1xuICB9XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlQnlEYXRhS2V5KGVudHJ5LCBheGlzLmRhdGFLZXksIGF4aXMuZG9tYWluW2luZGV4XSk7XG4gIHJldHVybiAhaXNOaWwodmFsdWUpID8gYXhpcy5zY2FsZSh2YWx1ZSkgLSBiYW5kU2l6ZSAvIDIgKyBvZmZzZXQgOiBudWxsO1xufTtcbmV4cG9ydCB2YXIgZ2V0QmFzZVZhbHVlT2ZCYXIgPSBmdW5jdGlvbiBnZXRCYXNlVmFsdWVPZkJhcihfcmVmNykge1xuICB2YXIgbnVtZXJpY0F4aXMgPSBfcmVmNy5udW1lcmljQXhpcztcbiAgdmFyIGRvbWFpbiA9IG51bWVyaWNBeGlzLnNjYWxlLmRvbWFpbigpO1xuICBpZiAobnVtZXJpY0F4aXMudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YXIgbWluVmFsdWUgPSBNYXRoLm1pbihkb21haW5bMF0sIGRvbWFpblsxXSk7XG4gICAgdmFyIG1heFZhbHVlID0gTWF0aC5tYXgoZG9tYWluWzBdLCBkb21haW5bMV0pO1xuICAgIGlmIChtaW5WYWx1ZSA8PSAwICYmIG1heFZhbHVlID49IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAobWF4VmFsdWUgPCAwKSB7XG4gICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtaW5WYWx1ZTtcbiAgfVxuICByZXR1cm4gZG9tYWluWzBdO1xufTtcbmV4cG9ydCB2YXIgZ2V0U3RhY2tlZERhdGFPZkl0ZW0gPSBmdW5jdGlvbiBnZXRTdGFja2VkRGF0YU9mSXRlbShpdGVtLCBzdGFja0dyb3Vwcykge1xuICB2YXIgc3RhY2tJZCA9IGl0ZW0ucHJvcHMuc3RhY2tJZDtcbiAgaWYgKGlzTnVtT3JTdHIoc3RhY2tJZCkpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1tzdGFja0lkXTtcbiAgICBpZiAoZ3JvdXApIHtcbiAgICAgIHZhciBpdGVtSW5kZXggPSBncm91cC5pdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgICAgcmV0dXJuIGl0ZW1JbmRleCA+PSAwID8gZ3JvdXAuc3RhY2tlZERhdGFbaXRlbUluZGV4XSA6IG51bGw7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufTtcbnZhciBnZXREb21haW5PZlNpbmdsZSA9IGZ1bmN0aW9uIGdldERvbWFpbk9mU2luZ2xlKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgcmV0dXJuIFttaW4oZW50cnkuY29uY2F0KFtyZXN1bHRbMF1dKS5maWx0ZXIoaXNOdW1iZXIpKSwgbWF4KGVudHJ5LmNvbmNhdChbcmVzdWx0WzFdXSkuZmlsdGVyKGlzTnVtYmVyKSldO1xuICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xufTtcbmV4cG9ydCB2YXIgZ2V0RG9tYWluT2ZTdGFja0dyb3VwcyA9IGZ1bmN0aW9uIGdldERvbWFpbk9mU3RhY2tHcm91cHMoc3RhY2tHcm91cHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdGFja0dyb3VwcykucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHN0YWNrSWQpIHtcbiAgICB2YXIgZ3JvdXAgPSBzdGFja0dyb3Vwc1tzdGFja0lkXTtcbiAgICB2YXIgc3RhY2tlZERhdGEgPSBncm91cC5zdGFja2VkRGF0YTtcbiAgICB2YXIgZG9tYWluID0gc3RhY2tlZERhdGEucmVkdWNlKGZ1bmN0aW9uIChyZXMsIGVudHJ5KSB7XG4gICAgICB2YXIgcyA9IGdldERvbWFpbk9mU2luZ2xlKGVudHJ5LnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4ICsgMSkpO1xuICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXNbMF0sIHNbMF0pLCBNYXRoLm1heChyZXNbMV0sIHNbMV0pXTtcbiAgICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pO1xuICAgIHJldHVybiBbTWF0aC5taW4oZG9tYWluWzBdLCByZXN1bHRbMF0pLCBNYXRoLm1heChkb21haW5bMV0sIHJlc3VsdFsxXSldO1xuICB9LCBbSW5maW5pdHksIC1JbmZpbml0eV0pLm1hcChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSW5maW5pdHkgfHwgcmVzdWx0ID09PSAtSW5maW5pdHkgPyAwIDogcmVzdWx0O1xuICB9KTtcbn07XG5leHBvcnQgdmFyIE1JTl9WQUxVRV9SRUcgPSAvXmRhdGFNaW5bXFxzXSotW1xcc10qKFswLTldKyhbLl17MX1bMC05XSspezAsMX0pJC87XG5leHBvcnQgdmFyIE1BWF9WQUxVRV9SRUcgPSAvXmRhdGFNYXhbXFxzXSpcXCtbXFxzXSooWzAtOV0rKFsuXXsxfVswLTldKyl7MCwxfSkkLztcbmV4cG9ydCB2YXIgcGFyc2VTcGVjaWZpZWREb21haW4gPSBmdW5jdGlvbiBwYXJzZVNwZWNpZmllZERvbWFpbihzcGVjaWZpZWREb21haW4sIGRhdGFEb21haW4sIGFsbG93RGF0YU92ZXJmbG93KSB7XG4gIGlmIChpc0Z1bmN0aW9uKHNwZWNpZmllZERvbWFpbikpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVkRG9tYWluKGRhdGFEb21haW4sIGFsbG93RGF0YU92ZXJmbG93KTtcbiAgfVxuICBpZiAoIUFycmF5LmlzQXJyYXkoc3BlY2lmaWVkRG9tYWluKSkge1xuICAgIHJldHVybiBkYXRhRG9tYWluO1xuICB9XG4gIHZhciBkb21haW4gPSBbXTtcblxuICAvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuICBpZiAoaXNOdW1iZXIoc3BlY2lmaWVkRG9tYWluWzBdKSkge1xuICAgIGRvbWFpblswXSA9IGFsbG93RGF0YU92ZXJmbG93ID8gc3BlY2lmaWVkRG9tYWluWzBdIDogTWF0aC5taW4oc3BlY2lmaWVkRG9tYWluWzBdLCBkYXRhRG9tYWluWzBdKTtcbiAgfSBlbHNlIGlmIChNSU5fVkFMVUVfUkVHLnRlc3Qoc3BlY2lmaWVkRG9tYWluWzBdKSkge1xuICAgIHZhciB2YWx1ZSA9ICtNSU5fVkFMVUVfUkVHLmV4ZWMoc3BlY2lmaWVkRG9tYWluWzBdKVsxXTtcbiAgICBkb21haW5bMF0gPSBkYXRhRG9tYWluWzBdIC0gdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihzcGVjaWZpZWREb21haW5bMF0pKSB7XG4gICAgZG9tYWluWzBdID0gc3BlY2lmaWVkRG9tYWluWzBdKGRhdGFEb21haW5bMF0pO1xuICB9IGVsc2Uge1xuICAgIGRvbWFpblswXSA9IGRhdGFEb21haW5bMF07XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHNwZWNpZmllZERvbWFpblsxXSkpIHtcbiAgICBkb21haW5bMV0gPSBhbGxvd0RhdGFPdmVyZmxvdyA/IHNwZWNpZmllZERvbWFpblsxXSA6IE1hdGgubWF4KHNwZWNpZmllZERvbWFpblsxXSwgZGF0YURvbWFpblsxXSk7XG4gIH0gZWxzZSBpZiAoTUFYX1ZBTFVFX1JFRy50ZXN0KHNwZWNpZmllZERvbWFpblsxXSkpIHtcbiAgICB2YXIgX3ZhbHVlID0gK01BWF9WQUxVRV9SRUcuZXhlYyhzcGVjaWZpZWREb21haW5bMV0pWzFdO1xuICAgIGRvbWFpblsxXSA9IGRhdGFEb21haW5bMV0gKyBfdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNGdW5jdGlvbihzcGVjaWZpZWREb21haW5bMV0pKSB7XG4gICAgZG9tYWluWzFdID0gc3BlY2lmaWVkRG9tYWluWzFdKGRhdGFEb21haW5bMV0pO1xuICB9IGVsc2Uge1xuICAgIGRvbWFpblsxXSA9IGRhdGFEb21haW5bMV07XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuXG4gIHJldHVybiBkb21haW47XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBiZXR3ZWVuIHR3byBjYXRlZ29yeVxuICogQHBhcmFtICB7T2JqZWN0fSBheGlzICBUaGUgb3B0aW9ucyBvZiBheGlzXG4gKiBAcGFyYW0gIHtBcnJheX0gIHRpY2tzIFRoZSB0aWNrcyBvZiBheGlzXG4gKiBAcGFyYW0gIHtCb29sZWFufSBpc0JhciBpZiBpdGVtcyBpbiBheGlzIGFyZSBiYXJzXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IFNpemVcbiAqL1xuZXhwb3J0IHZhciBnZXRCYW5kU2l6ZU9mQXhpcyA9IGZ1bmN0aW9uIGdldEJhbmRTaXplT2ZBeGlzKGF4aXMsIHRpY2tzLCBpc0Jhcikge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIG5lZWQgdG8gcmV0aGluayBzY2FsZSB0eXBlXG4gIGlmIChheGlzICYmIGF4aXMuc2NhbGUgJiYgYXhpcy5zY2FsZS5iYW5kd2lkdGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHdlIG5lZWQgdG8gcmV0aGluayBzY2FsZSB0eXBlXG4gICAgdmFyIGJhbmRXaWR0aCA9IGF4aXMuc2NhbGUuYmFuZHdpZHRoKCk7XG4gICAgaWYgKCFpc0JhciB8fCBiYW5kV2lkdGggPiAwKSB7XG4gICAgICByZXR1cm4gYmFuZFdpZHRoO1xuICAgIH1cbiAgfVxuICBpZiAoYXhpcyAmJiB0aWNrcyAmJiB0aWNrcy5sZW5ndGggPj0gMikge1xuICAgIHZhciBvcmRlcmVkVGlja3MgPSBzb3J0QnkodGlja3MsIGZ1bmN0aW9uIChvKSB7XG4gICAgICByZXR1cm4gby5jb29yZGluYXRlO1xuICAgIH0pO1xuICAgIHZhciBiYW5kU2l6ZSA9IEluZmluaXR5O1xuICAgIGZvciAodmFyIGkgPSAxLCBsZW4gPSBvcmRlcmVkVGlja3MubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjdXIgPSBvcmRlcmVkVGlja3NbaV07XG4gICAgICB2YXIgcHJldiA9IG9yZGVyZWRUaWNrc1tpIC0gMV07XG4gICAgICBiYW5kU2l6ZSA9IE1hdGgubWluKChjdXIuY29vcmRpbmF0ZSB8fCAwKSAtIChwcmV2LmNvb3JkaW5hdGUgfHwgMCksIGJhbmRTaXplKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhbmRTaXplID09PSBJbmZpbml0eSA/IDAgOiBiYW5kU2l6ZTtcbiAgfVxuICByZXR1cm4gaXNCYXIgPyB1bmRlZmluZWQgOiAwO1xufTtcbi8qKlxuICogcGFyc2UgdGhlIGRvbWFpbiBvZiBhIGNhdGVnb3J5IGF4aXMgd2hlbiBhIGRvbWFpbiBpcyBzcGVjaWZpZWRcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgICAgIHNwZWNpZmllZERvbWFpbiAgVGhlIGRvbWFpbiBzcGVjaWZpZWQgYnkgdXNlcnNcbiAqIEBwYXJhbSAgIHtBcnJheX0gICAgICAgIGNhbGN1bGF0ZWREb21haW4gVGhlIGRvbWFpbiBjYWxjdWxhdGVkIGJ5IGRhdGVLZXlcbiAqIEBwYXJhbSAgIHtSZWFjdEVsZW1lbnR9IGF4aXNDaGlsZCAgICAgICAgVGhlIGF4aXMgUmVhY3RFbGVtZW50XG4gKiBAcmV0dXJucyB7QXJyYXl9ICAgICAgICBkb21haW5zXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyA9IGZ1bmN0aW9uIHBhcnNlRG9tYWluT2ZDYXRlZ29yeUF4aXMoc3BlY2lmaWVkRG9tYWluLCBjYWxjdWxhdGVkRG9tYWluLCBheGlzQ2hpbGQpIHtcbiAgaWYgKCFzcGVjaWZpZWREb21haW4gfHwgIXNwZWNpZmllZERvbWFpbi5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlZERvbWFpbjtcbiAgfVxuICBpZiAoaXNFcXVhbChzcGVjaWZpZWREb21haW4sIGdldChheGlzQ2hpbGQsICd0eXBlLmRlZmF1bHRQcm9wcy5kb21haW4nKSkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlZERvbWFpbjtcbiAgfVxuICByZXR1cm4gc3BlY2lmaWVkRG9tYWluO1xufTtcbmV4cG9ydCB2YXIgZ2V0VG9vbHRpcEl0ZW0gPSBmdW5jdGlvbiBnZXRUb29sdGlwSXRlbShncmFwaGljYWxJdGVtLCBwYXlsb2FkKSB7XG4gIHZhciBfZ3JhcGhpY2FsSXRlbSRwcm9wcyA9IGdyYXBoaWNhbEl0ZW0ucHJvcHMsXG4gICAgZGF0YUtleSA9IF9ncmFwaGljYWxJdGVtJHByb3BzLmRhdGFLZXksXG4gICAgbmFtZSA9IF9ncmFwaGljYWxJdGVtJHByb3BzLm5hbWUsXG4gICAgdW5pdCA9IF9ncmFwaGljYWxJdGVtJHByb3BzLnVuaXQsXG4gICAgZm9ybWF0dGVyID0gX2dyYXBoaWNhbEl0ZW0kcHJvcHMuZm9ybWF0dGVyLFxuICAgIHRvb2x0aXBUeXBlID0gX2dyYXBoaWNhbEl0ZW0kcHJvcHMudG9vbHRpcFR5cGUsXG4gICAgY2hhcnRUeXBlID0gX2dyYXBoaWNhbEl0ZW0kcHJvcHMuY2hhcnRUeXBlLFxuICAgIGhpZGUgPSBfZ3JhcGhpY2FsSXRlbSRwcm9wcy5oaWRlO1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBmaWx0ZXJQcm9wcyhncmFwaGljYWxJdGVtLCBmYWxzZSkpLCB7fSwge1xuICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgdW5pdDogdW5pdCxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcixcbiAgICBuYW1lOiBuYW1lIHx8IGRhdGFLZXksXG4gICAgY29sb3I6IGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0oZ3JhcGhpY2FsSXRlbSksXG4gICAgdmFsdWU6IGdldFZhbHVlQnlEYXRhS2V5KHBheWxvYWQsIGRhdGFLZXkpLFxuICAgIHR5cGU6IHRvb2x0aXBUeXBlLFxuICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgY2hhcnRUeXBlOiBjaGFydFR5cGUsXG4gICAgaGlkZTogaGlkZVxuICB9KTtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsImlzQXJyYXkiLCJsZW4iLCJhcnIyIiwiZDNTY2FsZXMiLCJzdGFjayIsInNoYXBlU3RhY2siLCJzdGFja09mZnNldEV4cGFuZCIsInN0YWNrT2Zmc2V0Tm9uZSIsInN0YWNrT2Zmc2V0U2lsaG91ZXR0ZSIsInN0YWNrT2Zmc2V0V2lnZ2xlIiwic3RhY2tPcmRlck5vbmUiLCJtYXgiLCJtaW4iLCJpc05pbCIsImlzRnVuY3Rpb24iLCJpc1N0cmluZyIsImdldCIsImZsYXRNYXAiLCJpc05hbiIsInVwcGVyRmlyc3QiLCJpc0VxdWFsIiwic29ydEJ5IiwiZ2V0TmljZVRpY2tWYWx1ZXMiLCJnZXRUaWNrVmFsdWVzRml4ZWREb21haW4iLCJFcnJvckJhciIsImZpbmRFbnRyeUluQXJyYXkiLCJnZXRQZXJjZW50VmFsdWUiLCJpc051bWJlciIsImlzTnVtT3JTdHIiLCJtYXRoU2lnbiIsInVuaXF1ZUlkIiwiZmlsdGVyUHJvcHMiLCJmaW5kQWxsQnlUeXBlIiwiZ2V0RGlzcGxheU5hbWUiLCJnZXRMZWdlbmRQcm9wcyIsImdldFZhbHVlQnlEYXRhS2V5IiwiZGF0YUtleSIsImRlZmF1bHRWYWx1ZSIsImdldERvbWFpbk9mRGF0YUJ5S2V5IiwiZGF0YSIsInR5cGUiLCJmaWx0ZXJOaWwiLCJmbGF0dGVuRGF0YSIsImVudHJ5IiwiZG9tYWluIiwicGFyc2VGbG9hdCIsIkluZmluaXR5IiwidmFsaWRhdGVEYXRhIiwibWFwIiwiRGF0ZSIsImNhbGN1bGF0ZUFjdGl2ZVRpY2tJbmRleCIsImNvb3JkaW5hdGUiLCJfdGlja3MkbGVuZ3RoIiwidGlja3MiLCJ1bmRlZmluZWQiLCJ1bnNvcnRlZFRpY2tzIiwiYXhpcyIsImluZGV4IiwiYXhpc1R5cGUiLCJNYXRoIiwiYWJzIiwicmFuZ2UiLCJiZWZvcmUiLCJjdXIiLCJhZnRlciIsInNhbWVEaXJlY3Rpb25Db29yZCIsImRpZmZJbnRlcnZhbCIsImN1ckluUmFuZ2UiLCJhZnRlckluUmFuZ2UiLCJzYW1lSW50ZXJ2YWwiLCJtaW5WYWx1ZSIsIm1heFZhbHVlIiwiX2kiLCJnZXRNYWluQ29sb3JPZkdyYXBoaWNJdGVtIiwiaXRlbSIsIl9yZWYiLCJkaXNwbGF5TmFtZSIsIl9pdGVtJHByb3BzIiwicHJvcHMiLCJzdHJva2UiLCJmaWxsIiwicmVzdWx0IiwiZ2V0QmFyU2l6ZUxpc3QiLCJfcmVmMiIsImdsb2JhbFNpemUiLCJiYXJTaXplIiwidG90YWxTaXplIiwiX3JlZjIkc3RhY2tHcm91cHMiLCJzdGFja0dyb3VwcyIsIm51bWVyaWNBeGlzSWRzIiwic2dzIiwic3RhY2tJZHMiLCJqIiwic0xlbiIsIl9zZ3Mkc3RhY2tJZHMkaiIsIml0ZW1zIiwiY2F0ZUF4aXNJZCIsImJhckl0ZW1zIiwiaW5kZXhPZiIsInNlbGZTaXplIiwiY2F0ZUlkIiwic3RhY2tMaXN0IiwiZ2V0QmFyUG9zaXRpb24iLCJfcmVmMyIsImJhckdhcCIsImJhckNhdGVnb3J5R2FwIiwiYmFuZFNpemUiLCJfcmVmMyRzaXplTGlzdCIsInNpemVMaXN0IiwibWF4QmFyU2l6ZSIsInJlYWxCYXJHYXAiLCJpbml0aWFsVmFsdWUiLCJ1c2VGdWxsIiwiZnVsbEJhclNpemUiLCJzdW0iLCJyZWR1Y2UiLCJyZXMiLCJvZmZzZXQiLCJwcmV2Iiwic2l6ZSIsIm5ld1Bvc2l0aW9uIiwicG9zaXRpb24iLCJuZXdSZXMiLCJjb25jYXQiLCJfb2Zmc2V0Iiwib3JpZ2luYWxTaXplIiwiYXBwZW5kT2Zmc2V0T2ZMZWdlbmQiLCJfdW51c2VkIiwibGVnZW5kQm94IiwiY2hpbGRyZW4iLCJ3aWR0aCIsIm1hcmdpbiIsImxlZ2VuZFdpZHRoIiwibGVmdCIsInJpZ2h0IiwibGVnZW5kUHJvcHMiLCJfcmVmNCIsImJveFdpZHRoIiwiYm94SGVpZ2h0IiwiaGVpZ2h0IiwiYWxpZ24iLCJ2ZXJ0aWNhbEFsaWduIiwibGF5b3V0IiwiaXNFcnJvckJhclJlbGV2YW50Rm9yQXhpcyIsImRpcmVjdGlvbiIsImdldERvbWFpbk9mRXJyb3JCYXJzIiwiZXJyb3JCYXJzIiwiZXJyb3JCYXJDaGlsZCIsImVudHJ5VmFsdWUiLCJtYWluVmFsdWUiLCJlcnJvckRvbWFpbiIsInByZXZFcnJvckFyciIsImsiLCJlcnJvclZhbHVlIiwibG93ZXJWYWx1ZSIsInVwcGVyVmFsdWUiLCJwYXJzZUVycm9yQmFyc09mQXhpcyIsImRvbWFpbnMiLCJnZXREb21haW5PZkl0ZW1zV2l0aFNhbWVBeGlzIiwidGFnIiwiaXNDYXRlZ29yaWNhbEF4aXMiLCJnZXRDb29yZGluYXRlc09mR3JpZCIsInN5bmNXaXRoVGlja3MiLCJoYXNNaW4iLCJoYXNNYXgiLCJ2YWx1ZXMiLCJnZXRUaWNrc09mQXhpcyIsImlzR3JpZCIsImlzQWxsIiwic2NhbGUiLCJkdXBsaWNhdGVEb21haW4iLCJvZmZzZXRGb3JCYW5kIiwicmVhbFNjYWxlVHlwZSIsImJhbmR3aWR0aCIsIm5pY2VUaWNrcyIsInNjYWxlQ29udGVudCIsInJvdyIsImlzQ2F0ZWdvcmljYWwiLCJjYXRlZ29yaWNhbERvbWFpbiIsInRpY2tDb3VudCIsImhhbmRsZXJXZWFrTWFwIiwiV2Vha01hcCIsImNvbWJpbmVFdmVudEhhbmRsZXJzIiwiZGVmYXVsdEhhbmRsZXIiLCJjaGlsZEhhbmRsZXIiLCJoYXMiLCJzZXQiLCJjaGlsZFdlYWtNYXAiLCJjb21iaW5lSGFuZGxlciIsInBhcnNlU2NhbGUiLCJjaGFydFR5cGUiLCJoYXNCYXIiLCJzY2FsZUJhbmQiLCJzY2FsZUxpbmVhciIsInNjYWxlUG9pbnQiLCJFUFMiLCJjaGVja0RvbWFpbk9mU2NhbGUiLCJmaXJzdCIsImxhc3QiLCJmaW5kUG9zaXRpb25PZkJhciIsImJhclBvc2l0aW9uIiwiY2hpbGQiLCJ0cnVuY2F0ZUJ5RG9tYWluIiwib2Zmc2V0U2lnbiIsInNlcmllcyIsIm0iLCJwb3NpdGl2ZSIsIm5lZ2F0aXZlIiwib2Zmc2V0UG9zaXRpdmUiLCJTVEFDS19PRkZTRVRfTUFQIiwic2lnbiIsImV4cGFuZCIsIm5vbmUiLCJzaWxob3VldHRlIiwid2lnZ2xlIiwiZ2V0U3RhY2tlZERhdGEiLCJzdGFja0l0ZW1zIiwib2Zmc2V0VHlwZSIsImRhdGFLZXlzIiwib2Zmc2V0QWNjZXNzb3IiLCJkIiwib3JkZXIiLCJnZXRTdGFja0dyb3Vwc0J5QXhpc0lkIiwiX2l0ZW1zIiwibnVtZXJpY0F4aXNJZCIsInJldmVyc2VTdGFja09yZGVyIiwicmV2ZXJzZSIsInBhcmVudFN0YWNrR3JvdXBzSW5pdGlhbFZhbHVlIiwiX2l0ZW0kcHJvcHMyIiwic3RhY2tJZCIsImhpZGUiLCJheGlzSWQiLCJwYXJlbnRHcm91cCIsImhhc1N0YWNrIiwiY2hpbGRHcm91cCIsImF4aXNTdGFja0dyb3Vwc0luaXRpYWxWYWx1ZSIsImdyb3VwIiwic3RhY2tHcm91cHNJbml0aWFsVmFsdWUiLCJnIiwic3RhY2tlZERhdGEiLCJnZXRUaWNrc09mU2NhbGUiLCJvcHRzIiwib3JpZ2luYWxEb21haW4iLCJhbGxvd0RlY2ltYWxzIiwic2NhbGVUeXBlIiwidGlja1ZhbHVlcyIsIl9kb21haW4iLCJfdGlja1ZhbHVlcyIsImdldENhdGVDb29yZGluYXRlT2ZMaW5lIiwiX3JlZjUiLCJhbGxvd0R1cGxpY2F0ZWRDYXRlZ29yeSIsIm1hdGNoZWRUaWNrIiwiZ2V0Q2F0ZUNvb3JkaW5hdGVPZkJhciIsIl9yZWY2IiwiZ2V0QmFzZVZhbHVlT2ZCYXIiLCJfcmVmNyIsIm51bWVyaWNBeGlzIiwiZ2V0U3RhY2tlZERhdGFPZkl0ZW0iLCJpdGVtSW5kZXgiLCJnZXREb21haW5PZlNpbmdsZSIsImdldERvbWFpbk9mU3RhY2tHcm91cHMiLCJzdGFydEluZGV4IiwiZW5kSW5kZXgiLCJzIiwiTUlOX1ZBTFVFX1JFRyIsIk1BWF9WQUxVRV9SRUciLCJwYXJzZVNwZWNpZmllZERvbWFpbiIsInNwZWNpZmllZERvbWFpbiIsImRhdGFEb21haW4iLCJhbGxvd0RhdGFPdmVyZmxvdyIsImV4ZWMiLCJfdmFsdWUiLCJnZXRCYW5kU2l6ZU9mQXhpcyIsImlzQmFyIiwiYmFuZFdpZHRoIiwib3JkZXJlZFRpY2tzIiwicGFyc2VEb21haW5PZkNhdGVnb3J5QXhpcyIsImNhbGN1bGF0ZWREb21haW4iLCJheGlzQ2hpbGQiLCJnZXRUb29sdGlwSXRlbSIsImdyYXBoaWNhbEl0ZW0iLCJwYXlsb2FkIiwiX2dyYXBoaWNhbEl0ZW0kcHJvcHMiLCJ1bml0IiwiZm9ybWF0dGVyIiwidG9vbHRpcFR5cGUiLCJjb2xvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/CssPrefixUtils.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generatePrefixStyle: () => (/* binding */ generatePrefixStyle)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar PREFIX_LIST = [\n \"Webkit\",\n \"Moz\",\n \"O\",\n \"ms\"\n];\nvar generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n var camelName = name.replace(/(\\w)/, function(v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function(res, entry) {\n return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvQ3NzUHJlZml4VXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JJLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0lBQUlELE1BQU1FLGVBQWVGO0lBQU0sSUFBSUEsT0FBT0QsS0FBSztRQUFFaEIsT0FBT2UsY0FBYyxDQUFDQyxLQUFLQyxLQUFLO1lBQUVDLE9BQU9BO1lBQU9iLFlBQVk7WUFBTWUsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQztJQUFPO0lBQUUsT0FBT0Y7QUFBSztBQUMzTyxTQUFTRyxlQUFlcEIsQ0FBQztJQUFJLElBQUl1QixJQUFJQyxhQUFheEIsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWdDLEtBQUtBLElBQUlFLE9BQU9GO0FBQUk7QUFDL0csU0FBU0MsYUFBYXhCLENBQUMsRUFBRUQsQ0FBQztJQUFJLElBQUksWUFBWVIsUUFBUVMsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUYsSUFBSUUsQ0FBQyxDQUFDUCxPQUFPaUMsV0FBVyxDQUFDO0lBQUUsSUFBSSxLQUFLLE1BQU01QixHQUFHO1FBQUUsSUFBSXlCLElBQUl6QixFQUFFNkIsSUFBSSxDQUFDM0IsR0FBR0QsS0FBSztRQUFZLElBQUksWUFBWVIsUUFBUWdDLElBQUksT0FBT0E7UUFBRyxNQUFNLElBQUlLLFVBQVU7SUFBaUQ7SUFBRSxPQUFPLENBQUMsYUFBYTdCLElBQUkwQixTQUFTSSxNQUFLLEVBQUc3QjtBQUFJO0FBQzNULElBQUk4QixjQUFjO0lBQUM7SUFBVTtJQUFPO0lBQUs7Q0FBSztBQUN2QyxJQUFJQyxzQkFBc0IsU0FBU0Esb0JBQW9CQyxJQUFJLEVBQUViLEtBQUs7SUFDdkUsSUFBSSxDQUFDYSxNQUFNO1FBQ1QsT0FBTztJQUNUO0lBQ0EsSUFBSUMsWUFBWUQsS0FBS0UsT0FBTyxDQUFDLFFBQVEsU0FBVUMsQ0FBQztRQUM5QyxPQUFPQSxFQUFFQyxXQUFXO0lBQ3RCO0lBQ0EsSUFBSUMsU0FBU1AsWUFBWVEsTUFBTSxDQUFDLFNBQVVDLEdBQUcsRUFBRUMsS0FBSztRQUNsRCxPQUFPL0IsY0FBY0EsY0FBYyxDQUFDLEdBQUc4QixNQUFNLENBQUMsR0FBRzFCLGdCQUFnQixDQUFDLEdBQUcyQixRQUFRUCxXQUFXZDtJQUMxRixHQUFHLENBQUM7SUFDSmtCLE1BQU0sQ0FBQ0wsS0FBSyxHQUFHYjtJQUNmLE9BQU9rQjtBQUNULEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0Nzc1ByZWZpeFV0aWxzLmpzPzNkNjMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG52YXIgUFJFRklYX0xJU1QgPSBbJ1dlYmtpdCcsICdNb3onLCAnTycsICdtcyddO1xuZXhwb3J0IHZhciBnZW5lcmF0ZVByZWZpeFN0eWxlID0gZnVuY3Rpb24gZ2VuZXJhdGVQcmVmaXhTdHlsZShuYW1lLCB2YWx1ZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgY2FtZWxOYW1lID0gbmFtZS5yZXBsYWNlKC8oXFx3KS8sIGZ1bmN0aW9uICh2KSB7XG4gICAgcmV0dXJuIHYudG9VcHBlckNhc2UoKTtcbiAgfSk7XG4gIHZhciByZXN1bHQgPSBQUkVGSVhfTElTVC5yZWR1Y2UoZnVuY3Rpb24gKHJlcywgZW50cnkpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXMpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBlbnRyeSArIGNhbWVsTmFtZSwgdmFsdWUpKTtcbiAgfSwge30pO1xuICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07Il0sIm5hbWVzIjpbIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm9iaiIsImtleSIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJOdW1iZXIiLCJQUkVGSVhfTElTVCIsImdlbmVyYXRlUHJlZml4U3R5bGUiLCJuYW1lIiwiY2FtZWxOYW1lIiwicmVwbGFjZSIsInYiLCJ0b1VwcGVyQ2FzZSIsInJlc3VsdCIsInJlZHVjZSIsInJlcyIsImVudHJ5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/CssPrefixUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DOMUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/DOMUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getOffset: () => (/* binding */ getOffset),\n/* harmony export */ getStringSize: () => (/* binding */ getStringSize),\n/* harmony export */ getStyleString: () => (/* binding */ getStyleString)\n/* harmony export */ });\n/* harmony import */ var _Global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Global */ \"(ssr)/./node_modules/recharts/es6/util/Global.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: \"absolute\",\n top: \"-20000px\",\n left: 0,\n padding: 0,\n margin: 0,\n border: \"none\",\n whiteSpace: \"pre\"\n};\nvar STYLE_LIST = [\n \"minWidth\",\n \"maxWidth\",\n \"width\",\n \"minHeight\",\n \"maxHeight\",\n \"height\",\n \"top\",\n \"left\",\n \"fontSize\",\n \"lineHeight\",\n \"padding\",\n \"margin\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingTop\",\n \"paddingBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginTop\",\n \"marginBottom\"\n];\nvar MEASUREMENT_SPAN_ID = \"recharts_measurement_span\";\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n return value;\n}\nfunction camelToMiddleLine(text) {\n var strs = text.split(\"\");\n var formatStrs = strs.reduce(function(result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), [\n \"-\",\n entry.toLowerCase()\n ]);\n }\n return [].concat(_toConsumableArray(result), [\n entry\n ]);\n }, []);\n return formatStrs.join(\"\");\n}\nvar getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function(result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, \"\");\n};\nfunction removeInvalidKeys(obj) {\n var copyObj = _objectSpread({}, obj);\n Object.keys(copyObj).forEach(function(key) {\n if (!copyObj[key]) {\n delete copyObj[key];\n }\n });\n return copyObj;\n}\nvar getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (text === undefined || text === null || _Global__WEBPACK_IMPORTED_MODULE_0__.Global.isSsr) {\n return {\n width: 0,\n height: 0\n };\n }\n var copyStyle = removeInvalidKeys(style);\n var cacheKey = JSON.stringify({\n text: text,\n copyStyle: copyStyle\n });\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n if (!measurementSpan) {\n measurementSpan = document.createElement(\"span\");\n measurementSpan.setAttribute(\"id\", MEASUREMENT_SPAN_ID);\n measurementSpan.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(measurementSpan);\n }\n // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n Object.assign(measurementSpan.style, measurementSpanStyle);\n measurementSpan.textContent = \"\".concat(text);\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nvar getOffset = function getOffset(rect) {\n return {\n top: rect.top + window.scrollY - document.documentElement.clientTop,\n left: rect.left + window.scrollX - document.documentElement.clientLeft\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRE9NVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFBRTtRQUFHLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJRSxPQUFPZSxjQUFjLENBQUNsQixHQUFHQyxHQUFHRSxPQUFPSSx3QkFBd0IsQ0FBQ0wsR0FBR0Q7UUFBSztJQUFJO0lBQUUsT0FBT0Q7QUFBRztBQUN0YixTQUFTZSxnQkFBZ0JJLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0lBQUlELE1BQU1FLGVBQWVGO0lBQU0sSUFBSUEsT0FBT0QsS0FBSztRQUFFaEIsT0FBT2UsY0FBYyxDQUFDQyxLQUFLQyxLQUFLO1lBQUVDLE9BQU9BO1lBQU9iLFlBQVk7WUFBTWUsY0FBYztZQUFNQyxVQUFVO1FBQUs7SUFBSSxPQUFPO1FBQUVMLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQztJQUFPO0lBQUUsT0FBT0Y7QUFBSztBQUMzTyxTQUFTRyxlQUFlcEIsQ0FBQztJQUFJLElBQUl1QixJQUFJQyxhQUFheEIsR0FBRztJQUFXLE9BQU8sWUFBWVQsUUFBUWdDLEtBQUtBLElBQUlFLE9BQU9GO0FBQUk7QUFDL0csU0FBU0MsYUFBYXhCLENBQUMsRUFBRUQsQ0FBQztJQUFJLElBQUksWUFBWVIsUUFBUVMsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUYsSUFBSUUsQ0FBQyxDQUFDUCxPQUFPaUMsV0FBVyxDQUFDO0lBQUUsSUFBSSxLQUFLLE1BQU01QixHQUFHO1FBQUUsSUFBSXlCLElBQUl6QixFQUFFNkIsSUFBSSxDQUFDM0IsR0FBR0QsS0FBSztRQUFZLElBQUksWUFBWVIsUUFBUWdDLElBQUksT0FBT0E7UUFBRyxNQUFNLElBQUlLLFVBQVU7SUFBaUQ7SUFBRSxPQUFPLENBQUMsYUFBYTdCLElBQUkwQixTQUFTSSxNQUFLLEVBQUc3QjtBQUFJO0FBQzNULFNBQVM4QixtQkFBbUJDLEdBQUc7SUFBSSxPQUFPQyxtQkFBbUJELFFBQVFFLGlCQUFpQkYsUUFBUUcsNEJBQTRCSCxRQUFRSTtBQUFzQjtBQUN4SixTQUFTQTtJQUF1QixNQUFNLElBQUlQLFVBQVU7QUFBeUk7QUFDN0wsU0FBU00sNEJBQTRCMUMsQ0FBQyxFQUFFNEMsTUFBTTtJQUFJLElBQUksQ0FBQzVDLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPNkMsa0JBQWtCN0MsR0FBRzRDO0lBQVMsSUFBSUUsSUFBSXJDLE9BQU9MLFNBQVMsQ0FBQzJDLFFBQVEsQ0FBQ1osSUFBSSxDQUFDbkMsR0FBR2dELEtBQUssQ0FBQyxHQUFHLENBQUM7SUFBSSxJQUFJRixNQUFNLFlBQVk5QyxFQUFFRyxXQUFXLEVBQUUyQyxJQUFJOUMsRUFBRUcsV0FBVyxDQUFDOEMsSUFBSTtJQUFFLElBQUlILE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9JLE1BQU1DLElBQUksQ0FBQ25EO0lBQUksSUFBSThDLE1BQU0sZUFBZSwyQ0FBMkNNLElBQUksQ0FBQ04sSUFBSSxPQUFPRCxrQkFBa0I3QyxHQUFHNEM7QUFBUztBQUMvWixTQUFTSCxpQkFBaUJZLElBQUk7SUFBSSxJQUFJLE9BQU9wRCxXQUFXLGVBQWVvRCxJQUFJLENBQUNwRCxPQUFPQyxRQUFRLENBQUMsSUFBSSxRQUFRbUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxNQUFNLE9BQU9ILE1BQU1DLElBQUksQ0FBQ0U7QUFBTztBQUM3SixTQUFTYixtQkFBbUJELEdBQUc7SUFBSSxJQUFJVyxNQUFNSSxPQUFPLENBQUNmLE1BQU0sT0FBT00sa0JBQWtCTjtBQUFNO0FBQzFGLFNBQVNNLGtCQUFrQk4sR0FBRyxFQUFFZ0IsR0FBRztJQUFJLElBQUlBLE9BQU8sUUFBUUEsTUFBTWhCLElBQUlwQixNQUFNLEVBQUVvQyxNQUFNaEIsSUFBSXBCLE1BQU07SUFBRSxJQUFLLElBQUlZLElBQUksR0FBR3lCLE9BQU8sSUFBSU4sTUFBTUssTUFBTXhCLElBQUl3QixLQUFLeEIsSUFBS3lCLElBQUksQ0FBQ3pCLEVBQUUsR0FBR1EsR0FBRyxDQUFDUixFQUFFO0lBQUUsT0FBT3lCO0FBQU07QUFDaEo7QUFDbEMsSUFBSUUsY0FBYztJQUNoQkMsWUFBWSxDQUFDO0lBQ2JDLFlBQVk7QUFDZDtBQUNBLElBQUlDLGdCQUFnQjtBQUNwQixJQUFJQyxhQUFhO0lBQ2ZDLFVBQVU7SUFDVkMsS0FBSztJQUNMQyxNQUFNO0lBQ05DLFNBQVM7SUFDVEMsUUFBUTtJQUNSQyxRQUFRO0lBQ1JDLFlBQVk7QUFDZDtBQUNBLElBQUlDLGFBQWE7SUFBQztJQUFZO0lBQVk7SUFBUztJQUFhO0lBQWE7SUFBVTtJQUFPO0lBQVE7SUFBWTtJQUFjO0lBQVc7SUFBVTtJQUFlO0lBQWdCO0lBQWM7SUFBaUI7SUFBYztJQUFlO0lBQWE7Q0FBZTtBQUM1USxJQUFJQyxzQkFBc0I7QUFDMUIsU0FBU0Msa0JBQWtCdkIsSUFBSSxFQUFFdEIsS0FBSztJQUNwQyxJQUFJMkMsV0FBV0csT0FBTyxDQUFDeEIsU0FBUyxLQUFLdEIsVUFBVSxDQUFDQSxPQUFPO1FBQ3JELE9BQU8sR0FBRytDLE1BQU0sQ0FBQy9DLE9BQU87SUFDMUI7SUFDQSxPQUFPQTtBQUNUO0FBQ0EsU0FBU2dELGtCQUFrQkMsSUFBSTtJQUM3QixJQUFJQyxPQUFPRCxLQUFLRSxLQUFLLENBQUM7SUFDdEIsSUFBSUMsYUFBYUYsS0FBS0csTUFBTSxDQUFDLFNBQVVDLE1BQU0sRUFBRUMsS0FBSztRQUNsRCxJQUFJQSxVQUFVQSxNQUFNQyxXQUFXLElBQUk7WUFDakMsT0FBTyxFQUFFLENBQUNULE1BQU0sQ0FBQ3BDLG1CQUFtQjJDLFNBQVM7Z0JBQUM7Z0JBQUtDLE1BQU1FLFdBQVc7YUFBRztRQUN6RTtRQUNBLE9BQU8sRUFBRSxDQUFDVixNQUFNLENBQUNwQyxtQkFBbUIyQyxTQUFTO1lBQUNDO1NBQU07SUFDdEQsR0FBRyxFQUFFO0lBQ0wsT0FBT0gsV0FBV00sSUFBSSxDQUFDO0FBQ3pCO0FBQ08sSUFBSUMsaUJBQWlCLFNBQVNBLGVBQWVDLEtBQUs7SUFDdkQsT0FBTzlFLE9BQU9DLElBQUksQ0FBQzZFLE9BQU9QLE1BQU0sQ0FBQyxTQUFVQyxNQUFNLEVBQUVPLENBQUM7UUFDbEQsT0FBTyxHQUFHZCxNQUFNLENBQUNPLFFBQVFQLE1BQU0sQ0FBQ0Msa0JBQWtCYSxJQUFJLEtBQUtkLE1BQU0sQ0FBQ0Ysa0JBQWtCZ0IsR0FBR0QsS0FBSyxDQUFDQyxFQUFFLEdBQUc7SUFDcEcsR0FBRztBQUNMLEVBQUU7QUFDRixTQUFTQyxrQkFBa0JoRSxHQUFHO0lBQzVCLElBQUlpRSxVQUFVekUsY0FBYyxDQUFDLEdBQUdRO0lBQ2hDaEIsT0FBT0MsSUFBSSxDQUFDZ0YsU0FBU3RFLE9BQU8sQ0FBQyxTQUFVTSxHQUFHO1FBQ3hDLElBQUksQ0FBQ2dFLE9BQU8sQ0FBQ2hFLElBQUksRUFBRTtZQUNqQixPQUFPZ0UsT0FBTyxDQUFDaEUsSUFBSTtRQUNyQjtJQUNGO0lBQ0EsT0FBT2dFO0FBQ1Q7QUFDTyxJQUFJQyxnQkFBZ0IsU0FBU0EsY0FBY2YsSUFBSTtJQUNwRCxJQUFJVyxRQUFRckUsVUFBVUMsTUFBTSxHQUFHLEtBQUtELFNBQVMsQ0FBQyxFQUFFLEtBQUswRSxZQUFZMUUsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pGLElBQUkwRCxTQUFTZ0IsYUFBYWhCLFNBQVMsUUFBUW5CLDJDQUFNQSxDQUFDb0MsS0FBSyxFQUFFO1FBQ3ZELE9BQU87WUFDTEMsT0FBTztZQUNQQyxRQUFRO1FBQ1Y7SUFDRjtJQUNBLElBQUlDLFlBQVlQLGtCQUFrQkY7SUFDbEMsSUFBSVUsV0FBV0MsS0FBS0MsU0FBUyxDQUFDO1FBQzVCdkIsTUFBTUE7UUFDTm9CLFdBQVdBO0lBQ2I7SUFDQSxJQUFJdEMsWUFBWUMsVUFBVSxDQUFDc0MsU0FBUyxFQUFFO1FBQ3BDLE9BQU92QyxZQUFZQyxVQUFVLENBQUNzQyxTQUFTO0lBQ3pDO0lBQ0EsSUFBSTtRQUNGLElBQUlHLGtCQUFrQkMsU0FBU0MsY0FBYyxDQUFDL0I7UUFDOUMsSUFBSSxDQUFDNkIsaUJBQWlCO1lBQ3BCQSxrQkFBa0JDLFNBQVNFLGFBQWEsQ0FBQztZQUN6Q0gsZ0JBQWdCSSxZQUFZLENBQUMsTUFBTWpDO1lBQ25DNkIsZ0JBQWdCSSxZQUFZLENBQUMsZUFBZTtZQUM1Q0gsU0FBU0ksSUFBSSxDQUFDQyxXQUFXLENBQUNOO1FBQzVCO1FBQ0EsK0ZBQStGO1FBQy9GLHdEQUF3RDtRQUN4RCxJQUFJTyx1QkFBdUIxRixjQUFjQSxjQUFjLENBQUMsR0FBRzZDLGFBQWFrQztRQUN4RXZGLE9BQU9tRyxNQUFNLENBQUNSLGdCQUFnQmIsS0FBSyxFQUFFb0I7UUFDckNQLGdCQUFnQlMsV0FBVyxHQUFHLEdBQUduQyxNQUFNLENBQUNFO1FBQ3hDLElBQUlrQyxPQUFPVixnQkFBZ0JXLHFCQUFxQjtRQUNoRCxJQUFJOUIsU0FBUztZQUNYYSxPQUFPZ0IsS0FBS2hCLEtBQUs7WUFDakJDLFFBQVFlLEtBQUtmLE1BQU07UUFDckI7UUFDQXJDLFlBQVlDLFVBQVUsQ0FBQ3NDLFNBQVMsR0FBR2hCO1FBQ25DLElBQUksRUFBRXZCLFlBQVlFLFVBQVUsR0FBR0MsZUFBZTtZQUM1Q0gsWUFBWUUsVUFBVSxHQUFHO1lBQ3pCRixZQUFZQyxVQUFVLEdBQUcsQ0FBQztRQUM1QjtRQUNBLE9BQU9zQjtJQUNULEVBQUUsT0FBTzNFLEdBQUc7UUFDVixPQUFPO1lBQ0x3RixPQUFPO1lBQ1BDLFFBQVE7UUFDVjtJQUNGO0FBQ0YsRUFBRTtBQUNLLElBQUlpQixZQUFZLFNBQVNBLFVBQVVGLElBQUk7SUFDNUMsT0FBTztRQUNMOUMsS0FBSzhDLEtBQUs5QyxHQUFHLEdBQUdpRCxPQUFPQyxPQUFPLEdBQUdiLFNBQVNjLGVBQWUsQ0FBQ0MsU0FBUztRQUNuRW5ELE1BQU02QyxLQUFLN0MsSUFBSSxHQUFHZ0QsT0FBT0ksT0FBTyxHQUFHaEIsU0FBU2MsZUFBZSxDQUFDRyxVQUFVO0lBQ3hFO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRE9NVXRpbHMuanM/NjFmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfdHlwZW9mKG8pIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7IHJldHVybiB0eXBlb2YgbzsgfSA6IGZ1bmN0aW9uIChvKSB7IHJldHVybiBvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvOyB9LCBfdHlwZW9mKG8pOyB9XG5mdW5jdGlvbiBvd25LZXlzKGUsIHIpIHsgdmFyIHQgPSBPYmplY3Qua2V5cyhlKTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIG8gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpOyByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwgcikuZW51bWVyYWJsZTsgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7IH0gcmV0dXJuIHQ7IH1cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSkgeyBmb3IgKHZhciByID0gMTsgciA8IGFyZ3VtZW50cy5sZW5ndGg7IHIrKykgeyB2YXIgdCA9IG51bGwgIT0gYXJndW1lbnRzW3JdID8gYXJndW1lbnRzW3JdIDoge307IHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IF9kZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKSA6IG93bktleXMoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTsgfSk7IH0gcmV0dXJuIGU7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5pbXBvcnQgeyBHbG9iYWwgfSBmcm9tICcuL0dsb2JhbCc7XG52YXIgc3RyaW5nQ2FjaGUgPSB7XG4gIHdpZHRoQ2FjaGU6IHt9LFxuICBjYWNoZUNvdW50OiAwXG59O1xudmFyIE1BWF9DQUNIRV9OVU0gPSAyMDAwO1xudmFyIFNQQU5fU1RZTEUgPSB7XG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB0b3A6ICctMjAwMDBweCcsXG4gIGxlZnQ6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIG1hcmdpbjogMCxcbiAgYm9yZGVyOiAnbm9uZScsXG4gIHdoaXRlU3BhY2U6ICdwcmUnXG59O1xudmFyIFNUWUxFX0xJU1QgPSBbJ21pbldpZHRoJywgJ21heFdpZHRoJywgJ3dpZHRoJywgJ21pbkhlaWdodCcsICdtYXhIZWlnaHQnLCAnaGVpZ2h0JywgJ3RvcCcsICdsZWZ0JywgJ2ZvbnRTaXplJywgJ2xpbmVIZWlnaHQnLCAncGFkZGluZycsICdtYXJnaW4nLCAncGFkZGluZ0xlZnQnLCAncGFkZGluZ1JpZ2h0JywgJ3BhZGRpbmdUb3AnLCAncGFkZGluZ0JvdHRvbScsICdtYXJnaW5MZWZ0JywgJ21hcmdpblJpZ2h0JywgJ21hcmdpblRvcCcsICdtYXJnaW5Cb3R0b20nXTtcbnZhciBNRUFTVVJFTUVOVF9TUEFOX0lEID0gJ3JlY2hhcnRzX21lYXN1cmVtZW50X3NwYW4nO1xuZnVuY3Rpb24gYXV0b0NvbXBsZXRlU3R5bGUobmFtZSwgdmFsdWUpIHtcbiAgaWYgKFNUWUxFX0xJU1QuaW5kZXhPZihuYW1lKSA+PSAwICYmIHZhbHVlID09PSArdmFsdWUpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQodmFsdWUsIFwicHhcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gY2FtZWxUb01pZGRsZUxpbmUodGV4dCkge1xuICB2YXIgc3RycyA9IHRleHQuc3BsaXQoJycpO1xuICB2YXIgZm9ybWF0U3RycyA9IHN0cnMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVudHJ5KSB7XG4gICAgaWYgKGVudHJ5ID09PSBlbnRyeS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShyZXN1bHQpLCBbJy0nLCBlbnRyeS50b0xvd2VyQ2FzZSgpXSk7XG4gICAgfVxuICAgIHJldHVybiBbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KHJlc3VsdCksIFtlbnRyeV0pO1xuICB9LCBbXSk7XG4gIHJldHVybiBmb3JtYXRTdHJzLmpvaW4oJycpO1xufVxuZXhwb3J0IHZhciBnZXRTdHlsZVN0cmluZyA9IGZ1bmN0aW9uIGdldFN0eWxlU3RyaW5nKHN0eWxlKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdHlsZSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIHMpIHtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQocmVzdWx0KS5jb25jYXQoY2FtZWxUb01pZGRsZUxpbmUocyksIFwiOlwiKS5jb25jYXQoYXV0b0NvbXBsZXRlU3R5bGUocywgc3R5bGVbc10pLCBcIjtcIik7XG4gIH0sICcnKTtcbn07XG5mdW5jdGlvbiByZW1vdmVJbnZhbGlkS2V5cyhvYmopIHtcbiAgdmFyIGNvcHlPYmogPSBfb2JqZWN0U3ByZWFkKHt9LCBvYmopO1xuICBPYmplY3Qua2V5cyhjb3B5T2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIWNvcHlPYmpba2V5XSkge1xuICAgICAgZGVsZXRlIGNvcHlPYmpba2V5XTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29weU9iajtcbn1cbmV4cG9ydCB2YXIgZ2V0U3RyaW5nU2l6ZSA9IGZ1bmN0aW9uIGdldFN0cmluZ1NpemUodGV4dCkge1xuICB2YXIgc3R5bGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICBpZiAodGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRleHQgPT09IG51bGwgfHwgR2xvYmFsLmlzU3NyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgfVxuICB2YXIgY29weVN0eWxlID0gcmVtb3ZlSW52YWxpZEtleXMoc3R5bGUpO1xuICB2YXIgY2FjaGVLZXkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgdGV4dDogdGV4dCxcbiAgICBjb3B5U3R5bGU6IGNvcHlTdHlsZVxuICB9KTtcbiAgaWYgKHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldKSB7XG4gICAgcmV0dXJuIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldO1xuICB9XG4gIHRyeSB7XG4gICAgdmFyIG1lYXN1cmVtZW50U3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKE1FQVNVUkVNRU5UX1NQQU5fSUQpO1xuICAgIGlmICghbWVhc3VyZW1lbnRTcGFuKSB7XG4gICAgICBtZWFzdXJlbWVudFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBtZWFzdXJlbWVudFNwYW4uc2V0QXR0cmlidXRlKCdpZCcsIE1FQVNVUkVNRU5UX1NQQU5fSUQpO1xuICAgICAgbWVhc3VyZW1lbnRTcGFuLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtZWFzdXJlbWVudFNwYW4pO1xuICAgIH1cbiAgICAvLyBOZWVkIHRvIHVzZSBDU1MgT2JqZWN0IE1vZGVsIChDU1NPTSkgdG8gYmUgYWJsZSB0byBjb21wbHkgd2l0aCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAoQ1NQKVxuICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbnRlbnRfU2VjdXJpdHlfUG9saWN5XG4gICAgdmFyIG1lYXN1cmVtZW50U3BhblN0eWxlID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBTUEFOX1NUWUxFKSwgY29weVN0eWxlKTtcbiAgICBPYmplY3QuYXNzaWduKG1lYXN1cmVtZW50U3Bhbi5zdHlsZSwgbWVhc3VyZW1lbnRTcGFuU3R5bGUpO1xuICAgIG1lYXN1cmVtZW50U3Bhbi50ZXh0Q29udGVudCA9IFwiXCIuY29uY2F0KHRleHQpO1xuICAgIHZhciByZWN0ID0gbWVhc3VyZW1lbnRTcGFuLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgICB9O1xuICAgIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGVbY2FjaGVLZXldID0gcmVzdWx0O1xuICAgIGlmICgrK3N0cmluZ0NhY2hlLmNhY2hlQ291bnQgPiBNQVhfQ0FDSEVfTlVNKSB7XG4gICAgICBzdHJpbmdDYWNoZS5jYWNoZUNvdW50ID0gMDtcbiAgICAgIHN0cmluZ0NhY2hlLndpZHRoQ2FjaGUgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldE9mZnNldCA9IGZ1bmN0aW9uIGdldE9mZnNldChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCAtIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0XG4gIH07XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsIml0ZXIiLCJpc0FycmF5IiwibGVuIiwiYXJyMiIsIkdsb2JhbCIsInN0cmluZ0NhY2hlIiwid2lkdGhDYWNoZSIsImNhY2hlQ291bnQiLCJNQVhfQ0FDSEVfTlVNIiwiU1BBTl9TVFlMRSIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsInBhZGRpbmciLCJtYXJnaW4iLCJib3JkZXIiLCJ3aGl0ZVNwYWNlIiwiU1RZTEVfTElTVCIsIk1FQVNVUkVNRU5UX1NQQU5fSUQiLCJhdXRvQ29tcGxldGVTdHlsZSIsImluZGV4T2YiLCJjb25jYXQiLCJjYW1lbFRvTWlkZGxlTGluZSIsInRleHQiLCJzdHJzIiwic3BsaXQiLCJmb3JtYXRTdHJzIiwicmVkdWNlIiwicmVzdWx0IiwiZW50cnkiLCJ0b1VwcGVyQ2FzZSIsInRvTG93ZXJDYXNlIiwiam9pbiIsImdldFN0eWxlU3RyaW5nIiwic3R5bGUiLCJzIiwicmVtb3ZlSW52YWxpZEtleXMiLCJjb3B5T2JqIiwiZ2V0U3RyaW5nU2l6ZSIsInVuZGVmaW5lZCIsImlzU3NyIiwid2lkdGgiLCJoZWlnaHQiLCJjb3B5U3R5bGUiLCJjYWNoZUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtZWFzdXJlbWVudFNwYW4iLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm1lYXN1cmVtZW50U3BhblN0eWxlIiwiYXNzaWduIiwidGV4dENvbnRlbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0T2Zmc2V0Iiwid2luZG93Iiwic2Nyb2xsWSIsImRvY3VtZW50RWxlbWVudCIsImNsaWVudFRvcCIsInNjcm9sbFgiLCJjbGllbnRMZWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DOMUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DataUtils.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/util/DataUtils.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ findEntryInArray: () => (/* binding */ findEntryInArray),\n/* harmony export */ getAnyElementOfObject: () => (/* binding */ getAnyElementOfObject),\n/* harmony export */ getLinearRegression: () => (/* binding */ getLinearRegression),\n/* harmony export */ getPercentValue: () => (/* binding */ getPercentValue),\n/* harmony export */ hasDuplicate: () => (/* binding */ hasDuplicate),\n/* harmony export */ interpolateNumber: () => (/* binding */ interpolateNumber),\n/* harmony export */ isNumOrStr: () => (/* binding */ isNumOrStr),\n/* harmony export */ isNumber: () => (/* binding */ isNumber),\n/* harmony export */ isPercent: () => (/* binding */ isPercent),\n/* harmony export */ mathSign: () => (/* binding */ mathSign),\n/* harmony export */ uniqueId: () => (/* binding */ uniqueId)\n/* harmony export */ });\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNaN */ \"(ssr)/./node_modules/lodash/isNaN.js\");\n/* harmony import */ var lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNaN__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isNumber */ \"(ssr)/./node_modules/lodash/isNumber.js\");\n/* harmony import */ var lodash_isNumber__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isNumber__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nvar mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n if (value > 0) {\n return 1;\n }\n return -1;\n};\nvar isPercent = function isPercent(value) {\n return lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(value) && value.indexOf(\"%\") === value.length - 1;\n};\nvar isNumber = function isNumber(value) {\n return lodash_isNumber__WEBPACK_IMPORTED_MODULE_3___default()(value) && !lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default()(value);\n};\nvar isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(value);\n};\nvar idCounter = 0;\nvar uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || \"\").concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue Total value\n * @param {number} defaultValue The value returned when percent is undefined or invalid\n * @param {boolean} validate If set to be true, the result will be validated\n * @return {number} value\n */ var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!isNumber(percent) && !lodash_isString__WEBPACK_IMPORTED_MODULE_0___default()(percent)) {\n return defaultValue;\n }\n var value;\n if (isPercent(percent)) {\n var index = percent.indexOf(\"%\");\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n if (lodash_isNaN__WEBPACK_IMPORTED_MODULE_1___default()(value)) {\n value = defaultValue;\n }\n if (validate && value > totalValue) {\n value = totalValue;\n }\n return value;\n};\nvar getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n var keys = Object.keys(obj);\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n return null;\n};\nvar hasDuplicate = function hasDuplicate(ary) {\n if (!Array.isArray(ary)) {\n return false;\n }\n var len = ary.length;\n var cache = {};\n for(var i = 0; i < len; i++){\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n return false;\n};\n/* @todo consider to rename this function into `getInterpolator` */ var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function(t) {\n return numberA + t * (numberB - numberA);\n };\n }\n return function() {\n return numberB;\n };\n};\nfunction findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n return ary.find(function(entry) {\n return entry && (typeof specifiedKey === \"function\" ? specifiedKey(entry) : lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(entry, specifiedKey)) === specifiedValue;\n });\n}\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */ var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n var xcurrent = 0;\n var ycurrent = 0;\n for(var i = 0; i < len; i++){\n xcurrent = data[i].cx || 0;\n ycurrent = data[i].cy || 0;\n xsum += xcurrent;\n ysum += ycurrent;\n xysum += xcurrent * ycurrent;\n xxsum += xcurrent * xcurrent;\n xmin = Math.min(xmin, xcurrent);\n xmax = Math.max(xmax, xcurrent);\n }\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGF0YVV0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdUM7QUFDTjtBQUNKO0FBQ2dCO0FBQ3RDLElBQUlJLFdBQVcsU0FBU0EsU0FBU0MsS0FBSztJQUMzQyxJQUFJQSxVQUFVLEdBQUc7UUFDZixPQUFPO0lBQ1Q7SUFDQSxJQUFJQSxRQUFRLEdBQUc7UUFDYixPQUFPO0lBQ1Q7SUFDQSxPQUFPLENBQUM7QUFDVixFQUFFO0FBQ0ssSUFBSUMsWUFBWSxTQUFTQSxVQUFVRCxLQUFLO0lBQzdDLE9BQU9MLHNEQUFRQSxDQUFDSyxVQUFVQSxNQUFNRSxPQUFPLENBQUMsU0FBU0YsTUFBTUcsTUFBTSxHQUFHO0FBQ2xFLEVBQUU7QUFDSyxJQUFJQyxXQUFXLFNBQVNBLFNBQVNKLEtBQUs7SUFDM0MsT0FBT0Ysc0RBQWNBLENBQUNFLFVBQVUsQ0FBQ0osbURBQUtBLENBQUNJO0FBQ3pDLEVBQUU7QUFDSyxJQUFJSyxhQUFhLFNBQVNBLFdBQVdMLEtBQUs7SUFDL0MsT0FBT0ksU0FBU0osVUFBVUwsc0RBQVFBLENBQUNLO0FBQ3JDLEVBQUU7QUFDRixJQUFJTSxZQUFZO0FBQ1QsSUFBSUMsV0FBVyxTQUFTQSxTQUFTQyxNQUFNO0lBQzVDLElBQUlDLEtBQUssRUFBRUg7SUFDWCxPQUFPLEdBQUdJLE1BQU0sQ0FBQ0YsVUFBVSxJQUFJRSxNQUFNLENBQUNEO0FBQ3hDLEVBQUU7QUFFRjs7Ozs7OztDQU9DLEdBQ00sSUFBSUUsa0JBQWtCLFNBQVNBLGdCQUFnQkMsT0FBTyxFQUFFQyxVQUFVO0lBQ3ZFLElBQUlDLGVBQWVDLFVBQVVaLE1BQU0sR0FBRyxLQUFLWSxTQUFTLENBQUMsRUFBRSxLQUFLQyxZQUFZRCxTQUFTLENBQUMsRUFBRSxHQUFHO0lBQ3ZGLElBQUlFLFdBQVdGLFVBQVVaLE1BQU0sR0FBRyxLQUFLWSxTQUFTLENBQUMsRUFBRSxLQUFLQyxZQUFZRCxT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QUNSTixTQUFTSyxXQUFXQztRQUNwQkwsU0FBU0ksV0FBV0E7UUFDcEJILE9BQU9PLEtBQUtDLEdBQUcsQ0FBQ1IsTUFBTUc7UUFDdEJELE9BQU9LLEtBQUtFLEdBQUcsQ0FBQ1AsTUFBTUM7SUFDeEI7SUFDQSxJQUFJTyxJQUFJNUIsTUFBTWlCLFVBQVVILE9BQU9BLE9BQU8sQ0FBQ2QsTUFBTWdCLFFBQVFGLE9BQU9DLElBQUcsSUFBTWYsQ0FBQUEsTUFBTWlCLFFBQVFILE9BQU9BLElBQUcsSUFBSztJQUNsRyxPQUFPO1FBQ0xJLE1BQU1BO1FBQ05FLE1BQU1BO1FBQ05RLEdBQUdBO1FBQ0hDLEdBQUcsQ0FBQ2QsT0FBT2EsSUFBSWQsSUFBRyxJQUFLZDtJQUN6QjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL0RhdGFVdGlscy5qcz9mNmUyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1N0cmluZyBmcm9tICdsb2Rhc2gvaXNTdHJpbmcnO1xuaW1wb3J0IGlzTmFuIGZyb20gJ2xvZGFzaC9pc05hTic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IGxvZGFzaElzTnVtYmVyIGZyb20gJ2xvZGFzaC9pc051bWJlcic7XG5leHBvcnQgdmFyIG1hdGhTaWduID0gZnVuY3Rpb24gbWF0aFNpZ24odmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKHZhbHVlID4gMCkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAtMTtcbn07XG5leHBvcnQgdmFyIGlzUGVyY2VudCA9IGZ1bmN0aW9uIGlzUGVyY2VudCh2YWx1ZSkge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpICYmIHZhbHVlLmluZGV4T2YoJyUnKSA9PT0gdmFsdWUubGVuZ3RoIC0gMTtcbn07XG5leHBvcnQgdmFyIGlzTnVtYmVyID0gZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIGxvZGFzaElzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYW4odmFsdWUpO1xufTtcbmV4cG9ydCB2YXIgaXNOdW1PclN0ciA9IGZ1bmN0aW9uIGlzTnVtT3JTdHIodmFsdWUpIHtcbiAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSk7XG59O1xudmFyIGlkQ291bnRlciA9IDA7XG5leHBvcnQgdmFyIHVuaXF1ZUlkID0gZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KSB7XG4gIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICByZXR1cm4gXCJcIi5jb25jYXQocHJlZml4IHx8ICcnKS5jb25jYXQoaWQpO1xufTtcblxuLyoqXG4gKiBHZXQgcGVyY2VudCB2YWx1ZSBvZiBhIHRvdGFsIHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHBlcmNlbnQgQSBwZXJjZW50XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWxWYWx1ZSAgICAgVG90YWwgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBkZWZhdWx0VmFsdWUgICBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiBwZXJjZW50IGlzIHVuZGVmaW5lZCBvciBpbnZhbGlkXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZhbGlkYXRlICAgICAgSWYgc2V0IHRvIGJlIHRydWUsIHRoZSByZXN1bHQgd2lsbCBiZSB2YWxpZGF0ZWRcbiAqIEByZXR1cm4ge251bWJlcn0gdmFsdWVcbiAqL1xuZXhwb3J0IHZhciBnZXRQZXJjZW50VmFsdWUgPSBmdW5jdGlvbiBnZXRQZXJjZW50VmFsdWUocGVyY2VudCwgdG90YWxWYWx1ZSkge1xuICB2YXIgZGVmYXVsdFZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwO1xuICB2YXIgdmFsaWRhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlO1xuICBpZiAoIWlzTnVtYmVyKHBlcmNlbnQpICYmICFpc1N0cmluZyhwZXJjZW50KSkge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgdmFyIHZhbHVlO1xuICBpZiAoaXNQZXJjZW50KHBlcmNlbnQpKSB7XG4gICAgdmFyIGluZGV4ID0gcGVyY2VudC5pbmRleE9mKCclJyk7XG4gICAgdmFsdWUgPSB0b3RhbFZhbHVlICogcGFyc2VGbG9hdChwZXJjZW50LnNsaWNlKDAsIGluZGV4KSkgLyAxMDA7XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSArcGVyY2VudDtcbiAgfVxuICBpZiAoaXNOYW4odmFsdWUpKSB7XG4gICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gIH1cbiAgaWYgKHZhbGlkYXRlICYmIHZhbHVlID4gdG90YWxWYWx1ZSkge1xuICAgIHZhbHVlID0gdG90YWxWYWx1ZTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuZXhwb3J0IHZhciBnZXRBbnlFbGVtZW50T2ZPYmplY3QgPSBmdW5jdGlvbiBnZXRBbnlFbGVtZW50T2ZPYmplY3Qob2JqKSB7XG4gIGlmICghb2JqKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBvYmpba2V5c1swXV07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IHZhciBoYXNEdXBsaWNhdGUgPSBmdW5jdGlvbiBoYXNEdXBsaWNhdGUoYXJ5KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcnkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBhcnkubGVuZ3RoO1xuICB2YXIgY2FjaGUgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmICghY2FjaGVbYXJ5W2ldXSkge1xuICAgICAgY2FjaGVbYXJ5W2ldXSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKiBAdG9kbyBjb25zaWRlciB0byByZW5hbWUgdGhpcyBmdW5jdGlvbiBpbnRvIGBnZXRJbnRlcnBvbGF0b3JgICovXG5leHBvcnQgdmFyIGludGVycG9sYXRlTnVtYmVyID0gZnVuY3Rpb24gaW50ZXJwb2xhdGVOdW1iZXIobnVtYmVyQSwgbnVtYmVyQikge1xuICBpZiAoaXNOdW1iZXIobnVtYmVyQSkgJiYgaXNOdW1iZXIobnVtYmVyQikpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiBudW1iZXJBICsgdCAqIChudW1iZXJCIC0gbnVtYmVyQSk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBudW1iZXJCO1xuICB9O1xufTtcbmV4cG9ydCBmdW5jdGlvbiBmaW5kRW50cnlJbkFycmF5KGFyeSwgc3BlY2lmaWVkS2V5LCBzcGVjaWZpZWRWYWx1ZSkge1xuICBpZiAoIWFyeSB8fCAhYXJ5Lmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBhcnkuZmluZChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICByZXR1cm4gZW50cnkgJiYgKHR5cGVvZiBzcGVjaWZpZWRLZXkgPT09ICdmdW5jdGlvbicgPyBzcGVjaWZpZWRLZXkoZW50cnkpIDogZ2V0KGVudHJ5LCBzcGVjaWZpZWRLZXkpKSA9PT0gc3BlY2lmaWVkVmFsdWU7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBsZWFzdCBzcXVhcmUgbGluZWFyIHJlZ3Jlc3Npb25cbiAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGFycmF5IG9mIHBvaW50c1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGRvbWFpbiBvZiB4LCBhbmQgdGhlIHBhcmFtZXRlciBvZiBsaW5lYXIgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IHZhciBnZXRMaW5lYXJSZWdyZXNzaW9uID0gZnVuY3Rpb24gZ2V0TGluZWFyUmVncmVzc2lvbihkYXRhKSB7XG4gIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgbGVuID0gZGF0YS5sZW5ndGg7XG4gIHZhciB4c3VtID0gMDtcbiAgdmFyIHlzdW0gPSAwO1xuICB2YXIgeHlzdW0gPSAwO1xuICB2YXIgeHhzdW0gPSAwO1xuICB2YXIgeG1pbiA9IEluZmluaXR5O1xuICB2YXIgeG1heCA9IC1JbmZpbml0eTtcbiAgdmFyIHhjdXJyZW50ID0gMDtcbiAgdmFyIHljdXJyZW50ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHhjdXJyZW50ID0gZGF0YVtpXS5jeCB8fCAwO1xuICAgIHljdXJyZW50ID0gZGF0YVtpXS5jeSB8fCAwO1xuICAgIHhzdW0gKz0geGN1cnJlbnQ7XG4gICAgeXN1bSArPSB5Y3VycmVudDtcbiAgICB4eXN1bSArPSB4Y3VycmVudCAqIHljdXJyZW50O1xuICAgIHh4c3VtICs9IHhjdXJyZW50ICogeGN1cnJlbnQ7XG4gICAgeG1pbiA9IE1hdGgubWluKHhtaW4sIHhjdXJyZW50KTtcbiAgICB4bWF4ID0gTWF0aC5tYXgoeG1heCwgeGN1cnJlbnQpO1xuICB9XG4gIHZhciBhID0gbGVuICogeHhzdW0gIT09IHhzdW0gKiB4c3VtID8gKGxlbiAqIHh5c3VtIC0geHN1bSAqIHlzdW0pIC8gKGxlbiAqIHh4c3VtIC0geHN1bSAqIHhzdW0pIDogMDtcbiAgcmV0dXJuIHtcbiAgICB4bWluOiB4bWluLFxuICAgIHhtYXg6IHhtYXgsXG4gICAgYTogYSxcbiAgICBiOiAoeXN1bSAtIGEgKiB4c3VtKSAvIGxlblxuICB9O1xufTsiXSwibmFtZXMiOlsiaXNTdHJpbmciLCJpc05hbiIsImdldCIsImxvZGFzaElzTnVtYmVyIiwibWF0aFNpZ24iLCJ2YWx1ZSIsImlzUGVyY2VudCIsImluZGV4T2YiLCJsZW5ndGgiLCJpc051bWJlciIsImlzTnVtT3JTdHIiLCJpZENvdW50ZXIiLCJ1bmlxdWVJZCIsInByZWZpeCIsImlkIiwiY29uY2F0IiwiZ2V0UGVyY2VudFZhbHVlIiwicGVyY2VudCIsInRvdGFsVmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZSIsImluZGV4IiwicGFyc2VGbG9hdCIsInNsaWNlIiwiZ2V0QW55RWxlbWVudE9mT2JqZWN0Iiwib2JqIiwia2V5cyIsIk9iamVjdCIsImhhc0R1cGxpY2F0ZSIsImFyeSIsIkFycmF5IiwiaXNBcnJheSIsImxlbiIsImNhY2hlIiwiaSIsImludGVycG9sYXRlTnVtYmVyIiwibnVtYmVyQSIsIm51bWJlckIiLCJ0IiwiZmluZEVudHJ5SW5BcnJheSIsInNwZWNpZmllZEtleSIsInNwZWNpZmllZFZhbHVlIiwiZmluZCIsImVudHJ5IiwiZ2V0TGluZWFyUmVncmVzc2lvbiIsImRhdGEiLCJ4c3VtIiwieXN1bSIsInh5c3VtIiwieHhzdW0iLCJ4bWluIiwiSW5maW5pdHkiLCJ4bWF4IiwieGN1cnJlbnQiLCJ5Y3VycmVudCIsImN4IiwiY3kiLCJNYXRoIiwibWluIiwibWF4IiwiYSIsImIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DataUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js":
/*!*************************************************************************!*\
!*** ./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ detectReferenceElementsDomain: () => (/* binding */ detectReferenceElementsDomain)\n/* harmony export */ });\n/* harmony import */ var _cartesian_ReferenceDot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cartesian/ReferenceDot */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceDot.js\");\n/* harmony import */ var _cartesian_ReferenceLine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cartesian/ReferenceLine */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceLine.js\");\n/* harmony import */ var _cartesian_ReferenceArea__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cartesian/ReferenceArea */ \"(ssr)/./node_modules/recharts/es6/cartesian/ReferenceArea.js\");\n/* harmony import */ var _IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./IfOverflowMatches */ \"(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\n\n\n\n\n\nvar detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceLine__WEBPACK_IMPORTED_MODULE_1__.ReferenceLine);\n var dots = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceDot__WEBPACK_IMPORTED_MODULE_2__.ReferenceDot);\n var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n var areas = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findAllByType)(children, _cartesian_ReferenceArea__WEBPACK_IMPORTED_MODULE_3__.ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n if (elements.length) {\n finalDomain = elements.reduce(function(result, el) {\n if (el.props[idKey] === axisId && (0,_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(el.props, \"extendDomain\") && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [\n Math.min(result[0], value),\n Math.max(result[1], value)\n ];\n }\n return result;\n }, finalDomain);\n }\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function(result, el) {\n if (el.props[idKey] === axisId && (0,_IfOverflowMatches__WEBPACK_IMPORTED_MODULE_4__.ifOverflowMatches)(el.props, \"extendDomain\") && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[key1]) && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [\n Math.min(result[0], value1, value2),\n Math.max(result[1], value1, value2)\n ];\n }\n return result;\n }, finalDomain);\n }\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function(result, tick) {\n if ((0,_DataUtils__WEBPACK_IMPORTED_MODULE_5__.isNumber)(tick)) {\n return [\n Math.min(result[0], tick),\n Math.max(result[1], tick)\n ];\n }\n return result;\n }, finalDomain);\n }\n return finalDomain;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLFNBQVNBLG1CQUFtQkMsR0FBRztJQUFJLE9BQU9DLG1CQUFtQkQsUUFBUUUsaUJBQWlCRixRQUFRRyw0QkFBNEJILFFBQVFJO0FBQXNCO0FBQ3hKLFNBQVNBO0lBQXVCLE1BQU0sSUFBSUMsVUFBVTtBQUF5STtBQUM3TCxTQUFTRiw0QkFBNEJHLENBQUMsRUFBRUMsTUFBTTtJQUFJLElBQUksQ0FBQ0QsR0FBRztJQUFRLElBQUksT0FBT0EsTUFBTSxVQUFVLE9BQU9FLGtCQUFrQkYsR0FBR0M7SUFBUyxJQUFJRSxJQUFJQyxPQUFPQyxTQUFTLENBQUNDLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDUCxHQUFHUSxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUwsTUFBTSxZQUFZSCxFQUFFUyxXQUFXLEVBQUVOLElBQUlILEVBQUVTLFdBQVcsQ0FBQ0MsSUFBSTtJQUFFLElBQUlQLE1BQU0sU0FBU0EsTUFBTSxPQUFPLE9BQU9RLE1BQU1DLElBQUksQ0FBQ1o7SUFBSSxJQUFJRyxNQUFNLGVBQWUsMkNBQTJDVSxJQUFJLENBQUNWLElBQUksT0FBT0Qsa0JBQWtCRixHQUFHQztBQUFTO0FBQy9aLFNBQVNMLGlCQUFpQmtCLElBQUk7SUFBSSxJQUFJLE9BQU9DLFdBQVcsZUFBZUQsSUFBSSxDQUFDQyxPQUFPQyxRQUFRLENBQUMsSUFBSSxRQUFRRixJQUFJLENBQUMsYUFBYSxJQUFJLE1BQU0sT0FBT0gsTUFBTUMsSUFBSSxDQUFDRTtBQUFPO0FBQzdKLFNBQVNuQixtQkFBbUJELEdBQUc7SUFBSSxJQUFJaUIsTUFBTU0sT0FBTyxDQUFDdkIsTUFBTSxPQUFPUSxrQkFBa0JSO0FBQU07QUFDMUYsU0FBU1Esa0JBQWtCUixHQUFHLEVBQUV3QixHQUFHO0lBQUksSUFBSUEsT0FBTyxRQUFRQSxN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Iiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9EZXRlY3RSZWZlcmVuY2VFbGVtZW50c0RvbWFpbi5qcz9mNzk2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KGl0ZXIpIHsgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkgcmV0dXJuIEFycmF5LmZyb20oaXRlcik7IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KGFycik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5pbXBvcnQgeyBSZWZlcmVuY2VEb3QgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vUmVmZXJlbmNlRG90JztcbmltcG9ydCB7IFJlZmVyZW5jZUxpbmUgfSBmcm9tICcuLi9jYXJ0ZXNpYW4vUmVmZXJlbmNlTGluZSc7XG5pbXBvcnQgeyBSZWZlcmVuY2VBcmVhIH0gZnJvbSAnLi4vY2FydGVzaWFuL1JlZmVyZW5jZUFyZWEnO1xuaW1wb3J0IHsgaWZPdmVyZmxvd01hdGNoZXMgfSBmcm9tICcuL0lmT3ZlcmZsb3dNYXRjaGVzJztcbmltcG9ydCB7IGZpbmRBbGxCeVR5cGUgfSBmcm9tICcuL1JlYWN0VXRpbHMnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5leHBvcnQgdmFyIGRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluID0gZnVuY3Rpb24gZGV0ZWN0UmVmZXJlbmNlRWxlbWVudHNEb21haW4oY2hpbGRyZW4sIGRvbWFpbiwgYXhpc0lkLCBheGlzVHlwZSwgc3BlY2lmaWVkVGlja3MpIHtcbiAgdmFyIGxpbmVzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlTGluZSk7XG4gIHZhciBkb3RzID0gZmluZEFsbEJ5VHlwZShjaGlsZHJlbiwgUmVmZXJlbmNlRG90KTtcbiAgdmFyIGVsZW1lbnRzID0gW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShsaW5lcyksIF90b0NvbnN1bWFibGVBcnJheShkb3RzKSk7XG4gIHZhciBhcmVhcyA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIFJlZmVyZW5jZUFyZWEpO1xuICB2YXIgaWRLZXkgPSBcIlwiLmNvbmNhdChheGlzVHlwZSwgXCJJZFwiKTtcbiAgdmFyIHZhbHVlS2V5ID0gYXhpc1R5cGVbMF07XG4gIHZhciBmaW5hbERvbWFpbiA9IGRvbWFpbjtcbiAgaWYgKGVsZW1lbnRzLmxlbmd0aCkge1xuICAgIGZpbmFsRG9tYWluID0gZWxlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIGVsKSB7XG4gICAgICBpZiAoZWwucHJvcHNbaWRLZXldID09PSBheGlzSWQgJiYgaWZPdmVyZmxvd01hdGNoZXMoZWwucHJvcHMsICdleHRlbmREb21haW4nKSAmJiBpc051bWJlcihlbC5wcm9wc1t2YWx1ZUtleV0pKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGVsLnByb3BzW3ZhbHVlS2V5XTtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHZhbHVlKSwgTWF0aC5tYXgocmVzdWx0WzFdLCB2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LCBmaW5hbERvbWFpbik7XG4gIH1cbiAgaWYgKGFyZWFzLmxlbmd0aCkge1xuICAgIHZhciBrZXkxID0gXCJcIi5jb25jYXQodmFsdWVLZXksIFwiMVwiKTtcbiAgICB2YXIga2V5MiA9IFwiXCIuY29uY2F0KHZhbHVlS2V5LCBcIjJcIik7XG4gICAgZmluYWxEb21haW4gPSBhcmVhcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgZWwpIHtcbiAgICAgIGlmIChlbC5wcm9wc1tpZEtleV0gPT09IGF4aXNJZCAmJiBpZk92ZXJmbG93TWF0Y2hlcyhlbC5wcm9wcywgJ2V4dGVuZERvbWFpbicpICYmIGlzTnVtYmVyKGVsLnByb3BzW2tleTFdKSAmJiBpc051bWJlcihlbC5wcm9wc1trZXkyXSkpIHtcbiAgICAgICAgdmFyIHZhbHVlMSA9IGVsLnByb3BzW2tleTFdO1xuICAgICAgICB2YXIgdmFsdWUyID0gZWwucHJvcHNba2V5Ml07XG4gICAgICAgIHJldHVybiBbTWF0aC5taW4ocmVzdWx0WzBdLCB2YWx1ZTEsIHZhbHVlMiksIE1hdGgubWF4KHJlc3VsdFsxXSwgdmFsdWUxLCB2YWx1ZTIpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgZmluYWxEb21haW4pO1xuICB9XG4gIGlmIChzcGVjaWZpZWRUaWNrcyAmJiBzcGVjaWZpZWRUaWNrcy5sZW5ndGgpIHtcbiAgICBmaW5hbERvbWFpbiA9IHNwZWNpZmllZFRpY2tzLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCB0aWNrKSB7XG4gICAgICBpZiAoaXNOdW1iZXIodGljaykpIHtcbiAgICAgICAgcmV0dXJuIFtNYXRoLm1pbihyZXN1bHRbMF0sIHRpY2spLCBNYXRoLm1heChyZXN1bHRbMV0sIHRpY2spXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgZmluYWxEb21haW4pO1xuICB9XG4gIHJldHVybiBmaW5hbERvbWFpbjtcbn07Il0sIm5hbWVzIjpbIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiaXNBcnJheSIsImxlbiIsImxlbmd0aCIsImkiLCJhcnIyIiwiUmVmZXJlbmNlRG90IiwiUmVmZXJlbmNlTGluZSIsIlJlZmVyZW5jZUFyZWEiLCJpZk92ZXJmbG93TWF0Y2hlcyIsImZpbmRBbGxCeVR5cGUiLCJpc051bWJlciIsImRldGVjdFJlZmVyZW5jZUVsZW1lbnRzRG9tYWluIiwiY2hpbGRyZW4iLCJkb21haW4iLCJheGlzSWQiLCJheGlzVHlwZSIsInNwZWNpZmllZFRpY2tzIiwibGluZXMiLCJkb3RzIiwiZWxlbWVudHMiLCJjb25jYXQiLCJhcmVhcyIsImlkS2V5IiwidmFsdWVLZXkiLCJmaW5hbERvbWFpbiIsInJlZHVjZSIsInJlc3VsdCIsImVsIiwicHJvcHMiLCJ2YWx1ZSIsIk1hdGgiLCJtaW4iLCJtYXgiLCJrZXkxIiwia2V5MiIsInZhbHVlMSIsInZhbHVlMiIsInRpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/Events.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/util/Events.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SYNC_EVENT: () => (/* binding */ SYNC_EVENT),\n/* harmony export */ eventCenter: () => (/* binding */ eventCenter)\n/* harmony export */ });\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! eventemitter3 */ \"(ssr)/./node_modules/eventemitter3/index.js\");\n/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_0__);\n\nvar eventCenter = new (eventemitter3__WEBPACK_IMPORTED_MODULE_0___default())();\n\nvar SYNC_EVENT = \"recharts.syncMouseEvents\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRXZlbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBeUM7QUFDekMsSUFBSUMsY0FBYyxJQUFJRCxzREFBWUE7QUFDWDtBQUNoQixJQUFJRSxhQUFhLDJCQUEyQiIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvRXZlbnRzLmpzPzE2MDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudGVtaXR0ZXIzJztcbnZhciBldmVudENlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbmV4cG9ydCB7IGV2ZW50Q2VudGVyIH07XG5leHBvcnQgdmFyIFNZTkNfRVZFTlQgPSAncmVjaGFydHMuc3luY01vdXNlRXZlbnRzJzsiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwiZXZlbnRDZW50ZXIiLCJTWU5DX0VWRU5UIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/Events.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/Global.js":
/*!**************************************************!*\
!*** ./node_modules/recharts/es6/util/Global.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Global: () => (/* binding */ Global)\n/* harmony export */ });\nvar parseIsSsrByDefault = function parseIsSsrByDefault() {\n return !( false && 0);\n};\nvar Global = {\n isSsr: parseIsSsrByDefault(),\n get: function get(key) {\n return Global[key];\n },\n set: function set(key, value) {\n if (typeof key === \"string\") {\n Global[key] = value;\n } else {\n var keys = Object.keys(key);\n if (keys && keys.length) {\n keys.forEach(function(k) {\n Global[k] = key[k];\n });\n }\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvR2xvYmFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFJQSxzQkFBc0IsU0FBU0E7SUFDakMsT0FBTyxDQUFFLE9BQWlGLElBQUlDLENBQWlCO0FBQ2pIO0FBQ08sSUFBSUksU0FBUztJQUNsQkMsT0FBT047SUFDUE8sS0FBSyxTQUFTQSxJQUFJQyxHQUFHO1FBQ25CLE9BQU9ILE1BQU0sQ0FBQ0csSUFBSTtJQUNwQjtJQUNBQyxLQUFLLFNBQVNBLElBQUlELEdBQUcsRUFBRUUsS0FBSztRQUMxQixJQUFJLE9BQU9GLFFBQVEsVUFBVTtZQUMzQkgsTUFBTSxDQUFDRyxJQUFJLEdBQUdFO1FBQ2hCLE9BQU87WUFDTCxJQUFJQyxPQUFPQyxPQUFPRCxJQUFJLENBQUNIO1lBQ3ZCLElBQUlHLFFBQVFBLEtBQUtFLE1BQU0sRUFBRTtnQkFDdkJGLEtBQUtHLE9BQU8sQ0FBQyxTQUFVQyxDQUFDO29CQUN0QlYsTUFBTSxDQUFDVSxFQUFFLEdBQUdQLEdBQUcsQ0FBQ08sRUFBRTtnQkFDcEI7WUFDRjtRQUNGO0lBQ0Y7QUFDRixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9HbG9iYWwuanM/YjdmOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcGFyc2VJc1NzckJ5RGVmYXVsdCA9IGZ1bmN0aW9uIHBhcnNlSXNTc3JCeURlZmF1bHQoKSB7XG4gIHJldHVybiAhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAmJiB3aW5kb3cuc2V0VGltZW91dCk7XG59O1xuZXhwb3J0IHZhciBHbG9iYWwgPSB7XG4gIGlzU3NyOiBwYXJzZUlzU3NyQnlEZWZhdWx0KCksXG4gIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgIHJldHVybiBHbG9iYWxba2V5XTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgR2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhrZXkpO1xuICAgICAgaWYgKGtleXMgJiYga2V5cy5sZW5ndGgpIHtcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgR2xvYmFsW2tdID0ga2V5W2tdO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07Il0sIm5hbWVzIjpbInBhcnNlSXNTc3JCeURlZmF1bHQiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRUaW1lb3V0IiwiR2xvYmFsIiwiaXNTc3IiLCJnZXQiLCJrZXkiLCJzZXQiLCJ2YWx1ZSIsImtleXMiLCJPYmplY3QiLCJsZW5ndGgiLCJmb3JFYWNoIiwiayJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/Global.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/util/IfOverflowMatches.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ifOverflowMatches: () => (/* binding */ ifOverflowMatches)\n/* harmony export */ });\nvar ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n if (alwaysShow) {\n ifOverflow = \"extendDomain\";\n }\n return ifOverflow === value;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvSWZPdmVyZmxvd01hdGNoZXMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPLElBQUlBLG9CQUFvQixTQUFTQSxrQkFBa0JDLEtBQUssRUFBRUMsS0FBSztJQUNwRSxJQUFJQyxhQUFhRixNQUFNRSxVQUFVO0lBQ2pDLElBQUlDLGFBQWFILE1BQU1HLFVBQVU7SUFDakMsSUFBSUQsWUFBWTtRQUNkQyxhQUFhO0lBQ2Y7SUFDQSxPQUFPQSxlQUFlRjtBQUN4QixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9JZk92ZXJmbG93TWF0Y2hlcy5qcz8wY2FhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgaWZPdmVyZmxvd01hdGNoZXMgPSBmdW5jdGlvbiBpZk92ZXJmbG93TWF0Y2hlcyhwcm9wcywgdmFsdWUpIHtcbiAgdmFyIGFsd2F5c1Nob3cgPSBwcm9wcy5hbHdheXNTaG93O1xuICB2YXIgaWZPdmVyZmxvdyA9IHByb3BzLmlmT3ZlcmZsb3c7XG4gIGlmIChhbHdheXNTaG93KSB7XG4gICAgaWZPdmVyZmxvdyA9ICdleHRlbmREb21haW4nO1xuICB9XG4gIHJldHVybiBpZk92ZXJmbG93ID09PSB2YWx1ZTtcbn07Il0sIm5hbWVzIjpbImlmT3ZlcmZsb3dNYXRjaGVzIiwicHJvcHMiLCJ2YWx1ZSIsImFsd2F5c1Nob3ciLCJpZk92ZXJmbG93Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/IfOverflowMatches.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/LogUtils.js":
/*!****************************************************!*\
!*** ./node_modules/recharts/es6/util/LogUtils.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ warn: () => (/* binding */ warn)\n/* harmony export */ });\n/* eslint no-console: 0 */ var isDev = \"development\" !== \"production\";\nvar warn = function warn(condition, format) {\n for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){\n args[_key - 2] = arguments[_key];\n }\n if (isDev && typeof console !== \"undefined\" && console.warn) {\n if (format === undefined) {\n console.warn(\"LogUtils requires an error message argument\");\n }\n if (!condition) {\n if (format === undefined) {\n console.warn(\"Minified exception occurred; use the non-minified dev environment \" + \"for the full error message and additional helpful warnings.\");\n } else {\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function() {\n return args[argIndex++];\n }));\n }\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvTG9nVXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHdCQUF3QixHQUN4QixJQUFJQSxRQUFRQyxrQkFBeUI7QUFDOUIsSUFBSUMsT0FBTyxTQUFTQSxLQUFLQyxTQUFTLEVBQUVDLE1BQU07SUFDL0MsSUFBSyxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFRO1FBQzFHRixJQUFJLENBQUNFLE9BQU8sRUFBRSxHQUFHSixTQUFTLENBQUNJLEtBQUs7SUFDbEM7SUFDQSxJQUFJVixTQUFTLE9BQU9XLFlBQVksZUFBZUEsUUFBUVQsSUFBSSxFQUFFO1FBQzNELElBQUlFLFdBQVdRLFdBQVc7WUFDeEJELFFBQVFULElBQUksQ0FBQztRQUNmO1FBQ0EsSUFBSSxDQUFDQyxXQUFXO1lBQ2QsSUFBSUMsV0FBV1EsV0FBVztnQkFDeEJELFFBQVFULElBQUksQ0FBQyx1RUFBdUU7WUFDdEYsT0FBTztnQkFDTCxJQUFJVyxXQUFXO2dCQUNmRixRQUFRVCxJQUFJLENBQUNFLE9BQU9VLE9BQU8sQ0FBQyxPQUFPO29CQUNqQyxPQUFPTixJQUFJLENBQUNLLFdBQVc7Z0JBQ3pCO1lBQ0Y7UUFDRjtJQUNGO0FBQ0YsRUFBRSIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvTG9nVXRpbHMuanM/MGRmMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tY29uc29sZTogMCAqL1xudmFyIGlzRGV2ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJztcbmV4cG9ydCB2YXIgd2FybiA9IGZ1bmN0aW9uIHdhcm4oY29uZGl0aW9uLCBmb3JtYXQpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDIgPyBfbGVuIC0gMiA6IDApLCBfa2V5ID0gMjsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDJdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG4gIGlmIChpc0RldiAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0xvZ1V0aWxzIHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICAgIGNvbnNvbGUud2Fybihmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59OyJdLCJuYW1lcyI6WyJpc0RldiIsInByb2Nlc3MiLCJ3YXJuIiwiY29uZGl0aW9uIiwiZm9ybWF0IiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25zb2xlIiwidW5kZWZpbmVkIiwiYXJnSW5kZXgiLCJyZXBsYWNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/LogUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/PolarUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/PolarUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RADIAN: () => (/* binding */ RADIAN),\n/* harmony export */ degreeToRadian: () => (/* binding */ degreeToRadian),\n/* harmony export */ distanceBetweenPoints: () => (/* binding */ distanceBetweenPoints),\n/* harmony export */ formatAngleOfSector: () => (/* binding */ formatAngleOfSector),\n/* harmony export */ formatAxisMap: () => (/* binding */ formatAxisMap),\n/* harmony export */ getAngleOfPoint: () => (/* binding */ getAngleOfPoint),\n/* harmony export */ getMaxRadius: () => (/* binding */ getMaxRadius),\n/* harmony export */ getTickClassName: () => (/* binding */ getTickClassName),\n/* harmony export */ inRangeOfSector: () => (/* binding */ inRangeOfSector),\n/* harmony export */ polarToCartesian: () => (/* binding */ polarToCartesian),\n/* harmony export */ radianToDegree: () => (/* binding */ radianToDegree)\n/* harmony export */ });\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\n\n\n\n\nvar RADIAN = Math.PI / 180;\nvar degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nvar radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nvar polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nvar getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */ var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width, height = props.height;\n var startAngle = props.startAngle, endAngle = props.endAngle;\n var cx = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.cx, width, width / 2);\n var cy = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.innerRadius, maxRadius, 0);\n var outerRadius = (0,_DataUtils__WEBPACK_IMPORTED_MODULE_3__.getPercentValue)(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function(result, id) {\n var axis = axisMap[id];\n var domain = axis.domain, reversed = axis.reversed;\n var range;\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_0___default()(axis.range)) {\n if (axisType === \"angleAxis\") {\n range = [\n startAngle,\n endAngle\n ];\n } else if (axisType === \"radiusAxis\") {\n range = [\n innerRadius,\n outerRadius\n ];\n }\n if (reversed) {\n range = [\n range[1],\n range[0]\n ];\n }\n } else {\n range = axis.range;\n var _range = range;\n var _range2 = _slicedToArray(_range, 2);\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n var _parseScale = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.parseScale)(axis, chartName), realScaleType = _parseScale.realScaleType, scale = _parseScale.scale;\n scale.domain(domain).range(range);\n (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.checkDomainOfScale)(scale);\n var ticks = (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_4__.getTicksOfScale)(scale, _objectSpread(_objectSpread({}, axis), {}, {\n realScaleType: realScaleType\n }));\n var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n }, {});\n};\nvar distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x, y1 = point.y;\n var x2 = anotherPoint.x, y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nvar getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x, y = _ref.y;\n var cx = _ref2.cx, cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nvar formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle, endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle, endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\nvar inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x, y = _ref5.y;\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector), radius = _getAngleOfPoint.radius, angle = _getAngleOfPoint.angle;\n var innerRadius = sector.innerRadius, outerRadius = sector.outerRadius;\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n if (radius === 0) {\n return true;\n }\n var _formatAngleOfSector = formatAngleOfSector(sector), startAngle = _formatAngleOfSector.startAngle, endAngle = _formatAngleOfSector.endAngle;\n var formatAngle = angle;\n var inRange;\n if (startAngle <= endAngle) {\n while(formatAngle > endAngle){\n formatAngle -= 360;\n }\n while(formatAngle < startAngle){\n formatAngle += 360;\n }\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while(formatAngle > startAngle){\n formatAngle -= 360;\n }\n while(formatAngle < endAngle){\n formatAngle += 360;\n }\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n if (inRange) {\n return _objectSpread(_objectSpread({}, sector), {}, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n return null;\n};\nvar getTickClassName = function getTickClassName(tick) {\n return !/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(tick) && !lodash_isFunction__WEBPACK_IMPORTED_MODULE_2___default()(tick) && typeof tick !== \"boolean\" ? tick.className : \"\";\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUG9sYXJVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUFJLElBQUlDLElBQUlDLE9BQU9DLElBQUksQ0FBQ0o7SUFBSSxJQUFJRyxPQUFPRSxxQkFBcUIsRUFBRTtRQUFFLElBQUlYLElBQUlTLE9BQU9FLHFCQUFxQixDQUFDTDtRQUFJQyxLQUFNUCxDQUFBQSxJQUFJQSxFQUFFWSxNQUFNLENBQUMsU0FBVUwsQ0FBQztZQUFJLE9BQU9FLE9BQU9JLHdCQUF3QixDQUFDUCxHQUFHQyxHQUFHTyxVQUFVO1FBQUUsRUFBQyxHQUFJTixFQUFFTyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsR0FBR1I7SUFBSTtJQUFFLE9BQU9RO0FBQUc7QUFDOVAsU0FBU1MsY0FBY1gsQ0FBQztJQUFJLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJVyxVQUFVQyxNQUFNLEVBQUVaLElBQUs7UUFBRSxJQUFJQyxJQUFJLFFBQVFVLFNBQVMsQ0FBQ1gsRUFBRSxHQUFHVyxTQUFTLENBQUNYLEVBQUUsR0FBRyxDQUFDO1FBQUdBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdZLE9BQU8sQ0FBQyxTQUFVYixDQUFDO1lBQUljLGdCQUFnQmYsR0FBR0MsR0FBR0MsQ0FB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SyxJQUFJSyxtQkFBbUIsU0FBU0EsaUJBQWlCQyxJQUFJO0lBQzFELE9BQU8sQ0FBRSxXQUFXLEdBQUVyRixxREFBY0EsQ0FBQ3FGLFNBQVMsQ0FBQ3BGLHdEQUFVQSxDQUFDb0YsU0FBUyxPQUFPQSxTQUFTLFlBQVlBLEtBQUtDLFNBQVMsR0FBRztBQUNsSCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9Qb2xhclV0aWxzLmpzPzEwMDIiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHsgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTsgaWYgKG51bGwgIT0gdCkgeyB2YXIgZSwgbiwgaSwgdSwgYSA9IFtdLCBmID0gITAsIG8gPSAhMTsgdHJ5IHsgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkgeyBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47IGYgPSAhMTsgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApOyB9IGNhdGNoIChyKSB7IG8gPSAhMCwgbiA9IHI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjsgfSBmaW5hbGx5IHsgaWYgKG8pIHRocm93IG47IH0gfSByZXR1cm4gYTsgfSB9XG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBnZXRQZXJjZW50VmFsdWUgfSBmcm9tICcuL0RhdGFVdGlscyc7XG5pbXBvcnQgeyBwYXJzZVNjYWxlLCBjaGVja0RvbWFpbk9mU2NhbGUsIGdldFRpY2tzT2ZTY2FsZSB9IGZyb20gJy4vQ2hhcnRVdGlscyc7XG5leHBvcnQgdmFyIFJBRElBTiA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgdmFyIGRlZ3JlZVRvUmFkaWFuID0gZnVuY3Rpb24gZGVncmVlVG9SYWRpYW4oYW5nbGUpIHtcbiAgcmV0dXJuIGFuZ2xlICogTWF0aC5QSSAvIDE4MDtcbn07XG5leHBvcnQgdmFyIHJhZGlhblRvRGVncmVlID0gZnVuY3Rpb24gcmFkaWFuVG9EZWdyZWUoYW5nbGVJblJhZGlhbikge1xuICByZXR1cm4gYW5nbGVJblJhZGlhbiAqIDE4MCAvIE1hdGguUEk7XG59O1xuZXhwb3J0IHZhciBwb2xhclRvQ2FydGVzaWFuID0gZnVuY3Rpb24gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgYW5nbGUpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBjeCArIE1hdGguY29zKC1SQURJQU4gKiBhbmdsZSkgKiByYWRpdXMsXG4gICAgeTogY3kgKyBNYXRoLnNpbigtUkFESUFOICogYW5nbGUpICogcmFkaXVzXG4gIH07XG59O1xuZXhwb3J0IHZhciBnZXRNYXhSYWRpdXMgPSBmdW5jdGlvbiBnZXRNYXhSYWRpdXMod2lkdGgsIGhlaWdodCkge1xuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLmFicyh3aWR0aCAtIChvZmZzZXQubGVmdCB8fCAwKSAtIChvZmZzZXQucmlnaHQgfHwgMCkpLCBNYXRoLmFicyhoZWlnaHQgLSAob2Zmc2V0LnRvcCB8fCAwKSAtIChvZmZzZXQuYm90dG9tIHx8IDApKSkgLyAyO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHNjYWxlIGZ1bmN0aW9uLCBwb3NpdGlvbiwgd2lkdGgsIGhlaWdodCBvZiBheGVzXG4gKiBAcGFyYW0gIHtPYmplY3R9IHByb3BzICAgICBMYXRlc3QgcHJvcHNcbiAqIEBwYXJhbSAge09iamVjdH0gYXhpc01hcCAgIFRoZSBjb25maWd1cmF0aW9uIG9mIGF4ZXNcbiAqIEBwYXJhbSAge09iamVjdH0gb2Zmc2V0ICAgIFRoZSBvZmZzZXQgb2YgbWFpbiBwYXJ0IGluIHRoZSBzdmcgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBheGlzVHlwZSAgVGhlIHR5cGUgb2YgYXhlcywgcmFkaXVzLWF4aXMgb3IgYW5nbGUtYXhpc1xuICogQHBhcmFtICB7U3RyaW5nfSBjaGFydE5hbWUgVGhlIG5hbWUgb2YgY2hhcnRcbiAqIEByZXR1cm4ge09iamVjdH0gQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgdmFyIGZvcm1hdEF4aXNNYXAgPSBmdW5jdGlvbiBmb3JtYXRBeGlzTWFwKHByb3BzLCBheGlzTWFwLCBvZmZzZXQsIGF4aXNUeXBlLCBjaGFydE5hbWUpIHtcbiAgdmFyIHdpZHRoID0gcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0O1xuICB2YXIgc3RhcnRBbmdsZSA9IHByb3BzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBwcm9wcy5lbmRBbmdsZTtcbiAgdmFyIGN4ID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLmN4LCB3aWR0aCwgd2lkdGggLyAyKTtcbiAgdmFyIGN5ID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLmN5LCBoZWlnaHQsIGhlaWdodCAvIDIpO1xuICB2YXIgbWF4UmFkaXVzID0gZ2V0TWF4UmFkaXVzKHdpZHRoLCBoZWlnaHQsIG9mZnNldCk7XG4gIHZhciBpbm5lclJhZGl1cyA9IGdldFBlcmNlbnRWYWx1ZShwcm9wcy5pbm5lclJhZGl1cywgbWF4UmFkaXVzLCAwKTtcbiAgdmFyIG91dGVyUmFkaXVzID0gZ2V0UGVyY2VudFZhbHVlKHByb3BzLm91dGVyUmFkaXVzLCBtYXhSYWRpdXMsIG1heFJhZGl1cyAqIDAuOCk7XG4gIHZhciBpZHMgPSBPYmplY3Qua2V5cyhheGlzTWFwKTtcbiAgcmV0dXJuIGlkcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgaWQpIHtcbiAgICB2YXIgYXhpcyA9IGF4aXNNYXBbaWRdO1xuICAgIHZhciBkb21haW4gPSBheGlzLmRvbWFpbixcbiAgICAgIHJldmVyc2VkID0gYXhpcy5yZXZlcnNlZDtcbiAgICB2YXIgcmFuZ2U7XG4gICAgaWYgKGlzTmlsKGF4aXMucmFuZ2UpKSB7XG4gICAgICBpZiAoYXhpc1R5cGUgPT09ICdhbmdsZUF4aXMnKSB7XG4gICAgICAgIHJhbmdlID0gW3N0YXJ0QW5nbGUsIGVuZEFuZ2xlXTtcbiAgICAgIH0gZWxzZSBpZiAoYXhpc1R5cGUgPT09ICdyYWRpdXNBeGlzJykge1xuICAgICAgICByYW5nZSA9IFtpbm5lclJhZGl1cywgb3V0ZXJSYWRpdXNdO1xuICAgICAgfVxuICAgICAgaWYgKHJldmVyc2VkKSB7XG4gICAgICAgIHJhbmdlID0gW3JhbmdlWzFdLCByYW5nZVswXV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlID0gYXhpcy5yYW5nZTtcbiAgICAgIHZhciBfcmFuZ2UgPSByYW5nZTtcbiAgICAgIHZhciBfcmFuZ2UyID0gX3NsaWNlZFRvQXJyYXkoX3JhbmdlLCAyKTtcbiAgICAgIHN0YXJ0QW5nbGUgPSBfcmFuZ2UyWzBdO1xuICAgICAgZW5kQW5nbGUgPSBfcmFuZ2UyWzFdO1xuICAgIH1cbiAgICB2YXIgX3BhcnNlU2NhbGUgPSBwYXJzZVNjYWxlKGF4aXMsIGNoYXJ0TmFtZSksXG4gICAgICByZWFsU2NhbGVUeXBlID0gX3BhcnNlU2NhbGUucmVhbFNjYWxlVHlwZSxcbiAgICAgIHNjYWxlID0gX3BhcnNlU2NhbGUuc2NhbGU7XG4gICAgc2NhbGUuZG9tYWluKGRvbWFpbikucmFuZ2UocmFuZ2UpO1xuICAgIGNoZWNrRG9tYWluT2ZTY2FsZShzY2FsZSk7XG4gICAgdmFyIHRpY2tzID0gZ2V0VGlja3NPZlNjYWxlKHNjYWxlLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB7fSwge1xuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZVxuICAgIH0pKTtcbiAgICB2YXIgZmluYWxBeGlzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGF4aXMpLCB0aWNrcyksIHt9LCB7XG4gICAgICByYW5nZTogcmFuZ2UsXG4gICAgICByYWRpdXM6IG91dGVyUmFkaXVzLFxuICAgICAgcmVhbFNjYWxlVHlwZTogcmVhbFNjYWxlVHlwZSxcbiAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgIGN4OiBjeCxcbiAgICAgIGN5OiBjeSxcbiAgICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcbiAgICAgIG91dGVyUmFkaXVzOiBvdXRlclJhZGl1cyxcbiAgICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgICBlbmRBbmdsZTogZW5kQW5nbGVcbiAgICB9KTtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN1bHQpLCB7fSwgX2RlZmluZVByb3BlcnR5KHt9LCBpZCwgZmluYWxBeGlzKSk7XG4gIH0sIHt9KTtcbn07XG5leHBvcnQgdmFyIGRpc3RhbmNlQmV0d2VlblBvaW50cyA9IGZ1bmN0aW9uIGRpc3RhbmNlQmV0d2VlblBvaW50cyhwb2ludCwgYW5vdGhlclBvaW50KSB7XG4gIHZhciB4MSA9IHBvaW50LngsXG4gICAgeTEgPSBwb2ludC55O1xuICB2YXIgeDIgPSBhbm90aGVyUG9pbnQueCxcbiAgICB5MiA9IGFub3RoZXJQb2ludC55O1xuICByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHgxIC0geDIsIDIpICsgTWF0aC5wb3coeTEgLSB5MiwgMikpO1xufTtcbmV4cG9ydCB2YXIgZ2V0QW5nbGVPZlBvaW50ID0gZnVuY3Rpb24gZ2V0QW5nbGVPZlBvaW50KF9yZWYsIF9yZWYyKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgIHkgPSBfcmVmLnk7XG4gIHZhciBjeCA9IF9yZWYyLmN4LFxuICAgIGN5ID0gX3JlZjIuY3k7XG4gIHZhciByYWRpdXMgPSBkaXN0YW5jZUJldHdlZW5Qb2ludHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9LCB7XG4gICAgeDogY3gsXG4gICAgeTogY3lcbiAgfSk7XG4gIGlmIChyYWRpdXMgPD0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICByYWRpdXM6IHJhZGl1c1xuICAgIH07XG4gIH1cbiAgdmFyIGNvcyA9ICh4IC0gY3gpIC8gcmFkaXVzO1xuICB2YXIgYW5nbGVJblJhZGlhbiA9IE1hdGguYWNvcyhjb3MpO1xuICBpZiAoeSA+IGN5KSB7XG4gICAgYW5nbGVJblJhZGlhbiA9IDIgKiBNYXRoLlBJIC0gYW5nbGVJblJhZGlhbjtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJhZGl1czogcmFkaXVzLFxuICAgIGFuZ2xlOiByYWRpYW5Ub0RlZ3JlZShhbmdsZUluUmFkaWFuKSxcbiAgICBhbmdsZUluUmFkaWFuOiBhbmdsZUluUmFkaWFuXG4gIH07XG59O1xuZXhwb3J0IHZhciBmb3JtYXRBbmdsZU9mU2VjdG9yID0gZnVuY3Rpb24gZm9ybWF0QW5nbGVPZlNlY3RvcihfcmVmMykge1xuICB2YXIgc3RhcnRBbmdsZSA9IF9yZWYzLnN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGUgPSBfcmVmMy5lbmRBbmdsZTtcbiAgdmFyIHN0YXJ0Q250ID0gTWF0aC5mbG9vcihzdGFydEFuZ2xlIC8gMzYwKTtcbiAgdmFyIGVuZENudCA9IE1hdGguZmxvb3IoZW5kQW5nbGUgLyAzNjApO1xuICB2YXIgbWluID0gTWF0aC5taW4oc3RhcnRDbnQsIGVuZENudCk7XG4gIHJldHVybiB7XG4gICAgc3RhcnRBbmdsZTogc3RhcnRBbmdsZSAtIG1pbiAqIDM2MCxcbiAgICBlbmRBbmdsZTogZW5kQW5nbGUgLSBtaW4gKiAzNjBcbiAgfTtcbn07XG52YXIgcmV2ZXJzZUZvcm1hdEFuZ2xlT2ZTZXRvciA9IGZ1bmN0aW9uIHJldmVyc2VGb3JtYXRBbmdsZU9mU2V0b3IoYW5nbGUsIF9yZWY0KSB7XG4gIHZhciBzdGFydEFuZ2xlID0gX3JlZjQuc3RhcnRBbmdsZSxcbiAgICBlbmRBbmdsZSA9IF9yZWY0LmVuZEFuZ2xlO1xuICB2YXIgc3RhcnRDbnQgPSBNYXRoLmZsb29yKHN0YXJ0QW5nbGUgLyAzNjApO1xuICB2YXIgZW5kQ250ID0gTWF0aC5mbG9vcihlbmRBbmdsZSAvIDM2MCk7XG4gIHZhciBtaW4gPSBNYXRoLm1pbihzdGFydENudCwgZW5kQ250KTtcbiAgcmV0dXJuIGFuZ2xlICsgbWluICogMzYwO1xufTtcbmV4cG9ydCB2YXIgaW5SYW5nZU9mU2VjdG9yID0gZnVuY3Rpb24gaW5SYW5nZU9mU2VjdG9yKF9yZWY1LCBzZWN0b3IpIHtcbiAgdmFyIHggPSBfcmVmNS54LFxuICAgIHkgPSBfcmVmNS55O1xuICB2YXIgX2dldEFuZ2xlT2ZQb2ludCA9IGdldEFuZ2xlT2ZQb2ludCh7XG4gICAgICB4OiB4LFxuICAgICAgeTogeVxuICAgIH0sIHNlY3RvciksXG4gICAgcmFkaXVzID0gX2dldEFuZ2xlT2ZQb2ludC5yYWRpdXMsXG4gICAgYW5nbGUgPSBfZ2V0QW5nbGVPZlBvaW50LmFuZ2xlO1xuICB2YXIgaW5uZXJSYWRpdXMgPSBzZWN0b3IuaW5uZXJSYWRpdXMsXG4gICAgb3V0ZXJSYWRpdXMgPSBzZWN0b3Iub3V0ZXJSYWRpdXM7XG4gIGlmIChyYWRpdXMgPCBpbm5lclJhZGl1cyB8fCByYWRpdXMgPiBvdXRlclJhZGl1cykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAocmFkaXVzID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIF9mb3JtYXRBbmdsZU9mU2VjdG9yID0gZm9ybWF0QW5nbGVPZlNlY3RvcihzZWN0b3IpLFxuICAgIHN0YXJ0QW5nbGUgPSBfZm9ybWF0QW5nbGVPZlNlY3Rvci5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gX2Zvcm1hdEFuZ2xlT2ZTZWN0b3IuZW5kQW5nbGU7XG4gIHZhciBmb3JtYXRBbmdsZSA9IGFuZ2xlO1xuICB2YXIgaW5SYW5nZTtcbiAgaWYgKHN0YXJ0QW5nbGUgPD0gZW5kQW5nbGUpIHtcbiAgICB3aGlsZSAoZm9ybWF0QW5nbGUgPiBlbmRBbmdsZSkge1xuICAgICAgZm9ybWF0QW5nbGUgLT0gMzYwO1xuICAgIH1cbiAgICB3aGlsZSAoZm9ybWF0QW5nbGUgPCBzdGFydEFuZ2xlKSB7XG4gICAgICBmb3JtYXRBbmdsZSArPSAzNjA7XG4gICAgfVxuICAgIGluUmFuZ2UgPSBmb3JtYXRBbmdsZSA+PSBzdGFydEFuZ2xlICYmIGZvcm1hdEFuZ2xlIDw9IGVuZEFuZ2xlO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChmb3JtYXRBbmdsZSA+IHN0YXJ0QW5nbGUpIHtcbiAgICAgIGZvcm1hdEFuZ2xlIC09IDM2MDtcbiAgICB9XG4gICAgd2hpbGUgKGZvcm1hdEFuZ2xlIDwgZW5kQW5nbGUpIHtcbiAgICAgIGZvcm1hdEFuZ2xlICs9IDM2MDtcbiAgICB9XG4gICAgaW5SYW5nZSA9IGZvcm1hdEFuZ2xlID49IGVuZEFuZ2xlICYmIGZvcm1hdEFuZ2xlIDw9IHN0YXJ0QW5nbGU7XG4gIH1cbiAgaWYgKGluUmFuZ2UpIHtcbiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBzZWN0b3IpLCB7fSwge1xuICAgICAgcmFkaXVzOiByYWRpdXMsXG4gICAgICBhbmdsZTogcmV2ZXJzZUZvcm1hdEFuZ2xlT2ZTZXRvcihmb3JtYXRBbmdsZSwgc2VjdG9yKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmV4cG9ydCB2YXIgZ2V0VGlja0NsYXNzTmFtZSA9IGZ1bmN0aW9uIGdldFRpY2tDbGFzc05hbWUodGljaykge1xuICByZXR1cm4gISAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQodGljaykgJiYgIWlzRnVuY3Rpb24odGljaykgJiYgdHlwZW9mIHRpY2sgIT09ICdib29sZWFuJyA/IHRpY2suY2xhc3NOYW1lIDogJyc7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImwiLCJ1IiwiYSIsImYiLCJuZXh0IiwiZG9uZSIsImlzQXJyYXkiLCJpc05pbCIsImlzVmFsaWRFbGVtZW50IiwiaXNGdW5jdGlvbiIsImdldFBlcmNlbnRWYWx1ZSIsInBhcnNlU2NhbGUiLCJjaGVja0RvbWFpbk9mU2NhbGUiLCJnZXRUaWNrc09mU2NhbGUiLCJSQURJQU4iLCJNYXRoIiwiUEkiLCJkZWdyZWVUb1JhZGlhbiIsImFuZ2xlIiwicmFkaWFuVG9EZWdyZWUiLCJhbmdsZUluUmFkaWFuIiwicG9sYXJUb0NhcnRlc2lhbiIsImN4IiwiY3kiLCJyYWRpdXMiLCJ4IiwiY29zIiwieSIsInNpbiIsImdldE1heFJhZGl1cyIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwidW5kZWZpbmVkIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwibWluIiwiYWJzIiwiZm9ybWF0QXhpc01hcCIsInByb3BzIiwiYXhpc01hcCIsImF4aXNUeXBlIiwiY2hhcnROYW1lIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwibWF4UmFkaXVzIiwiaW5uZXJSYWRpdXMiLCJvdXRlclJhZGl1cyIsImlkcyIsInJlZHVjZSIsInJlc3VsdCIsImlkIiwiYXhpcyIsImRvbWFpbiIsInJldmVyc2VkIiwicmFuZ2UiLCJfcmFuZ2UiLCJfcmFuZ2UyIiwiX3BhcnNlU2NhbGUiLCJyZWFsU2NhbGVUeXBlIiwic2NhbGUiLCJ0aWNrcyIsImZpbmFsQXhpcyIsImRpc3RhbmNlQmV0d2VlblBvaW50cyIsInBvaW50IiwiYW5vdGhlclBvaW50IiwieDEiLCJ5MSIsIngyIiwieTIiLCJzcXJ0IiwicG93IiwiZ2V0QW5nbGVPZlBvaW50IiwiX3JlZiIsIl9yZWYyIiwiYWNvcyIsImZvcm1hdEFuZ2xlT2ZTZWN0b3IiLCJfcmVmMyIsInN0YXJ0Q250IiwiZmxvb3IiLCJlbmRDbnQiLCJyZXZlcnNlRm9ybWF0QW5nbGVPZlNldG9yIiwiX3JlZjQiLCJpblJhbmdlT2ZTZWN0b3IiLCJfcmVmNSIsInNlY3RvciIsIl9nZXRBbmdsZU9mUG9pbnQiLCJfZm9ybWF0QW5nbGVPZlNlY3RvciIsImZvcm1hdEFuZ2xlIiwiaW5SYW5nZSIsImdldFRpY2tDbGFzc05hbWUiLCJ0aWNrIiwiY2xhc3NOYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ReactUtils.js":
/*!******************************************************!*\
!*** ./node_modules/recharts/es6/util/ReactUtils.js ***!
\******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LEGEND_TYPES: () => (/* binding */ LEGEND_TYPES),\n/* harmony export */ SCALE_TYPES: () => (/* binding */ SCALE_TYPES),\n/* harmony export */ TOOLTIP_TYPES: () => (/* binding */ TOOLTIP_TYPES),\n/* harmony export */ filterProps: () => (/* binding */ filterProps),\n/* harmony export */ filterSvgElements: () => (/* binding */ filterSvgElements),\n/* harmony export */ findAllByType: () => (/* binding */ findAllByType),\n/* harmony export */ findChildByType: () => (/* binding */ findChildByType),\n/* harmony export */ getDisplayName: () => (/* binding */ getDisplayName),\n/* harmony export */ getReactEventByType: () => (/* binding */ getReactEventByType),\n/* harmony export */ isChildrenEqual: () => (/* binding */ isChildrenEqual),\n/* harmony export */ isDotProps: () => (/* binding */ isDotProps),\n/* harmony export */ isSingleChildEqual: () => (/* binding */ isSingleChildEqual),\n/* harmony export */ isValidSpreadableProp: () => (/* binding */ isValidSpreadableProp),\n/* harmony export */ parseChildIndex: () => (/* binding */ parseChildIndex),\n/* harmony export */ renderByOrder: () => (/* binding */ renderByOrder),\n/* harmony export */ toArray: () => (/* binding */ toArray),\n/* harmony export */ validateWidthHeight: () => (/* binding */ validateWidthHeight),\n/* harmony export */ withoutType: () => (/* binding */ withoutType)\n/* harmony export */ });\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/get */ \"(ssr)/./node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isNil */ \"(ssr)/./node_modules/lodash/isNil.js\");\n/* harmony import */ var lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isNil__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isString */ \"(ssr)/./node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-is */ \"(ssr)/./node_modules/react-is/index.js\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n/* harmony import */ var _ShallowEqual__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ShallowEqual */ \"(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./types */ \"(ssr)/./node_modules/recharts/es6/util/types.js\");\nvar _excluded = [\n \"children\"\n], _excluded2 = [\n \"children\"\n];\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n\n\n\n\n\n\n\n\nvar REACT_BROWSER_EVENT_MAP = {\n click: \"onClick\",\n mousedown: \"onMouseDown\",\n mouseup: \"onMouseUp\",\n mouseover: \"onMouseOver\",\n mousemove: \"onMouseMove\",\n mouseout: \"onMouseOut\",\n mouseenter: \"onMouseEnter\",\n mouseleave: \"onMouseLeave\",\n touchcancel: \"onTouchCancel\",\n touchend: \"onTouchEnd\",\n touchmove: \"onTouchMove\",\n touchstart: \"onTouchStart\"\n};\nvar SCALE_TYPES = [\n \"auto\",\n \"linear\",\n \"pow\",\n \"sqrt\",\n \"log\",\n \"identity\",\n \"time\",\n \"band\",\n \"point\",\n \"ordinal\",\n \"quantile\",\n \"quantize\",\n \"utc\",\n \"sequential\",\n \"threshold\"\n];\nvar LEGEND_TYPES = [\n \"plainline\",\n \"line\",\n \"square\",\n \"rect\",\n \"circle\",\n \"cross\",\n \"diamond\",\n \"star\",\n \"triangle\",\n \"wye\",\n \"none\"\n];\nvar TOOLTIP_TYPES = [\n \"none\"\n];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */ var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === \"string\") {\n return Comp;\n }\n if (!Comp) {\n return \"\";\n }\n return Comp.displayName || Comp.name || \"Component\";\n};\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nvar toArray = function toArray(children) {\n if (children === lastChildren && Array.isArray(lastResult)) {\n return lastResult;\n }\n var result = [];\n react__WEBPACK_IMPORTED_MODULE_5__.Children.forEach(children, function(child) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(child)) return;\n if ((0,react_is__WEBPACK_IMPORTED_MODULE_6__.isFragment)(child)) {\n result = result.concat(toArray(child.props.children));\n } else {\n result.push(child);\n }\n });\n lastResult = result;\n lastChildren = children;\n return result;\n};\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */ function findAllByType(children, type) {\n var result = [];\n var types = [];\n if (Array.isArray(type)) {\n types = type.map(function(t) {\n return getDisplayName(t);\n });\n } else {\n types = [\n getDisplayName(type)\n ];\n }\n toArray(children).forEach(function(child) {\n var childType = lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, \"type.displayName\") || lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, \"type.name\");\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n}\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */ function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n}\n/*\n * Create a new array of children excluding the ones matched the type\n */ var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n if (Array.isArray(type)) {\n types = type.map(function(t) {\n return getDisplayName(t);\n });\n } else {\n types = [\n getDisplayName(type)\n ];\n }\n toArray(children).forEach(function(child) {\n var displayName = lodash_get__WEBPACK_IMPORTED_MODULE_0___default()(child, \"type.displayName\");\n if (displayName && types.indexOf(displayName) !== -1) {\n return;\n }\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */ var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n var _el$props = el.props, width = _el$props.width, height = _el$props.height;\n if (!(0,_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(width) || width <= 0 || !(0,_DataUtils__WEBPACK_IMPORTED_MODULE_7__.isNumber)(height) || height <= 0) {\n return false;\n }\n return true;\n};\nvar SVG_TAGS = [\n \"a\",\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animate\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"color-profile\",\n \"cursor\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColormatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"font\",\n \"font-face\",\n \"font-face-format\",\n \"font-face-name\",\n \"font-face-url\",\n \"foreignObject\",\n \"g\",\n \"glyph\",\n \"glyphRef\",\n \"hkern\",\n \"image\",\n \"line\",\n \"lineGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"missing-glyph\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"script\",\n \"set\",\n \"stop\",\n \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\",\n \"vkern\"\n];\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && lodash_isString__WEBPACK_IMPORTED_MODULE_2___default()(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nvar isDotProps = function isDotProps(dot) {\n return dot && _typeof(dot) === \"object\" && \"cx\" in dot && \"cy\" in dot && \"r\" in dot;\n};\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */ var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n var _FilteredElementKeyMa;\n /**\n * If the svg element type is explicitly included, check against the filtered element key map\n * to determine if there are attributes that should only exist on that element type.\n * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n */ var matchingElementTypeKeys = (_FilteredElementKeyMa = _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap === null || _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap === void 0 ? void 0 : _types__WEBPACK_IMPORTED_MODULE_8__.FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n return !lodash_isFunction__WEBPACK_IMPORTED_MODULE_3___default()(property) && (svgElementType && matchingElementTypeKeys.includes(key) || _types__WEBPACK_IMPORTED_MODULE_8__.SVGElementPropKeys.includes(key)) || includeEvents && _types__WEBPACK_IMPORTED_MODULE_8__.EventKeys.includes(key);\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */ var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n toArray(children).forEach(function(entry) {\n if (isSvgElement(entry)) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nvar filterProps = function filterProps(props, includeEvents, svgElementType) {\n if (!props || typeof props === \"function\" || typeof props === \"boolean\") {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_5__.isValidElement)(props)) {\n inputProps = props.props;\n }\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_4___default()(inputProps)) {\n return null;\n }\n var out = {};\n /**\n * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n * Items filtered out are as follows:\n * - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n * - props that are SVG attributes but don't matched the passed svgElementType\n * - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n */ Object.keys(inputProps).forEach(function(key) {\n var _inputProps;\n if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n out[key] = inputProps[key];\n }\n });\n return out;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */ var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n var count = react__WEBPACK_IMPORTED_MODULE_5__.Children.count(nextChildren);\n if (count !== react__WEBPACK_IMPORTED_MODULE_5__.Children.count(prevChildren)) {\n return false;\n }\n if (count === 0) {\n return true;\n }\n if (count === 1) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n for(var i = 0; i < count; i++){\n var nextChild = nextChildren[i];\n var prevChild = prevChildren[i];\n if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n return true;\n};\nvar isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(nextChild) && lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(prevChild)) {\n return true;\n }\n if (!lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(nextChild) && !lodash_isNil__WEBPACK_IMPORTED_MODULE_1___default()(prevChild)) {\n var _ref = nextChild.props || {}, nextChildren = _ref.children, nextProps = _objectWithoutProperties(_ref, _excluded);\n var _ref2 = prevChild.props || {}, prevChildren = _ref2.children, prevProps = _objectWithoutProperties(_ref2, _excluded2);\n if (nextChildren && prevChildren) {\n return (0,_ShallowEqual__WEBPACK_IMPORTED_MODULE_9__.shallowEqual)(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n if (!nextChildren && !prevChildren) {\n return (0,_ShallowEqual__WEBPACK_IMPORTED_MODULE_9__.shallowEqual)(nextProps, prevProps);\n }\n return false;\n }\n return false;\n};\nvar renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n toArray(children).forEach(function(child, index) {\n if (isSvgElement(child)) {\n elements.push(child);\n } else if (child) {\n var displayName = getDisplayName(child.type);\n var _ref3 = renderMap[displayName] || {}, handler = _ref3.handler, once = _ref3.once;\n if (handler && (!once || !record[displayName])) {\n var results = handler(child, displayName, index);\n elements.push(results);\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nvar getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n return null;\n};\nvar parseChildIndex = function parseChildIndex(child, children) {\n return toArray(children).indexOf(child);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUmVhY3RVdGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBSUEsWUFBWTtJQUFDO0NBQVcsRUFDMUJDLGFBQWE7SUFBQztDQUFXO0FBQzNCLFNBQVNDLHlCQUF5QkMsTUFBTSxFQUFFQyxRQUFRO0lBQUksSUFBSUQsVUFBVSxNQUFNLE9BQU8sQ0FBQztJQUFHLElBQUlFLFNBQVNDLDhCQUE4QkgsUUFBUUM7SUFBVyxJQUFJRyxLQUFLQztJQUFHLElBQUlDLE9BQU9DLHFCQUFxQixFQUFFO1FBQUUsSUFBSUMsbUJBQW1CRixPQUFPQyxxQkFBcUIsQ0FBQ1A7UUFBUyxJQUFLSyxJQUFJLEdBQUdBLElBQUlHLGlCQUFpQkMsTUFBTSxFQUFFSixJQUFLO1lBQUVELE1BQU1JLGdCQUFnQixDQUFDSCxFQUFFO1lBQUUsSUFBSUosU0FBU1MsT0FBTyxDQUFDTixRQUFRLEdBQUc7WUFBVSxJQUFJLENBQUNFLE9BQU9LLFNBQVMsQ0FBQ0Msb0JBQW9CLENBQUNDLElBQUksQ0FBQ2IsUUFBUUksTUFBTTtZQUFVRixNQUFNLENBQUNFLElBQUksR0FBR0osTUFBTSxDQUFDSSxJQUFJO1FBQUU7SUFBRTtJQUFFLE9BQU9GO0FBQVE7QUFDM2UsU0FBU0MsOEJBQThCSCxNQUFNLEVBQUVDLFFBQVE7SUFBSSxJQUFJRCxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBQUcsSUFBSUUsU0FBUyxDQUFDO0lBQUcsSUFBSVksYUFBYVIsT0FBT1MsSUFBSSxDQUFDZjtJQUFTLElBQUlJLEtBQUtDO0lBQUcsSUFBS0EsSUFBSSxHQUFHQSxJQUFJUyxXQUFXTCxNQUFNLEVBQUVKLElBQUs7UUFBRUQsTUFBTVUsVUFBVSxDQUFDVCxFQUFFO1FBQUUsSUFBSUosU0FBU1MsT0FBTyxDQUFDTixRQUFRLEdBQUc7UUFBVUYsTUFBTSxDQUFDRSxJQUFJLEdBQUdKLE1BQU0sQ0FBQ0ksSUFBSTtJQUFFO0lBQUUsT0FBT0Y7QUFBUTtBQUNsVCxTQUFTYyxRQUFRQyxDQUFDO0lBQUk7SUFBMkIsT0FBT0QsVUFBVSxjQUFjLE9BQU9FLFVBQVUsWUFBWSxPQUFPQSxPQUFPQyxRQUFRLEdBQUcsU0FBVUYsQ0FBQztRQUFJLE9BQU8sT0FBT0E7SUFBRyxJQUFJLFNBQVVBLENBQUM7UUFBSSxPQUFPQSxLQUFLLGNBQWMsT0FBT0MsVUFBVUQsRUFBRUcsV0FBVyxLQUFLRixVQUFVRCxNQUFNQyxPQUFPUCxTQUFTLEdBQUcsV0FBVyxPQUFPTTtJQUFHLEdBQUdELFFBQVFDO0FBQUk7QUFDaFM7QUFDSTtBQUNNO0FBQ0k7QUFDSjtBQUNVO0FBQ1g7QUFDQztBQUNPO0FBQ2lDO0FBQy9FLElBQUlpQiwwQkFBMEI7SUFDNUJDLE9BQU87SUFDUEMsV0FBVztJQUNYQyxTQUFTO0lBQ1RDLFdBQVc7SUFDWEMsV0FBVztJQUNYQyxVQUFVO0lBQ1ZDLFlBQVk7SUFDWkMsWUFBWTtJQUNaQyxhQUFhO0lBQ2JDLFVBQVU7SUFDVkMsV0FBVztJQUNYQyxZQUFZO0FBQ2Q7QUFDTyxJQUFJQyxjQUFjO0lBQUM7SUFBUTtJQUFVO0lBQU87SUFBUTtJQUFPO0lBQVk7SUFBUTtJQUFRO0lBQVM7SUFBVztJQUFZO0lBQVk7SUFBTztJQUFjO0NBQVksQ0FBQztBQUNySyxJQUFJQyxlQUFlO0lBQUM7SUFBYTtJQUFRO0lBQVU7SUFBUTtJQUFVO0lBQVM7SUFBVztJQUFRO0lBQVk7SUFBTztDQUFPLENBQUM7QUFDNUgsSUFBSUMsZ0JBQWdCO0lBQUM7Q0FBTyxDQUFDO0FBRXBDOzs7O0NBSUMsR0FDTSxJQUFJQyxpQkFBaUIsU0FBU0EsZUFBZUMsSUFBSTtJQUN0RCxJQUFJLE9BQU9BLFNBQVMsVUFBVTtRQUM1QixPQUFPQTtJQUNUO0lBQ0EsSUFBSSxDQUFDQSxNQUFNO1FBQ1QsT0FBTztJQUNUO0lBQ0EsT0FBT0EsS0FBS0MsV0FBVyxJQUFJRCxLQUFLRSxJQUFJLElBQUk7QUFDMUMsRUFBRTtBQUVGLHlEQUF5RDtBQUN6RCxnRkFBZ0Y7QUFDaEYsSUFBSUMsZUFBZTtBQUNuQixJQUFJQyxhQUFhO0FBQ1YsSUFBSUMsVUFBVSxTQUFTQSxRQUFRQyxRQUFRO0lBQzVDLElBQUlBLGFBQWFILGdCQUFnQkksTUFBTUMsT0FBTyxDQUFDSixhQUFhO1FBQzFELE9BQU9BO0lBQ1Q7SUFDQSxJQUFJSyxTQUFTLEVBQUU7SUFDZmxDLDJDQUFRQSxDQUFDbUMsT0FBTyxDQUFDSixVQUFVLFNBQVVLLEtBQUs7UUFDeEMsSUFBSXhDLG1EQUFLQSxDQUFDd0MsUUFBUTtRQUNsQixJQUFJbEMsb0RBQVVBLENBQUNrQyxRQUFRO1lBQ3JCRixTQUFTQSxPQUFPRyxNQUFNLENBQUNQLFFBQVFNLE1BQU1FLEtBQUssQ0FBQ1AsUUFBUTtRQUNyRCxPQUFPO1lBQ0xHLE9BQU9LLElBQUksQ0FBQ0g7UUFDZDtJQUNGO0lBQ0FQLGFBQWFLO0lBQ2JOLGVBQWVHO0lBQ2YsT0FBT0c7QUFDVCxFQUFFO0FBRUY7OztDQUdDLEdBQ00sU0FBU00sY0FBY1QsUUFBUSxFQUFFVSxJQUFJO0lBQzFDLElBQUlQLFNBQVMsRUFBRTtJQUNmLElBQUlRLFFBQVEsRUFBRTtJQUNkLElBQUlWLE1BQU1DLE9BQU8sQ0FBQ1EsT0FBTztRQUN2QkMsUUFBUUQsS0FBS0UsR0FBRyxDQUFDLFNBQVVDLENBQUM7WUFDMUIsT0FBT3BCLGVBQWVvQjtRQUN4QjtJQUNGLE9BQU87UUFDTEYsUUFBUTtZQUFDbEIsZUFBZWlCO1NBQU07SUFDaEM7SUFDQVgsUUFBUUMsVUFBVUksT0FBTyxDQUFDLFNBQVVDLEtBQUs7UUFDdkMsSUFBSVMsWUFBWWxELGlEQUFHQSxDQUFDeUMsT0FBTyx1QkFBdUJ6QyxpREFBR0EsQ0FBQ3lDLE9BQU87UUFDN0QsSUFBSU0sTUFBTTFELE9BQU8sQ0FBQzZELGVBQWUsQ0FBQyxHQUFHO1lBQ25DWCxPQUFPSyxJQUFJLENBQUNIO1FBQ2Q7SUFDRjtJQUNBLE9BQU9GO0FBQ1Q7QUFFQTs7O0NBR0MsR0FDTSxTQUFTWSxnQkFBZ0JmLFFBQVEsRUFBRVUsSUFBSTtJQUM1QyxJQUFJUCxTQUFTTSxjQUFjVCxVQUFVVTtJQUNyQyxPQUFPUCxVQUFVQSxNQUFNLENBQUMsRUFBRTtBQUM1QjtBQUVBOztDQUVDLEdBQ00sSUFBSWEsY0FBYyxTQUFTQSxZQUFZaEIsUUFBUSxFQUFFVSxJQUFJO0lBQzFELElBQUlPLGNBQWMsRUFBRTtJQUNwQixJQUFJTjtJQUNKLElBQUlWLE1BQU1DLE9BQU8sQ0FBQ1EsT0FBTztRQUN2QkMsUUFBUUQsS0FBS0UsR0FBRyxDQUFDLFNBQVVDLENBQUM7WUFDMUIsT0FBT3BCLGVBQWVvQjtRQUN4QjtJQUNGLE9BQU87UUFDTEYsUUFBUTtZQUFDbEIsZUFBZWlCO1NBQU07SUFDaEM7SUFDQVgsUUFBUUMsVUFBVUksT0FBTyxDQUFDLFNBQVVDLEtBQUs7UUFDdkMsSUFBSVYsY0FBYy9CLGlEQUFHQSxDQUFDeUMsT0FBTztRQUM3QixJQUFJVixlQUFlZ0IsTUFBTTFELE9BQU8sQ0FBQzBDLGlCQUFpQixDQUFDLEdBQUc7WUFDcEQ7UUFDRjtRQUNBc0IsWUFBWVQsSUFBSSxDQUFDSDtJQUNuQjtJQUNBLE9BQU9ZO0FBQ1QsRUFBRTtBQUVGOzs7O0NBSUMsR0FDTSxJQUFJQyxzQkFBc0IsU0FBU0Esb0JBQW9CQyxFQUFFO0lBQzlELElBQUksQ0FBQ0EsTUFBTSxDQUFDQSxHQUFHWixLQUFLLEVBQUU7UUFDcEIsT0FBTztJQUNUO0lBQ0EsSUFBSWEsWUFBWUQsR0FBR1osS0FBSyxFQUN0QmMsUUFBUUQsVUFBVUMsS0FBSyxFQUN2QkMsU0FBU0YsVUFBVUUsTUFBTTtJQUMzQixJQUFJLENBQUNsRCxvREFBUUEsQ0FBQ2lELFVBQVVBLFNBQVMsS0FBSyxDQUFDakQsb0RBQVFBLENBQUNrRCxXQUFXQSxVQUFVLEdBQUc7UUFDdEUsT0FBTztJQUNUO0lBQ0EsT0FBTztBQUNULEVBQUU7QUFDRixJQUFJQyxXQUFXO0lBQUM7SUFBSztJQUFZO0lBQWU7SUFBZ0I7SUFBVztJQUFnQjtJQUFpQjtJQUFvQjtJQUFVO0lBQVk7SUFBaUI7SUFBVTtJQUFRO0lBQVE7SUFBVztJQUFXO0lBQWlCO0lBQXVCO0lBQWU7SUFBb0I7SUFBcUI7SUFBcUI7SUFBa0I7SUFBVztJQUFXO0lBQVc7SUFBVztJQUFXO0lBQWtCO0lBQVc7SUFBVztJQUFlO0lBQWdCO0lBQVk7SUFBZ0I7SUFBc0I7SUFBZTtJQUFVO0lBQWdCO0lBQVU7SUFBUTtJQUFhO0lBQW9CO0lBQWtCO0lBQWlCO0lBQWlCO0lBQUs7SUFBUztJQUFZO0lBQVM7SUFBUztJQUFRO0lBQWdCO0lBQVU7SUFBUTtJQUFZO0lBQWlCO0lBQVM7SUFBUTtJQUFXO0lBQVc7SUFBWTtJQUFrQjtJQUFRO0lBQVU7SUFBTztJQUFRO0lBQVM7SUFBTztJQUFVO0lBQVU7SUFBUTtJQUFZO0lBQVM7SUFBUTtJQUFTO0lBQU87SUFBUTtDQUFRO0FBQ2grQixJQUFJQyxlQUFlLFNBQVNBLGFBQWFuQixLQUFLO0lBQzVDLE9BQU9BLFNBQVNBLE1BQU1LLElBQUksSUFBSTVDLHNEQUFRQSxDQUFDdUMsTUFBTUssSUFBSSxLQUFLYSxTQUFTdEUsT0FBTyxDQUFDb0QsTUFBTUssSUFBSSxLQUFLO0FBQ3hGO0FBQ08sSUFBSWUsYUFBYSxTQUFTQSxXQUFXQyxHQUFHO0lBQzdDLE9BQU9BLE9BQU9uRSxRQUFRbUUsU0FBUyxZQUFZLFFBQVFBLE9BQU8sUUFBUUEsT0FBTyxPQUFPQTtBQUNsRixFQUFFO0FBRUY7Ozs7Ozs7Q0FPQyxHQUNNLElBQUlDLHdCQUF3QixTQUFTQSxzQkFBc0JDLFFBQVEsRUFBRWpGLEdBQUcsRUFBRWtGLGFBQWEsRUFBRUMsY0FBYztJQUM1RyxJQUFJQztJQUNKOzs7O0dBSUMsR0FDRCxJQUFJQywwQkFBMEIsQ0FBQ0Qsd0JBQXdCekQseURBQXFCQSxLQUFLLFFBQVFBLHlEQUFxQkEsS0FBSyxLQUFLLElBQUksS0FBSyxJQUFJQSx5REFBcUIsQ0FBQ3dELGVBQWUsTUFBTSxRQUFRQywwQkFBMEIsS0FBSyxJQUFJQSx3QkFBd0IsRUFBRTtJQUNyUCxPQUFPLENBQUNoRSx3REFBVUEsQ0FBQzZELGFBQWNFLENBQUFBLGtCQUFrQkUsd0JBQXdCQyxRQUFRLENBQUN0RixRQUFRNEIsc0RBQWtCQSxDQUFDMEQsUUFBUSxDQUFDdEYsSUFBRyxLQUFNa0YsaUJBQWlCckQsNkNBQVNBLENBQUN5RCxRQUFRLENBQUN0RjtBQUN2SyxFQUFFO0FBRUY7Ozs7Q0FJQyxHQUNNLElBQUl1RixvQkFBb0IsU0FBU0Esa0JBQWtCbEMsUUFBUTtJQUNoRSxJQUFJbUMsY0FBYyxFQUFFO0lBQ3BCcEMsUUFBUUMsVUFBVUksT0FBTyxDQUFDLFNBQVVnQyxLQUFLO1FBQ3ZDLElBQUlaLGFBQWFZLFFBQVE7WUFDdkJELFlBQVkzQixJQUFJLENBQUM0QjtRQUNuQjtJQUNGO0lBQ0EsT0FBT0Q7QUFDVCxFQUFFO0FBQ0ssSUFBSUUsY0FBYyxTQUFTQSxZQUFZOUIsS0FBSyxFQUFFc0IsYUFBYSxFQUFFQyxjQUFjO0lBQ2hGLElBQUksQ0FBQ3ZCLFNBQVMsT0FBT0EsVUFBVSxjQUFjLE9BQU9BLFVBQVUsV0FBVztRQUN2RSxPQUFPO0lBQ1Q7SUFDQSxJQUFJK0IsYUFBYS9CO0lBQ2pCLElBQUssV0FBVyxHQUFFckMscURBQWNBLENBQUNxQyxRQUFRO1FBQ3ZDK0IsYUFBYS9CLE1BQU1BLEtBQUs7SUFDMUI7SUFDQSxJQUFJLENBQUN2QyxzREFBUUEsQ0FBQ3NFLGFBQWE7UUFDekIsT0FBTztJQUNUO0lBQ0EsSUFBSUMsTUFBTSxDQUFDO0lBRVg7Ozs7OztHQU1DLEdBQ0QxRixPQUFPUyxJQUFJLENBQUNnRixZQUFZbEMsT0FBTyxDQUFDLFNBQVV6RCxHQUFHO1FBQzNDLElBQUk2RjtRQUNKLElBQUliLHNCQUFzQixDQUFDYSxjQUFjRixVQUFTLE1BQU8sUUFBUUUsZ0JBQWdCLEtBQUssSUFBSSxLQUFLLElBQUlBLFdBQVcsQ0FBQzdGLElBQUksRUFBRUEsS0FBS2tGLGVBQWVDLGlCQUFpQjtZQUN4SlMsR0FBRyxDQUFDNUYsSUFBSSxHQUFHMkYsVUFBVSxDQUFDM0YsSUFBSTtRQUM1QjtJQUNGO0lBQ0EsT0FBTzRGO0FBQ1QsRUFBRTtBQUVGOzs7OztDQUtDLEdBQ00sSUFBSUUsa0JBQWtCLFNBQVNBLGdCQUFnQkMsWUFBWSxFQUFFQyxZQUFZO0lBQzlFLElBQUlELGlCQUFpQkMsY0FBYztRQUNqQyxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxRQUFRM0UsMkNBQVFBLENBQUMyRSxLQUFLLENBQUNGO0lBQzNCLElBQUlFLFVBQVUzRSwyQ0FBUUEsQ0FBQzJFLEtBQUssQ0FBQ0QsZUFBZTtRQUMxQyxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxVQUFVLEdBQUc7UUFDZixPQUFPO0lBQ1Q7SUFDQSxJQUFJQSxVQUFVLEdBQUc7UUFDZixtRUFBbUU7UUFDbkUsT0FBT0MsbUJBQW1CNUMsTUFBTUMsT0FBTyxDQUFDd0MsZ0JBQWdCQSxZQUFZLENBQUMsRUFBRSxHQUFHQSxjQUFjekMsTUFBTUMsT0FBTyxDQUFDeUMsZ0JBQWdCQSxZQUFZLENBQUMsRUFBRSxHQUFHQTtJQUMxSTtJQUNBLElBQUssSUFBSS9GLElBQUksR0FBR0EsSUFBSWdHLE9BQU9oRyxJQUFLO1FBQzlCLElBQUlrRyxZQUFZSixZQUFZLENBQUM5RixFQUFFO1FBQy9CLElBQUltRyxZQUFZSixZQUFZLENBQUMvRixFQUFFO1FBQy9CLElBQUlxRCxNQUFNQyxPQUFPLENBQUM0QyxjQUFjN0MsTUFBTUMsT0FBTyxDQUFDNkMsWUFBWTtZQUN4RCxJQUFJLENBQUNOLGdCQUFnQkssV0FBV0MsWUFBWTtnQkFDMUMsT0FBTztZQUNUO1FBQ0EsbUVBQW1FO1FBQ3JFLE9BQU8sSUFBSSxDQUFDRixtQkFBbUJDLFdBQVdDLFlBQVk7WUFDcEQsT0FBTztRQUNUO0lBQ0Y7SUFDQSxPQUFPO0FBQ1QsRUFBRTtBQUNLLElBQUlGLHFCQUFxQixTQUFTQSxtQkFBbUJDLFNBQVMsRUFBRUMsU0FBUztJQUM5RSxJQUFJbEYsbURBQUtBLENBQUNpRixjQUFjakYsbURBQUtBLENBQUNrRixZQUFZO1FBQ3hDLE9BQU87SUFDVDtJQUNBLElBQUksQ0FBQ2xGLG1EQUFLQSxDQUFDaUYsY0FBYyxDQUFDakYsbURBQUtBLENBQUNrRixZQUFZO1FBQzFDLElBQUlDLE9BQU9GLFVBQVV2QyxLQUFLLElBQUksQ0FBQyxHQUM3Qm1DLGVBQWVNLEtBQUtoRCxRQUFRLEVBQzVCaUQsWUFBWTNHLHlCQUF5QjBHLE1BQU01RztRQUM3QyxJQUFJOEcsUUFBUUgsVUFBVXhDLEtBQUssSUFBSSxDQUFDLEdBQzlCb0MsZUFBZU8sTUFBTWxELFFBQVEsRUFDN0JtRCxZQUFZN0cseUJBQXlCNEcsT0FBTzdHO1FBQzlDLElBQUlxRyxnQkFBZ0JDLGNBQWM7WUFDaEMsT0FBT3RFLDJEQUFZQSxDQUFDNEUsV0FBV0UsY0FBY1YsZ0JBQWdCQyxjQUFjQztRQUM3RTtRQUNBLElBQUksQ0FBQ0QsZ0JBQWdCLENBQUNDLGNBQWM7WUFDbEMsT0FBT3RFLDJEQUFZQSxDQUFDNEUsV0FBV0U7UUFDakM7UUFDQSxPQUFPO0lBQ1Q7SUFDQSxPQUFPO0FBQ1QsRUFBRTtBQUNLLElBQUlDLGdCQUFnQixTQUFTQSxjQUFjcEQsUUFBUSxFQUFFcUQsU0FBUztJQUNuRSxJQUFJQyxXQUFXLEVBQUU7SUFDakIsSUFBSUMsU0FBUyxDQUFDO0lBQ2R4RCxRQUFRQyxVQUFVSSxPQUFPLENBQUMsU0FBVUMsS0FBSyxFQUFFbUQsS0FBSztRQUM5QyxJQUFJaEMsYUFBYW5CLFFBQVE7WUFDdkJpRCxTQUFTOUMsSUFBSSxDQUFDSDtRQUNoQixPQUFPLElBQUlBLE9BQU87WUFDaEIsSUFBSVYsY0FBY0YsZUFBZVksTUFBTUssSUFBSTtZQUMzQyxJQUFJK0MsUUFBUUosU0FBUyxDQUFDMUQsWUFBWSxJQUFJLENBQUMsR0FDckMrRCxVQUFVRCxNQUFNQyxPQUFPLEVBQ3ZCQyxPQUFPRixNQUFNRSxJQUFJO1lBQ25CLElBQUlELFdBQVksRUFBQ0MsUUFBUSxDQUFDSixNQUFNLENBQUM1RCxZQUFZLEdBQUc7Z0JBQzlDLElBQUlpRSxVQUFVRixRQUFRckQsT0FBT1YsYUFBYTZEO2dCQUMxQ0YsU0FBUzlDLElBQUksQ0FBQ29EO2dCQUNkTCxNQUFNLENBQUM1RCxZQUFZLEdBQUc7WUFDeEI7UUFDRjtJQUNGO0lBQ0EsT0FBTzJEO0FBQ1QsRUFBRTtBQUNLLElBQUlPLHNCQUFzQixTQUFTQSxvQkFBb0JDLENBQUM7SUFDN0QsSUFBSXBELE9BQU9vRCxLQUFLQSxFQUFFcEQsSUFBSTtJQUN0QixJQUFJQSxRQUFRakMsdUJBQXVCLENBQUNpQyxLQUFLLEVBQUU7UUFDekMsT0FBT2pDLHVCQUF1QixDQUFDaUMsS0FBSztJQUN0QztJQUNBLE9BQU87QUFDVCxFQUFFO0FBQ0ssSUFBSXFELGtCQUFrQixTQUFTQSxnQkFBZ0IxRCxLQUFLLEVBQUVMLFFBQVE7SUFDbkUsT0FBT0QsUUFBUUMsVUFBVS9DLE9BQU8sQ0FBQ29EO0FBQ25DLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL1JlYWN0VXRpbHMuanM/NmM0MiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJjaGlsZHJlblwiXTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBpc05pbCBmcm9tICdsb2Rhc2gvaXNOaWwnO1xuaW1wb3J0IGlzU3RyaW5nIGZyb20gJ2xvZGFzaC9pc1N0cmluZyc7XG5pbXBvcnQgaXNGdW5jdGlvbiBmcm9tICdsb2Rhc2gvaXNGdW5jdGlvbic7XG5pbXBvcnQgaXNPYmplY3QgZnJvbSAnbG9kYXNoL2lzT2JqZWN0JztcbmltcG9ydCB7IENoaWxkcmVuLCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4vRGF0YVV0aWxzJztcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCB9IGZyb20gJy4vU2hhbGxvd0VxdWFsJztcbmltcG9ydCB7IEZpbHRlcmVkRWxlbWVudEtleU1hcCwgU1ZHRWxlbWVudFByb3BLZXlzLCBFdmVudEtleXMgfSBmcm9tICcuL3R5cGVzJztcbnZhciBSRUFDVF9CUk9XU0VSX0VWRU5UX01BUCA9IHtcbiAgY2xpY2s6ICdvbkNsaWNrJyxcbiAgbW91c2Vkb3duOiAnb25Nb3VzZURvd24nLFxuICBtb3VzZXVwOiAnb25Nb3VzZVVwJyxcbiAgbW91c2VvdmVyOiAnb25Nb3VzZU92ZXInLFxuICBtb3VzZW1vdmU6ICdvbk1vdXNlTW92ZScsXG4gIG1vdXNlb3V0OiAnb25Nb3VzZU91dCcsXG4gIG1vdXNlZW50ZXI6ICdvbk1vdXNlRW50ZXInLFxuICBtb3VzZWxlYXZlOiAnb25Nb3VzZUxlYXZlJyxcbiAgdG91Y2hjYW5jZWw6ICdvblRvdWNoQ2FuY2VsJyxcbiAgdG91Y2hlbmQ6ICdvblRvdWNoRW5kJyxcbiAgdG91Y2htb3ZlOiAnb25Ub3VjaE1vdmUnLFxuICB0b3VjaHN0YXJ0OiAnb25Ub3VjaFN0YXJ0J1xufTtcbmV4cG9ydCB2YXIgU0NBTEVfVFlQRVMgPSBbJ2F1dG8nLCAnbGluZWFyJywgJ3BvdycsICdzcXJ0JywgJ2xvZycsICdpZGVudGl0eScsICd0aW1lJywgJ2JhbmQnLCAncG9pbnQnLCAnb3JkaW5hbCcsICdxdWFudGlsZScsICdxdWFudGl6ZScsICd1dGMnLCAnc2VxdWVudGlhbCcsICd0aHJlc2hvbGQnXTtcbmV4cG9ydCB2YXIgTEVHRU5EX1RZUEVTID0gWydwbGFpbmxpbmUnLCAnbGluZScsICdzcXVhcmUnLCAncmVjdCcsICdjaXJjbGUnLCAnY3Jvc3MnLCAnZGlhbW9uZCcsICdzdGFyJywgJ3RyaWFuZ2xlJywgJ3d5ZScsICdub25lJ107XG5leHBvcnQgdmFyIFRPT0xUSVBfVFlQRVMgPSBbJ25vbmUnXTtcblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBvZiBhIGNvbXBvbmVudFxuICogQHBhcmFtICB7T2JqZWN0fSBDb21wIFNwZWNpZmllZCBDb21wb25lbnRcbiAqIEByZXR1cm4ge1N0cmluZ30gICAgICBEaXNwbGF5IG5hbWUgb2YgQ29tcG9uZW50XG4gKi9cbmV4cG9ydCB2YXIgZ2V0RGlzcGxheU5hbWUgPSBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wKSB7XG4gIGlmICh0eXBlb2YgQ29tcCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gQ29tcDtcbiAgfVxuICBpZiAoIUNvbXApIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIENvbXAuZGlzcGxheU5hbWUgfHwgQ29tcC5uYW1lIHx8ICdDb21wb25lbnQnO1xufTtcblxuLy8gYHRvQXJyYXlgIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGR1cmluZyB0aGUgcmVuZGVyXG4vLyBzbyB3ZSBjYW4gbWVtb2l6ZSBsYXN0IGludm9jYXRpb24gKHNpbmNlIHJlZmVyZW5jZSB0byBgY2hpbGRyZW5gIGlzIHRoZSBzYW1lKVxudmFyIGxhc3RDaGlsZHJlbiA9IG51bGw7XG52YXIgbGFzdFJlc3VsdCA9IG51bGw7XG5leHBvcnQgdmFyIHRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4gIGlmIChjaGlsZHJlbiA9PT0gbGFzdENoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkobGFzdFJlc3VsdCkpIHtcbiAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIENoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChpc05pbChjaGlsZCkpIHJldHVybjtcbiAgICBpZiAoaXNGcmFnbWVudChjaGlsZCkpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodG9BcnJheShjaGlsZC5wcm9wcy5jaGlsZHJlbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaChjaGlsZCk7XG4gICAgfVxuICB9KTtcbiAgbGFzdFJlc3VsdCA9IHJlc3VsdDtcbiAgbGFzdENoaWxkcmVuID0gY2hpbGRyZW47XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKlxuICogRmluZCBhbmQgcmV0dXJuIGFsbCBtYXRjaGVkIGNoaWxkcmVuIGJ5IHR5cGUuXG4gKiBgdHlwZWAgbXVzdCBiZSBhIFJlYWN0LkNvbXBvbmVudFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgdHlwZXMgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICB0eXBlcyA9IHR5cGUubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUodCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZXMgPSBbZ2V0RGlzcGxheU5hbWUodHlwZSldO1xuICB9XG4gIHRvQXJyYXkoY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGNoaWxkVHlwZSA9IGdldChjaGlsZCwgJ3R5cGUuZGlzcGxheU5hbWUnKSB8fCBnZXQoY2hpbGQsICd0eXBlLm5hbWUnKTtcbiAgICBpZiAodHlwZXMuaW5kZXhPZihjaGlsZFR5cGUpICE9PSAtMSkge1xuICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qXG4gKiBSZXR1cm4gdGhlIGZpcnN0IG1hdGNoZWQgY2hpbGQgYnkgdHlwZSwgcmV0dXJuIG51bGwgb3RoZXJ3aXNlLlxuICogYHR5cGVgIG11c3QgYmUgYSBSZWFjdC5Db21wb25lbnRUeXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ2hpbGRCeVR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIHJlc3VsdCA9IGZpbmRBbGxCeVR5cGUoY2hpbGRyZW4sIHR5cGUpO1xuICByZXR1cm4gcmVzdWx0ICYmIHJlc3VsdFswXTtcbn1cblxuLypcbiAqIENyZWF0ZSBhIG5ldyBhcnJheSBvZiBjaGlsZHJlbiBleGNsdWRpbmcgdGhlIG9uZXMgbWF0Y2hlZCB0aGUgdHlwZVxuICovXG5leHBvcnQgdmFyIHdpdGhvdXRUeXBlID0gZnVuY3Rpb24gd2l0aG91dFR5cGUoY2hpbGRyZW4sIHR5cGUpIHtcbiAgdmFyIG5ld0NoaWxkcmVuID0gW107XG4gIHZhciB0eXBlcztcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICB0eXBlcyA9IHR5cGUubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUodCk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZXMgPSBbZ2V0RGlzcGxheU5hbWUodHlwZSldO1xuICB9XG4gIHRvQXJyYXkoY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgdmFyIGRpc3BsYXlOYW1lID0gZ2V0KGNoaWxkLCAndHlwZS5kaXNwbGF5TmFtZScpO1xuICAgIGlmIChkaXNwbGF5TmFtZSAmJiB0eXBlcy5pbmRleE9mKGRpc3BsYXlOYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV3Q2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gIH0pO1xuICByZXR1cm4gbmV3Q2hpbGRyZW47XG59O1xuXG4vKipcbiAqIHZhbGlkYXRlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHByb3BzIG9mIGEgY2hhcnQgZWxlbWVudFxuICogQHBhcmFtICB7T2JqZWN0fSBlbCBBIGNoYXJ0IGVsZW1lbnRcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgdHJ1ZSBJZiB0aGUgcHJvcHMgd2lkdGggYW5kIGhlaWdodCBhcmUgbnVtYmVyLCBhbmQgZ3JlYXRlciB0aGFuIDBcbiAqL1xuZXhwb3J0IHZhciB2YWxpZGF0ZVdpZHRoSGVpZ2h0ID0gZnVuY3Rpb24gdmFsaWRhdGVXaWR0aEhlaWdodChlbCkge1xuICBpZiAoIWVsIHx8ICFlbC5wcm9wcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgX2VsJHByb3BzID0gZWwucHJvcHMsXG4gICAgd2lkdGggPSBfZWwkcHJvcHMud2lkdGgsXG4gICAgaGVpZ2h0ID0gX2VsJHByb3BzLmhlaWdodDtcbiAgaWYgKCFpc051bWJlcih3aWR0aCkgfHwgd2lkdGggPD0gMCB8fCAhaXNOdW1iZXIoaGVpZ2h0KSB8fCBoZWlnaHQgPD0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgU1ZHX1RBR1MgPSBbJ2EnLCAnYWx0R2x5cGgnLCAnYWx0R2x5cGhEZWYnLCAnYWx0R2x5cGhJdGVtJywgJ2FuaW1hdGUnLCAnYW5pbWF0ZUNvbG9yJywgJ2FuaW1hdGVNb3Rpb24nLCAnYW5pbWF0ZVRyYW5zZm9ybScsICdjaXJjbGUnLCAnY2xpcFBhdGgnLCAnY29sb3ItcHJvZmlsZScsICdjdXJzb3InLCAnZGVmcycsICdkZXNjJywgJ2VsbGlwc2UnLCAnZmVCbGVuZCcsICdmZUNvbG9ybWF0cml4JywgJ2ZlQ29tcG9uZW50VHJhbnNmZXInLCAnZmVDb21wb3NpdGUnLCAnZmVDb252b2x2ZU1hdHJpeCcsICdmZURpZmZ1c2VMaWdodGluZycsICdmZURpc3BsYWNlbWVudE1hcCcsICdmZURpc3RhbnRMaWdodCcsICdmZUZsb29kJywgJ2ZlRnVuY0EnLCAnZmVGdW5jQicsICdmZUZ1bmNHJywgJ2ZlRnVuY1InLCAnZmVHYXVzc2lhbkJsdXInLCAnZmVJbWFnZScsICdmZU1lcmdlJywgJ2ZlTWVyZ2VOb2RlJywgJ2ZlTW9ycGhvbG9neScsICdmZU9mZnNldCcsICdmZVBvaW50TGlnaHQnLCAnZmVTcGVjdWxhckxpZ2h0aW5nJywgJ2ZlU3BvdExpZ2h0JywgJ2ZlVGlsZScsICdmZVR1cmJ1bGVuY2UnLCAnZmlsdGVyJywgJ2ZvbnQnLCAnZm9udC1mYWNlJywgJ2ZvbnQtZmFjZS1mb3JtYXQnLCAnZm9udC1mYWNlLW5hbWUnLCAnZm9udC1mYWNlLXVybCcsICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnZ2x5cGgnLCAnZ2x5cGhSZWYnLCAnaGtlcm4nLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lR3JhZGllbnQnLCAnbWFya2VyJywgJ21hc2snLCAnbWV0YWRhdGEnLCAnbWlzc2luZy1nbHlwaCcsICdtcGF0aCcsICdwYXRoJywgJ3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0JywgJ3NjcmlwdCcsICdzZXQnLCAnc3RvcCcsICdzdHlsZScsICdzdmcnLCAnc3dpdGNoJywgJ3N5bWJvbCcsICd0ZXh0JywgJ3RleHRQYXRoJywgJ3RpdGxlJywgJ3RyZWYnLCAndHNwYW4nLCAndXNlJywgJ3ZpZXcnLCAndmtlcm4nXTtcbnZhciBpc1N2Z0VsZW1lbnQgPSBmdW5jdGlvbiBpc1N2Z0VsZW1lbnQoY2hpbGQpIHtcbiAgcmV0dXJuIGNoaWxkICYmIGNoaWxkLnR5cGUgJiYgaXNTdHJpbmcoY2hpbGQudHlwZSkgJiYgU1ZHX1RBR1MuaW5kZXhPZihjaGlsZC50eXBlKSA+PSAwO1xufTtcbmV4cG9ydCB2YXIgaXNEb3RQcm9wcyA9IGZ1bmN0aW9uIGlzRG90UHJvcHMoZG90KSB7XG4gIHJldHVybiBkb3QgJiYgX3R5cGVvZihkb3QpID09PSAnb2JqZWN0JyAmJiAnY3gnIGluIGRvdCAmJiAnY3knIGluIGRvdCAmJiAncicgaW4gZG90O1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3BlcnR5IGlzIHZhbGlkIHRvIHNwcmVhZCBvbnRvIGFuIFNWRyBlbGVtZW50IG9yIG9udG8gYSBzcGVjaWZpYyBjb21wb25lbnRcbiAqIEBwYXJhbSB7dW5rbm93bn0gcHJvcGVydHkgcHJvcGVydHkgdmFsdWUgY3VycmVudGx5IGJlaW5nIGNvbXBhcmVkXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHByb3BlcnR5IGtleSBjdXJyZW50bHkgYmVpbmcgY29tcGFyZWRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUV2ZW50cyBpZiBldmVudHMgYXJlIGluY2x1ZGVkIGluIHNwcmVhZGFibGUgcHJvcHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3ZnRWxlbWVudFR5cGUgY2hlY2tzIGFnYWluc3QgbWFwIG9mIFNWRyBlbGVtZW50IHR5cGVzIHRvIGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHtib29sZWFufSBpcyBwcm9wIHZhbGlkXG4gKi9cbmV4cG9ydCB2YXIgaXNWYWxpZFNwcmVhZGFibGVQcm9wID0gZnVuY3Rpb24gaXNWYWxpZFNwcmVhZGFibGVQcm9wKHByb3BlcnR5LCBrZXksIGluY2x1ZGVFdmVudHMsIHN2Z0VsZW1lbnRUeXBlKSB7XG4gIHZhciBfRmlsdGVyZWRFbGVtZW50S2V5TWE7XG4gIC8qKlxuICAgKiBJZiB0aGUgc3ZnIGVsZW1lbnQgdHlwZSBpcyBleHBsaWNpdGx5IGluY2x1ZGVkLCBjaGVjayBhZ2FpbnN0IHRoZSBmaWx0ZXJlZCBlbGVtZW50IGtleSBtYXBcbiAgICogdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIG9ubHkgZXhpc3Qgb24gdGhhdCBlbGVtZW50IHR5cGUuXG4gICAqIEB0b2RvIEFkZCBhbiBpbnRlcm5hbCBjanMgdmVyc2lvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vd29vb3JtL3N2Zy1lbGVtZW50LWF0dHJpYnV0ZXMgZm9yIGZ1bGwgY292ZXJhZ2UuXG4gICAqL1xuICB2YXIgbWF0Y2hpbmdFbGVtZW50VHlwZUtleXMgPSAoX0ZpbHRlcmVkRWxlbWVudEtleU1hID0gRmlsdGVyZWRFbGVtZW50S2V5TWFwID09PSBudWxsIHx8IEZpbHRlcmVkRWxlbWVudEtleU1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogRmlsdGVyZWRFbGVtZW50S2V5TWFwW3N2Z0VsZW1lbnRUeXBlXSkgIT09IG51bGwgJiYgX0ZpbHRlcmVkRWxlbWVudEtleU1hICE9PSB2b2lkIDAgPyBfRmlsdGVyZWRFbGVtZW50S2V5TWEgOiBbXTtcbiAgcmV0dXJuICFpc0Z1bmN0aW9uKHByb3BlcnR5KSAmJiAoc3ZnRWxlbWVudFR5cGUgJiYgbWF0Y2hpbmdFbGVtZW50VHlwZUtleXMuaW5jbHVkZXMoa2V5KSB8fCBTVkdFbGVtZW50UHJvcEtleXMuaW5jbHVkZXMoa2V5KSkgfHwgaW5jbHVkZUV2ZW50cyAmJiBFdmVudEtleXMuaW5jbHVkZXMoa2V5KTtcbn07XG5cbi8qKlxuICogRmlsdGVyIGFsbCB0aGUgc3ZnIGVsZW1lbnRzIG9mIGNoaWxkcmVuXG4gKiBAcGFyYW0gIHtBcnJheX0gY2hpbGRyZW4gVGhlIGNoaWxkcmVuIG9mIGEgcmVhY3QgZWxlbWVudFxuICogQHJldHVybiB7QXJyYXl9ICAgICAgICAgIEFsbCB0aGUgc3ZnIGVsZW1lbnRzXG4gKi9cbmV4cG9ydCB2YXIgZmlsdGVyU3ZnRWxlbWVudHMgPSBmdW5jdGlvbiBmaWx0ZXJTdmdFbGVtZW50cyhjaGlsZHJlbikge1xuICB2YXIgc3ZnRWxlbWVudHMgPSBbXTtcbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICBpZiAoaXNTdmdFbGVtZW50KGVudHJ5KSkge1xuICAgICAgc3ZnRWxlbWVudHMucHVzaChlbnRyeSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHN2Z0VsZW1lbnRzO1xufTtcbmV4cG9ydCB2YXIgZmlsdGVyUHJvcHMgPSBmdW5jdGlvbiBmaWx0ZXJQcm9wcyhwcm9wcywgaW5jbHVkZUV2ZW50cywgc3ZnRWxlbWVudFR5cGUpIHtcbiAgaWYgKCFwcm9wcyB8fCB0eXBlb2YgcHJvcHMgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHByb3BzID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB2YXIgaW5wdXRQcm9wcyA9IHByb3BzO1xuICBpZiAoIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChwcm9wcykpIHtcbiAgICBpbnB1dFByb3BzID0gcHJvcHMucHJvcHM7XG4gIH1cbiAgaWYgKCFpc09iamVjdChpbnB1dFByb3BzKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBvdXQgPSB7fTtcblxuICAvKipcbiAgICogUHJvcHMgYXJlIGJsaW5kbHkgc3ByZWFkIG9udG8gU1ZHIGVsZW1lbnRzLiBUaGlzIGxvb3AgZmlsdGVycyBvdXQgcHJvcGVydGllcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gc3ByZWFkLlxuICAgKiBJdGVtcyBmaWx0ZXJlZCBvdXQgYXJlIGFzIGZvbGxvd3M6XG4gICAqICAgLSBmdW5jdGlvbnMgaW4gcHJvcGVydGllcyB0aGF0IGFyZSBTVkcgYXR0cmlidXRlcyAoZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCB3aGVuIGluY2x1ZGVFdmVudHMgaXMgdHJ1ZSlcbiAgICogICAtIHByb3BzIHRoYXQgYXJlIFNWRyBhdHRyaWJ1dGVzIGJ1dCBkb24ndCBtYXRjaGVkIHRoZSBwYXNzZWQgc3ZnRWxlbWVudFR5cGVcbiAgICogICAtIGFueSBwcm9wIHRoYXQgaXMgbm90IGluIFNWR0VsZW1lbnRQcm9wS2V5cyAob3IgaW4gRXZlbnRLZXlzIGlmIGluY2x1ZGVFdmVudHMgaXMgdHJ1ZSlcbiAgICovXG4gIE9iamVjdC5rZXlzKGlucHV0UHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBfaW5wdXRQcm9wcztcbiAgICBpZiAoaXNWYWxpZFNwcmVhZGFibGVQcm9wKChfaW5wdXRQcm9wcyA9IGlucHV0UHJvcHMpID09PSBudWxsIHx8IF9pbnB1dFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfaW5wdXRQcm9wc1trZXldLCBrZXksIGluY2x1ZGVFdmVudHMsIHN2Z0VsZW1lbnRUeXBlKSkge1xuICAgICAgb3V0W2tleV0gPSBpbnB1dFByb3BzW2tleV07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbi8qKlxuICogV2V0aGVyIHByb3BzIG9mIGNoaWxkcmVuIGNoYW5nZWRcbiAqIEBwYXJhbSAge09iamVjdH0gbmV4dENoaWxkcmVuIFRoZSBsYXRlc3QgY2hpbGRyZW5cbiAqIEBwYXJhbSAge09iamVjdH0gcHJldkNoaWxkcmVuIFRoZSBwcmV2IGNoaWxkcmVuXG4gKiBAcmV0dXJuIHtCb29sZWFufSAgICAgICAgICAgICBlcXVhbCBvciBub3RcbiAqL1xuZXhwb3J0IHZhciBpc0NoaWxkcmVuRXF1YWwgPSBmdW5jdGlvbiBpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pIHtcbiAgaWYgKG5leHRDaGlsZHJlbiA9PT0gcHJldkNoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIGNvdW50ID0gQ2hpbGRyZW4uY291bnQobmV4dENoaWxkcmVuKTtcbiAgaWYgKGNvdW50ICE9PSBDaGlsZHJlbi5jb3VudChwcmV2Q2hpbGRyZW4pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChjb3VudCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICByZXR1cm4gaXNTaW5nbGVDaGlsZEVxdWFsKEFycmF5LmlzQXJyYXkobmV4dENoaWxkcmVuKSA/IG5leHRDaGlsZHJlblswXSA6IG5leHRDaGlsZHJlbiwgQXJyYXkuaXNBcnJheShwcmV2Q2hpbGRyZW4pID8gcHJldkNoaWxkcmVuWzBdIDogcHJldkNoaWxkcmVuKTtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICB2YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW2ldO1xuICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW5baV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dENoaWxkKSB8fCBBcnJheS5pc0FycmF5KHByZXZDaGlsZCkpIHtcbiAgICAgIGlmICghaXNDaGlsZHJlbkVxdWFsKG5leHRDaGlsZCwgcHJldkNoaWxkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgfSBlbHNlIGlmICghaXNTaW5nbGVDaGlsZEVxdWFsKG5leHRDaGlsZCwgcHJldkNoaWxkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5leHBvcnQgdmFyIGlzU2luZ2xlQ2hpbGRFcXVhbCA9IGZ1bmN0aW9uIGlzU2luZ2xlQ2hpbGRFcXVhbChuZXh0Q2hpbGQsIHByZXZDaGlsZCkge1xuICBpZiAoaXNOaWwobmV4dENoaWxkKSAmJiBpc05pbChwcmV2Q2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCFpc05pbChuZXh0Q2hpbGQpICYmICFpc05pbChwcmV2Q2hpbGQpKSB7XG4gICAgdmFyIF9yZWYgPSBuZXh0Q2hpbGQucHJvcHMgfHwge30sXG4gICAgICBuZXh0Q2hpbGRyZW4gPSBfcmVmLmNoaWxkcmVuLFxuICAgICAgbmV4dFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG4gICAgdmFyIF9yZWYyID0gcHJldkNoaWxkLnByb3BzIHx8IHt9LFxuICAgICAgcHJldkNoaWxkcmVuID0gX3JlZjIuY2hpbGRyZW4sXG4gICAgICBwcmV2UHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIsIF9leGNsdWRlZDIpO1xuICAgIGlmIChuZXh0Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gc2hhbGxvd0VxdWFsKG5leHRQcm9wcywgcHJldlByb3BzKSAmJiBpc0NoaWxkcmVuRXF1YWwobmV4dENoaWxkcmVuLCBwcmV2Q2hpbGRyZW4pO1xuICAgIH1cbiAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gc2hhbGxvd0VxdWFsKG5leHRQcm9wcywgcHJldlByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIHJlbmRlckJ5T3JkZXIgPSBmdW5jdGlvbiByZW5kZXJCeU9yZGVyKGNoaWxkcmVuLCByZW5kZXJNYXApIHtcbiAgdmFyIGVsZW1lbnRzID0gW107XG4gIHZhciByZWNvcmQgPSB7fTtcbiAgdG9BcnJheShjaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQsIGluZGV4KSB7XG4gICAgaWYgKGlzU3ZnRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2goY2hpbGQpO1xuICAgIH0gZWxzZSBpZiAoY2hpbGQpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKGNoaWxkLnR5cGUpO1xuICAgICAgdmFyIF9yZWYzID0gcmVuZGVyTWFwW2Rpc3BsYXlOYW1lXSB8fCB7fSxcbiAgICAgICAgaGFuZGxlciA9IF9yZWYzLmhhbmRsZXIsXG4gICAgICAgIG9uY2UgPSBfcmVmMy5vbmNlO1xuICAgICAgaWYgKGhhbmRsZXIgJiYgKCFvbmNlIHx8ICFyZWNvcmRbZGlzcGxheU5hbWVdKSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IGhhbmRsZXIoY2hpbGQsIGRpc3BsYXlOYW1lLCBpbmRleCk7XG4gICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0cyk7XG4gICAgICAgIHJlY29yZFtkaXNwbGF5TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBlbGVtZW50cztcbn07XG5leHBvcnQgdmFyIGdldFJlYWN0RXZlbnRCeVR5cGUgPSBmdW5jdGlvbiBnZXRSZWFjdEV2ZW50QnlUeXBlKGUpIHtcbiAgdmFyIHR5cGUgPSBlICYmIGUudHlwZTtcbiAgaWYgKHR5cGUgJiYgUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV0pIHtcbiAgICByZXR1cm4gUkVBQ1RfQlJPV1NFUl9FVkVOVF9NQVBbdHlwZV07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZXhwb3J0IHZhciBwYXJzZUNoaWxkSW5kZXggPSBmdW5jdGlvbiBwYXJzZUNoaWxkSW5kZXgoY2hpbGQsIGNoaWxkcmVuKSB7XG4gIHJldHVybiB0b0FycmF5KGNoaWxkcmVuKS5pbmRleE9mKGNoaWxkKTtcbn07Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJzb3VyY2UiLCJleGNsdWRlZCIsInRhcmdldCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwia2V5IiwiaSIsIk9iamVjdCIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwicHJvdG90eXBlIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjYWxsIiwic291cmNlS2V5cyIsImtleXMiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJnZXQiLCJpc05pbCIsImlzU3RyaW5nIiwiaXNGdW5jdGlvbiIsImlzT2JqZWN0IiwiQ2hpbGRyZW4iLCJpc1ZhbGlkRWxlbWVudCIsImlzRnJhZ21lbnQiLCJpc051bWJlciIsInNoYWxsb3dFcXVhbCIsIkZpbHRlcmVkRWxlbWVudEtleU1hcCIsIlNWR0VsZW1lbnRQcm9wS2V5cyIsIkV2ZW50S2V5cyIsIlJFQUNUX0JST1dTRVJfRVZFTlRfTUFQIiwiY2xpY2siLCJtb3VzZWRvd24iLCJtb3VzZXVwIiwibW91c2VvdmVyIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInRvdWNoY2FuY2VsIiwidG91Y2hlbmQiLCJ0b3VjaG1vdmUiLCJ0b3VjaHN0YXJ0IiwiU0NBTEVfVFlQRVMiLCJMRUdFTkRfVFlQRVMiLCJUT09MVElQX1RZUEVTIiwiZ2V0RGlzcGxheU5hbWUiLCJDb21wIiwiZGlzcGxheU5hbWUiLCJuYW1lIiwibGFzdENoaWxkcmVuIiwibGFzdFJlc3VsdCIsInRvQXJyYXkiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImZvckVhY2giLCJjaGlsZCIsImNvbmNhdCIsInByb3BzIiwicHVzaCIsImZpbmRBbGxCeVR5cGUiLCJ0eXBlIiwidHlwZXMiLCJtYXAiLCJ0IiwiY2hpbGRUeXBlIiwiZmluZENoaWxkQnlUeXBlIiwid2l0aG91dFR5cGUiLCJuZXdDaGlsZHJlbiIsInZhbGlkYXRlV2lkdGhIZWlnaHQiLCJlbCIsIl9lbCRwcm9wcyIsIndpZHRoIiwiaGVpZ2h0IiwiU1ZHX1RBR1MiLCJpc1N2Z0VsZW1lbnQiLCJpc0RvdFByb3BzIiwiZG90IiwiaXNWYWxpZFNwcmVhZGFibGVQcm9wIiwicHJvcGVydHkiLCJpbmNsdWRlRXZlbnRzIiwic3ZnRWxlbWVudFR5cGUiLCJfRmlsdGVyZWRFbGVtZW50S2V5TWEiLCJtYXRjaGluZ0VsZW1lbnRUeXBlS2V5cyIsImluY2x1ZGVzIiwiZmlsdGVyU3ZnRWxlbWVudHMiLCJzdmdFbGVtZW50cyIsImVudHJ5IiwiZmlsdGVyUHJvcHMiLCJpbnB1dFByb3BzIiwib3V0IiwiX2lucHV0UHJvcHMiLCJpc0NoaWxkcmVuRXF1YWwiLCJuZXh0Q2hpbGRyZW4iLCJwcmV2Q2hpbGRyZW4iLCJjb3VudCIsImlzU2luZ2xlQ2hpbGRFcXVhbCIsIm5leHRDaGlsZCIsInByZXZDaGlsZCIsIl9yZWYiLCJuZXh0UHJvcHMiLCJfcmVmMiIsInByZXZQcm9wcyIsInJlbmRlckJ5T3JkZXIiLCJyZW5kZXJNYXAiLCJlbGVtZW50cyIsInJlY29yZCIsImluZGV4IiwiX3JlZjMiLCJoYW5kbGVyIiwib25jZSIsInJlc3VsdHMiLCJnZXRSZWFjdEV2ZW50QnlUeXBlIiwiZSIsInBhcnNlQ2hpbGRJbmRleCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js":
/*!*********************************************************!*\
!*** ./node_modules/recharts/es6/util/ReduceCSSCalc.js ***!
\*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ reduceCSSCalc: () => (/* binding */ reduceCSSCalc),\n/* harmony export */ safeEvaluateExpression: () => (/* binding */ safeEvaluateExpression)\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e, n, i, u, a = [], f = !0, o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for(; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally{\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally{\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n cm: 96 / 2.54,\n mm: 96 / 25.4,\n pt: 96 / 72,\n pc: 96 / 6,\n \"in\": 96,\n Q: 96 / (2.54 * 40),\n px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = \"NaN\";\nfunction convertToPx(value, unit) {\n return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/ function() {\n function DecimalCSS(num, unit) {\n _classCallCheck(this, DecimalCSS);\n this.num = num;\n this.unit = unit;\n this.num = num;\n this.unit = unit;\n if (Number.isNaN(num)) {\n this.unit = \"\";\n }\n if (unit !== \"\" && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n this.num = NaN;\n this.unit = \"\";\n }\n if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n this.num = convertToPx(num, unit);\n this.unit = \"px\";\n }\n }\n _createClass(DecimalCSS, [\n {\n key: \"add\",\n value: function add(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, \"\");\n }\n return new DecimalCSS(this.num + other.num, this.unit);\n }\n },\n {\n key: \"subtract\",\n value: function subtract(other) {\n if (this.unit !== other.unit) {\n return new DecimalCSS(NaN, \"\");\n }\n return new DecimalCSS(this.num - other.num, this.unit);\n }\n },\n {\n key: \"multiply\",\n value: function multiply(other) {\n if (this.unit !== \"\" && other.unit !== \"\" && this.unit !== other.unit) {\n return new DecimalCSS(NaN, \"\");\n }\n return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n }\n },\n {\n key: \"divide\",\n value: function divide(other) {\n if (this.unit !== \"\" && other.unit !== \"\" && this.unit !== other.unit) {\n return new DecimalCSS(NaN, \"\");\n }\n return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n }\n },\n {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.num).concat(this.unit);\n }\n },\n {\n key: \"isNaN\",\n value: function isNaN() {\n return Number.isNaN(this.num);\n }\n }\n ], [\n {\n key: \"parse\",\n value: function parse(str) {\n var _NUM_SPLIT_REGEX$exec;\n var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [], _ref2 = _slicedToArray(_ref, 3), numStr = _ref2[1], unit = _ref2[2];\n return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : \"\");\n }\n }\n ]);\n return DecimalCSS;\n}();\nfunction calculateArithmetic(expr) {\n if (expr.includes(STR_NAN)) {\n return STR_NAN;\n }\n var newExpr = expr;\n while(newExpr.includes(\"*\") || newExpr.includes(\"/\")){\n var _MULTIPLY_OR_DIVIDE_R;\n var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [], _ref4 = _slicedToArray(_ref3, 4), leftOperand = _ref4[1], operator = _ref4[2], rightOperand = _ref4[3];\n var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : \"\");\n var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : \"\");\n var result = operator === \"*\" ? lTs.multiply(rTs) : lTs.divide(rTs);\n if (result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n }\n while(newExpr.includes(\"+\") || /.-\\d+(?:\\.\\d+)?/.test(newExpr)){\n var _ADD_OR_SUBTRACT_REGE;\n var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [], _ref6 = _slicedToArray(_ref5, 4), _leftOperand = _ref6[1], _operator = _ref6[2], _rightOperand = _ref6[3];\n var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : \"\");\n var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : \"\");\n var _result = _operator === \"+\" ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n if (_result.isNaN()) {\n return STR_NAN;\n }\n newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n }\n return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n var newExpr = expr;\n while(newExpr.includes(\"(\")){\n var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr), _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2), parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n }\n return newExpr;\n}\nfunction evaluateExpression(expression) {\n var newExpr = expression.replace(/\\s+/g, \"\");\n newExpr = calculateParentheses(newExpr);\n newExpr = calculateArithmetic(newExpr);\n return newExpr;\n}\nfunction safeEvaluateExpression(expression) {\n try {\n return evaluateExpression(expression);\n } catch (e) {\n /* istanbul ignore next */ return STR_NAN;\n }\n}\nfunction reduceCSSCalc(expression) {\n var result = safeEvaluateExpression(expression.slice(5, -1));\n if (result === STR_NAN) {\n // notify the user\n return \"\";\n }\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUmVkdWNlQ1NTQ2FsYy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxlQUFlQyxHQUFHLEVBQUVDLENBQUM7SUFBSSxPQUFPQyxnQkFBZ0JGLFFBQVFHLHNCQUFzQkgsS0FBS0MsTUFBTUcsNEJBQTRCSixLQUFLQyxNQUFNSTtBQUFvQjtBQUM3SixTQUFTQTtJQUFxQixNQUFNLElBQUlDLFVBQVU7QUFBOEk7QUFDaE0sU0FBU0YsNEJBQTRCVixDQUFDLEVBQUVhLE1BQU07SUFBSSxJQUFJLENBQUNiLEdBQUc7SUFBUSxJQUFJLE9BQU9BLE1BQU0sVUFBVSxPQUFPYyxrQkFBa0JkLEdBQUdhO0lBQVMsSUFBSUUsSUFBSUMsT0FBT1osU0FBUyxDQUFDYSxRQUFRLENBQUNDLElBQUksQ0FBQ2xCLEdBQUdtQixLQUFLLENBQUMsR0FBRyxDQUFDO0lBQUksSUFBSUosTUFBTSxZQUFZZixFQUFFRyxXQUFXLEVBQUVZLElBQUlmLEVBQUVHLFdBQVcsQ0FBQ2lCLElBQUk7SUFBRSxJQUFJTCxNQUFNLFNBQVNBLE1BQU0sT0FBTyxPQUFPTSxNQUFNQyxJQUFJLENBQUN0QjtJQUFJLElBQUllLE1BQU0sZUFBZSwyQ0FBMkNRLElBQUksQ0FBQ1IsSUFBSSxPQUFPRCxrQkFBa0JkLEdBQUdhO0FBQVM7QUFDL1osU0FBU0Msa0JBQWtCUixHQUFHLEVBQUVrQixH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LE9BQU8wQztJQUNUO0FBQ0Y7QUFDTyxTQUFTb0QsY0FBY0YsVUFBVTtJQUN0QyxJQUFJakIsU0FBU2tCLHVCQUF1QkQsV0FBV3ZHLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDekQsSUFBSXNGLFdBQVdqQyxTQUFTO1FBQ3RCLGtCQUFrQjtRQUNsQixPQUFPO0lBQ1Q7SUFDQSxPQUFPaUM7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvUmVkdWNlQ1NTQ2FsYy5qcz82ZWM5Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07IHJldHVybiBhcnIyOyB9XG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQociwgbCkgeyB2YXIgdCA9IG51bGwgPT0gciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXCJAQGl0ZXJhdG9yXCJdOyBpZiAobnVsbCAhPSB0KSB7IHZhciBlLCBuLCBpLCB1LCBhID0gW10sIGYgPSAhMCwgbyA9ICExOyB0cnkgeyBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7IGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjsgZiA9ICExOyB9IGVsc2UgZm9yICg7ICEoZiA9IChlID0gaS5jYWxsKHQpKS5kb25lKSAmJiAoYS5wdXNoKGUudmFsdWUpLCBhLmxlbmd0aCAhPT0gbCk7IGYgPSAhMCk7IH0gY2F0Y2ggKHIpIHsgbyA9ICEwLCBuID0gcjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFmICYmIG51bGwgIT0gdFtcInJldHVyblwiXSAmJiAodSA9IHRbXCJyZXR1cm5cIl0oKSwgT2JqZWN0KHUpICE9PSB1KSkgcmV0dXJuOyB9IGZpbmFsbHkgeyBpZiAobykgdGhyb3cgbjsgfSB9IHJldHVybiBhOyB9IH1cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgX3RvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTsgfSB9XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgXCJwcm90b3R5cGVcIiwgeyB3cml0YWJsZTogZmFsc2UgfSk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG52YXIgTVVMVElQTFlfT1JfRElWSURFX1JFR0VYID0gLygtP1xcZCsoPzpcXC5cXGQrKT9bYS16QS1aJV0qKShbKi9dKSgtP1xcZCsoPzpcXC5cXGQrKT9bYS16QS1aJV0qKS87XG52YXIgQUREX09SX1NVQlRSQUNUX1JFR0VYID0gLygtP1xcZCsoPzpcXC5cXGQrKT9bYS16QS1aJV0qKShbKy1dKSgtP1xcZCsoPzpcXC5cXGQrKT9bYS16QS1aJV0qKS87XG52YXIgQ1NTX0xFTkdUSF9VTklUX1JFR0VYID0gL15weHxjbXx2aHx2d3xlbXxyZW18JXxtbXxpbnxwdHxwY3xleHxjaHx2bWlufHZtYXh8USQvO1xudmFyIE5VTV9TUExJVF9SRUdFWCA9IC8oLT9cXGQrKD86XFwuXFxkKyk/KShbYS16QS1aJV0rKT8vO1xudmFyIENPTlZFUlNJT05fUkFURVMgPSB7XG4gIGNtOiA5NiAvIDIuNTQsXG4gIG1tOiA5NiAvIDI1LjQsXG4gIHB0OiA5NiAvIDcyLFxuICBwYzogOTYgLyA2LFxuICBcImluXCI6IDk2LFxuICBROiA5NiAvICgyLjU0ICogNDApLFxuICBweDogMVxufTtcbnZhciBGSVhFRF9DU1NfTEVOR1RIX1VOSVRTID0gT2JqZWN0LmtleXMoQ09OVkVSU0lPTl9SQVRFUyk7XG52YXIgU1RSX05BTiA9ICdOYU4nO1xuZnVuY3Rpb24gY29udmVydFRvUHgodmFsdWUsIHVuaXQpIHtcbiAgcmV0dXJuIHZhbHVlICogQ09OVkVSU0lPTl9SQVRFU1t1bml0XTtcbn1cbnZhciBEZWNpbWFsQ1NTID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRGVjaW1hbENTUyhudW0sIHVuaXQpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGVjaW1hbENTUyk7XG4gICAgdGhpcy5udW0gPSBudW07XG4gICAgdGhpcy51bml0ID0gdW5pdDtcbiAgICB0aGlzLm51bSA9IG51bTtcbiAgICB0aGlzLnVuaXQgPSB1bml0O1xuICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSkge1xuICAgICAgdGhpcy51bml0ID0gJyc7XG4gICAgfVxuICAgIGlmICh1bml0ICE9PSAnJyAmJiAhQ1NTX0xFTkdUSF9VTklUX1JFR0VYLnRlc3QodW5pdCkpIHtcbiAgICAgIHRoaXMubnVtID0gTmFOO1xuICAgICAgdGhpcy51bml0ID0gJyc7XG4gICAgfVxuICAgIGlmIChGSVhFRF9DU1NfTEVOR1RIX1VOSVRTLmluY2x1ZGVzKHVuaXQpKSB7XG4gICAgICB0aGlzLm51bSA9IGNvbnZlcnRUb1B4KG51bSwgdW5pdCk7XG4gICAgICB0aGlzLnVuaXQgPSAncHgnO1xuICAgIH1cbiAgfVxuICBfY3JlYXRlQ2xhc3MoRGVjaW1hbENTUywgW3tcbiAgICBrZXk6IFwiYWRkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZChvdGhlcikge1xuICAgICAgaWYgKHRoaXMudW5pdCAhPT0gb3RoZXIudW5pdCkge1xuICAgICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1MoTmFOLCAnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1ModGhpcy5udW0gKyBvdGhlci5udW0sIHRoaXMudW5pdCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN1YnRyYWN0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnRyYWN0KG90aGVyKSB7XG4gICAgICBpZiAodGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSAtIG90aGVyLm51bSwgdGhpcy51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibXVsdGlwbHlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbXVsdGlwbHkob3RoZXIpIHtcbiAgICAgIGlmICh0aGlzLnVuaXQgIT09ICcnICYmIG90aGVyLnVuaXQgIT09ICcnICYmIHRoaXMudW5pdCAhPT0gb3RoZXIudW5pdCkge1xuICAgICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1MoTmFOLCAnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IERlY2ltYWxDU1ModGhpcy5udW0gKiBvdGhlci5udW0sIHRoaXMudW5pdCB8fCBvdGhlci51bml0KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZGl2aWRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpdmlkZShvdGhlcikge1xuICAgICAgaWYgKHRoaXMudW5pdCAhPT0gJycgJiYgb3RoZXIudW5pdCAhPT0gJycgJiYgdGhpcy51bml0ICE9PSBvdGhlci51bml0KSB7XG4gICAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhOYU4sICcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyh0aGlzLm51bSAvIG90aGVyLm51bSwgdGhpcy51bml0IHx8IG90aGVyLnVuaXQpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0b1N0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLm51bSkuY29uY2F0KHRoaXMudW5pdCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzTmFOXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzTmFOKCkge1xuICAgICAgcmV0dXJuIE51bWJlci5pc05hTih0aGlzLm51bSk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gICAgICB2YXIgX05VTV9TUExJVF9SRUdFWCRleGVjO1xuICAgICAgdmFyIF9yZWYgPSAoX05VTV9TUExJVF9SRUdFWCRleGVjID0gTlVNX1NQTElUX1JFR0VYLmV4ZWMoc3RyKSkgIT09IG51bGwgJiYgX05VTV9TUExJVF9SRUdFWCRleGVjICE9PSB2b2lkIDAgPyBfTlVNX1NQTElUX1JFR0VYJGV4ZWMgOiBbXSxcbiAgICAgICAgX3JlZjIgPSBfc2xpY2VkVG9BcnJheShfcmVmLCAzKSxcbiAgICAgICAgbnVtU3RyID0gX3JlZjJbMV0sXG4gICAgICAgIHVuaXQgPSBfcmVmMlsyXTtcbiAgICAgIHJldHVybiBuZXcgRGVjaW1hbENTUyhwYXJzZUZsb2F0KG51bVN0ciksIHVuaXQgIT09IG51bGwgJiYgdW5pdCAhPT0gdm9pZCAwID8gdW5pdCA6ICcnKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIERlY2ltYWxDU1M7XG59KCk7XG5mdW5jdGlvbiBjYWxjdWxhdGVBcml0aG1ldGljKGV4cHIpIHtcbiAgaWYgKGV4cHIuaW5jbHVkZXMoU1RSX05BTikpIHtcbiAgICByZXR1cm4gU1RSX05BTjtcbiAgfVxuICB2YXIgbmV3RXhwciA9IGV4cHI7XG4gIHdoaWxlIChuZXdFeHByLmluY2x1ZGVzKCcqJykgfHwgbmV3RXhwci5pbmNsdWRlcygnLycpKSB7XG4gICAgdmFyIF9NVUxUSVBMWV9PUl9ESVZJREVfUjtcbiAgICB2YXIgX3JlZjMgPSAoX01VTFRJUExZX09SX0RJVklERV9SID0gTVVMVElQTFlfT1JfRElWSURFX1JFR0VYLmV4ZWMobmV3RXhwcikpICE9PSBudWxsICYmIF9NVUxUSVBMWV9PUl9ESVZJREVfUiAhPT0gdm9pZCAwID8gX01VTFRJUExZX09SX0RJVklERV9SIDogW10sXG4gICAgICBfcmVmNCA9IF9zbGljZWRUb0FycmF5KF9yZWYzLCA0KSxcbiAgICAgIGxlZnRPcGVyYW5kID0gX3JlZjRbMV0sXG4gICAgICBvcGVyYXRvciA9IF9yZWY0WzJdLFxuICAgICAgcmlnaHRPcGVyYW5kID0gX3JlZjRbM107XG4gICAgdmFyIGxUcyA9IERlY2ltYWxDU1MucGFyc2UobGVmdE9wZXJhbmQgIT09IG51bGwgJiYgbGVmdE9wZXJhbmQgIT09IHZvaWQgMCA/IGxlZnRPcGVyYW5kIDogJycpO1xuICAgIHZhciByVHMgPSBEZWNpbWFsQ1NTLnBhcnNlKHJpZ2h0T3BlcmFuZCAhPT0gbnVsbCAmJiByaWdodE9wZXJhbmQgIT09IHZvaWQgMCA/IHJpZ2h0T3BlcmFuZCA6ICcnKTtcbiAgICB2YXIgcmVzdWx0ID0gb3BlcmF0b3IgPT09ICcqJyA/IGxUcy5tdWx0aXBseShyVHMpIDogbFRzLmRpdmlkZShyVHMpO1xuICAgIGlmIChyZXN1bHQuaXNOYU4oKSkge1xuICAgICAgcmV0dXJuIFNUUl9OQU47XG4gICAgfVxuICAgIG5ld0V4cHIgPSBuZXdFeHByLnJlcGxhY2UoTVVMVElQTFlfT1JfRElWSURFX1JFR0VYLCByZXN1bHQudG9TdHJpbmcoKSk7XG4gIH1cbiAgd2hpbGUgKG5ld0V4cHIuaW5jbHVkZXMoJysnKSB8fCAvLi1cXGQrKD86XFwuXFxkKyk/Ly50ZXN0KG5ld0V4cHIpKSB7XG4gICAgdmFyIF9BRERfT1JfU1VCVFJBQ1RfUkVHRTtcbiAgICB2YXIgX3JlZjUgPSAoX0FERF9PUl9TVUJUUkFDVF9SRUdFID0gQUREX09SX1NVQlRSQUNUX1JFR0VYLmV4ZWMobmV3RXhwcikpICE9PSBudWxsICYmIF9BRERfT1JfU1VCVFJBQ1RfUkVHRSAhPT0gdm9pZCAwID8gX0FERF9PUl9TVUJUUkFDVF9SRUdFIDogW10sXG4gICAgICBfcmVmNiA9IF9zbGljZWRUb0FycmF5KF9yZWY1LCA0KSxcbiAgICAgIF9sZWZ0T3BlcmFuZCA9IF9yZWY2WzFdLFxuICAgICAgX29wZXJhdG9yID0gX3JlZjZbMl0sXG4gICAgICBfcmlnaHRPcGVyYW5kID0gX3JlZjZbM107XG4gICAgdmFyIF9sVHMgPSBEZWNpbWFsQ1NTLnBhcnNlKF9sZWZ0T3BlcmFuZCAhPT0gbnVsbCAmJiBfbGVmdE9wZXJhbmQgIT09IHZvaWQgMCA/IF9sZWZ0T3BlcmFuZCA6ICcnKTtcbiAgICB2YXIgX3JUcyA9IERlY2ltYWxDU1MucGFyc2UoX3JpZ2h0T3BlcmFuZCAhPT0gbnVsbCAmJiBfcmlnaHRPcGVyYW5kICE9PSB2b2lkIDAgPyBfcmlnaHRPcGVyYW5kIDogJycpO1xuICAgIHZhciBfcmVzdWx0ID0gX29wZXJhdG9yID09PSAnKycgPyBfbFRzLmFkZChfclRzKSA6IF9sVHMuc3VidHJhY3QoX3JUcyk7XG4gICAgaWYgKF9yZXN1bHQuaXNOYU4oKSkge1xuICAgICAgcmV0dXJuIFNUUl9OQU47XG4gICAgfVxuICAgIG5ld0V4cHIgPSBuZXdFeHByLnJlcGxhY2UoQUREX09SX1NVQlRSQUNUX1JFR0VYLCBfcmVzdWx0LnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiBuZXdFeHByO1xufVxudmFyIFBBUkVOVEhFU0VTX1JFR0VYID0gL1xcKChbXigpXSopXFwpLztcbmZ1bmN0aW9uIGNhbGN1bGF0ZVBhcmVudGhlc2VzKGV4cHIpIHtcbiAgdmFyIG5ld0V4cHIgPSBleHByO1xuICB3aGlsZSAobmV3RXhwci5pbmNsdWRlcygnKCcpKSB7XG4gICAgdmFyIF9QQVJFTlRIRVNFU19SRUdFWCRleCA9IFBBUkVOVEhFU0VTX1JFR0VYLmV4ZWMobmV3RXhwciksXG4gICAgICBfUEFSRU5USEVTRVNfUkVHRVgkZXgyID0gX3NsaWNlZFRvQXJyYXkoX1BBUkVOVEhFU0VTX1JFR0VYJGV4LCAyKSxcbiAgICAgIHBhcmVudGhldGljYWxFeHByZXNzaW9uID0gX1BBUkVOVEhFU0VTX1JFR0VYJGV4MlsxXTtcbiAgICBuZXdFeHByID0gbmV3RXhwci5yZXBsYWNlKFBBUkVOVEhFU0VTX1JFR0VYLCBjYWxjdWxhdGVBcml0aG1ldGljKHBhcmVudGhldGljYWxFeHByZXNzaW9uKSk7XG4gIH1cbiAgcmV0dXJuIG5ld0V4cHI7XG59XG5mdW5jdGlvbiBldmFsdWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICB2YXIgbmV3RXhwciA9IGV4cHJlc3Npb24ucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gIG5ld0V4cHIgPSBjYWxjdWxhdGVQYXJlbnRoZXNlcyhuZXdFeHByKTtcbiAgbmV3RXhwciA9IGNhbGN1bGF0ZUFyaXRobWV0aWMobmV3RXhwcik7XG4gIHJldHVybiBuZXdFeHByO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVFdmFsdWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbikge1xuICB0cnkge1xuICAgIHJldHVybiBldmFsdWF0ZUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiBTVFJfTkFOO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlQ1NTQ2FsYyhleHByZXNzaW9uKSB7XG4gIHZhciByZXN1bHQgPSBzYWZlRXZhbHVhdGVFeHByZXNzaW9uKGV4cHJlc3Npb24uc2xpY2UoNSwgLTEpKTtcbiAgaWYgKHJlc3VsdCA9PT0gU1RSX05BTikge1xuICAgIC8vIG5vdGlmeSB0aGUgdXNlclxuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImxlbmd0aCIsImFycjIiLCJyIiwibCIsInQiLCJlIiwidSIsImEiLCJmIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJpc0FycmF5IiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwidGFyZ2V0IiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsInRvUHJpbWl0aXZlIiwiTnVtYmVyIiwiTVVMVElQTFlfT1JfRElWSURFX1JFR0VYIiwiQUREX09SX1NVQlRSQUNUX1JFR0VYIiwiQ1NTX0xFTkdUSF9VTklUX1JFR0VYIiwiTlVNX1NQTElUX1JFR0VYIiwiQ09OVkVSU0lPTl9SQVRFUyIsImNtIiwibW0iLCJwdCIsInBjIiwiUSIsInB4IiwiRklYRURfQ1NTX0xFTkdUSF9VTklUUyIsImtleXMiLCJTVFJfTkFOIiwiY29udmVydFRvUHgiLCJ1bml0IiwiRGVjaW1hbENTUyIsIm51bSIsImlzTmFOIiwiTmFOIiwiaW5jbHVkZXMiLCJhZGQiLCJvdGhlciIsInN1YnRyYWN0IiwibXVsdGlwbHkiLCJkaXZpZGUiLCJjb25jYXQiLCJwYXJzZSIsInN0ciIsIl9OVU1fU1BMSVRfUkVHRVgkZXhlYyIsIl9yZWYiLCJleGVjIiwiX3JlZjIiLCJudW1TdHIiLCJwYXJzZUZsb2F0IiwiY2FsY3VsYXRlQXJpdGhtZXRpYyIsImV4cHIiLCJuZXdFeHByIiwiX01VTFRJUExZX09SX0RJVklERV9SIiwiX3JlZjMiLCJfcmVmNCIsImxlZnRPcGVyYW5kIiwib3BlcmF0b3IiLCJyaWdodE9wZXJhbmQiLCJsVHMiLCJyVHMiLCJyZXN1bHQiLCJyZXBsYWNlIiwiX0FERF9PUl9TVUJUUkFDVF9SRUdFIiwiX3JlZjUiLCJfcmVmNiIsIl9sZWZ0T3BlcmFuZCIsIl9vcGVyYXRvciIsIl9yaWdodE9wZXJhbmQiLCJfbFRzIiwiX3JUcyIsIl9yZXN1bHQiLCJQQVJFTlRIRVNFU19SRUdFWCIsImNhbGN1bGF0ZVBhcmVudGhlc2VzIiwiX1BBUkVOVEhFU0VTX1JFR0VYJGV4IiwiX1BBUkVOVEhFU0VTX1JFR0VYJGV4MiIsInBhcmVudGhldGljYWxFeHByZXNzaW9uIiwiZXZhbHVhdGVFeHByZXNzaW9uIiwiZXhwcmVzc2lvbiIsInNhZmVFdmFsdWF0ZUV4cHJlc3Npb24iLCJyZWR1Y2VDU1NDYWxjIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ReduceCSSCalc.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js":
/*!********************************************************!*\
!*** ./node_modules/recharts/es6/util/ShallowEqual.js ***!
\********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ shallowEqual: () => (/* binding */ shallowEqual)\n/* harmony export */ });\nfunction shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */ for(var key in a){\n if (({}).hasOwnProperty.call(a, key) && (!({}).hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n for(var _key in b){\n if (({}).hasOwnProperty.call(b, _key) && !({}).hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvU2hhbGxvd0VxdWFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxTQUFTQSxhQUFhQyxDQUFDLEVBQUVDLENBQUM7SUFDL0IsdUNBQXVDLEdBQ3ZDLElBQUssSUFBSUMsT0FBT0YsRUFBRztRQUNqQixJQUFJLEVBQUMsR0FBRUcsY0FBYyxDQUFDQyxJQUFJLENBQUNKLEdBQUdFLFFBQVMsRUFBQyxFQUFDLEdBQUVDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHQyxRQUFRRixDQUFDLENBQUNFLElBQUksS0FBS0QsQ0FBQyxDQUFDQyxJQUFJLEdBQUc7WUFDNUYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxJQUFLLElBQUlHLFFBQVFKLEVBQUc7UUFDbEIsSUFBSSxFQUFDLEdBQUVFLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHSSxTQUFTLENBQUMsRUFBQyxHQUFFRixjQUFjLENBQUNDLElBQUksQ0FBQ0osR0FBR0ssT0FBTztZQUN2RSxPQUFPO1FBQ1Q7SUFDRjtJQUNBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvU2hhbGxvd0VxdWFsLmpzP2ViNTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChhLCBiKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4gIGZvciAodmFyIGtleSBpbiBhKSB7XG4gICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwoYSwga2V5KSAmJiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5KSB8fCBhW2tleV0gIT09IGJba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgX2tleSBpbiBiKSB7XG4gICAgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwgX2tleSkgJiYgIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYSwgX2tleSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59Il0sIm5hbWVzIjpbInNoYWxsb3dFcXVhbCIsImEiLCJiIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiX2tleSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/ShallowEqual.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/TickUtils.js":
/*!*****************************************************!*\
!*** ./node_modules/recharts/es6/util/TickUtils.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAngledTickWidth: () => (/* binding */ getAngledTickWidth),\n/* harmony export */ getNumberIntervalTicks: () => (/* binding */ getNumberIntervalTicks),\n/* harmony export */ getTickBoundaries: () => (/* binding */ getTickBoundaries),\n/* harmony export */ isVisible: () => (/* binding */ isVisible)\n/* harmony export */ });\n/* harmony import */ var _CartesianUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CartesianUtils */ \"(ssr)/./node_modules/recharts/es6/util/CartesianUtils.js\");\n/* harmony import */ var _getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getEveryNthWithCondition */ \"(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\");\n\n\nfunction getAngledTickWidth(contentSize, unitSize, angle) {\n var size = {\n width: contentSize.width + unitSize.width,\n height: contentSize.height + unitSize.height\n };\n return (0,_CartesianUtils__WEBPACK_IMPORTED_MODULE_0__.getAngledRectangleWidth)(size, angle);\n}\nfunction getTickBoundaries(viewBox, sign, sizeKey) {\n var isWidth = sizeKey === \"width\";\n var x = viewBox.x, y = viewBox.y, width = viewBox.width, height = viewBox.height;\n if (sign === 1) {\n return {\n start: isWidth ? x : y,\n end: isWidth ? x + width : y + height\n };\n }\n return {\n start: isWidth ? x + width : y + height,\n end: isWidth ? x : y\n };\n}\nfunction isVisible(sign, tickPosition, getSize, start, end) {\n /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n * the tick's size. */ if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n return false;\n }\n var size = getSize();\n return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nfunction getNumberIntervalTicks(ticks, interval) {\n return (0,_getEveryNthWithCondition__WEBPACK_IMPORTED_MODULE_1__.getEveryNthWithCondition)(ticks, interval + 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvVGlja1V0aWxzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEyRDtBQUNXO0FBQy9ELFNBQVNFLG1CQUFtQkMsV0FBVyxFQUFFQyxRQUFRLEVBQUVDLEtBQUs7SUFDN0QsSUFBSUMsT0FBTztRQUNUQyxPQUFPSixZQUFZSSxLQUFLLEdBQUdILFNBQVNHLEtBQUs7UUFDekNDLFFBQVFMLFlBQVlLLE1BQU0sR0FBR0osU0FBU0ksTUFBTTtJQUM5QztJQUNBLE9BQU9SLHdFQUF1QkEsQ0FBQ00sTUFBTUQ7QUFDdkM7QUFDTyxTQUFTSSxrQkFBa0JDLE9BQU8sRUFBRUMsSUFBSSxFQUFFQyxPQUFPO0lBQ3RELElBQUlDLFVBQVVELFlBQVk7SUFDMUIsSUFBSUUsSUFBSUosUUFBUUksQ0FBQyxFQUNmQyxJQUFJTCxRQUFRSyxDQUFDLEVBQ2JSLFFBQVFHLFFBQVFILEtBQUssRUFDckJDLFNBQVNFLFFBQVFGLE1BQU07SUFDekIsSUFBSUcsU0FBUyxHQUFHO1FBQ2QsT0FBTztZQUNMSyxPQUFPSCxVQUFVQyxJQUFJQztZQUNyQkUsS0FBS0osVUFBVUMsSUFBSVAsUUFBUVEsSUFBSVA7UUFDakM7SUFDRjtJQUNBLE9BQU87UUFDTFEsT0FBT0gsVUFBVUMsSUFBSVAsUUFBUVEsSUFBSVA7UUFDakNTLEtBQUtKLFVBQVVDLElBQUlDO0lBQ3JCO0FBQ0Y7QUFDTyxTQUFTRyxVQUFVUCxJQUFJLEVBQUVRLFlBQVksRUFBRUMsT0FBTyxFQUFFSixLQUFLLEVBQUVDLEdBQUc7SUFDL0Q7c0JBQ29CLEdBQ3BCLElBQUlOLE9BQU9RLGVBQWVSLE9BQU9LLFNBQVNMLE9BQU9RLGVBQWVSLE9BQU9NLEtBQUs7UUFDMUUsT0FBTztJQUNUO0lBQ0EsSUFBSVgsT0FBT2M7SUFDWCxPQUFPVCxPQUFRUSxDQUFBQSxlQUFlUixPQUFPTCxPQUFPLElBQUlVLEtBQUksS0FBTSxLQUFLTCxPQUFRUSxDQUFBQSxlQUFlUixPQUFPTCxPQUFPLElBQUlXLEdBQUUsS0FBTTtBQUNsSDtBQUNPLFNBQVNJLHVCQUF1QkMsS0FBSyxFQUFFQyxRQUFRO0lBQ3BELE9BQU90QixtRkFBd0JBLENBQUNxQixPQUFPQyxXQUFXO0FBQ3BEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9UaWNrVXRpbHMuanM/ZDBlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aCB9IGZyb20gJy4vQ2FydGVzaWFuVXRpbHMnO1xuaW1wb3J0IHsgZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIH0gZnJvbSAnLi9nZXRFdmVyeU50aFdpdGhDb25kaXRpb24nO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlZFRpY2tXaWR0aChjb250ZW50U2l6ZSwgdW5pdFNpemUsIGFuZ2xlKSB7XG4gIHZhciBzaXplID0ge1xuICAgIHdpZHRoOiBjb250ZW50U2l6ZS53aWR0aCArIHVuaXRTaXplLndpZHRoLFxuICAgIGhlaWdodDogY29udGVudFNpemUuaGVpZ2h0ICsgdW5pdFNpemUuaGVpZ2h0XG4gIH07XG4gIHJldHVybiBnZXRBbmdsZWRSZWN0YW5nbGVXaWR0aChzaXplLCBhbmdsZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGlja0JvdW5kYXJpZXModmlld0JveCwgc2lnbiwgc2l6ZUtleSkge1xuICB2YXIgaXNXaWR0aCA9IHNpemVLZXkgPT09ICd3aWR0aCc7XG4gIHZhciB4ID0gdmlld0JveC54LFxuICAgIHkgPSB2aWV3Qm94LnksXG4gICAgd2lkdGggPSB2aWV3Qm94LndpZHRoLFxuICAgIGhlaWdodCA9IHZpZXdCb3guaGVpZ2h0O1xuICBpZiAoc2lnbiA9PT0gMSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydDogaXNXaWR0aCA/IHggOiB5LFxuICAgICAgZW5kOiBpc1dpZHRoID8geCArIHdpZHRoIDogeSArIGhlaWdodFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogaXNXaWR0aCA/IHggKyB3aWR0aCA6IHkgKyBoZWlnaHQsXG4gICAgZW5kOiBpc1dpZHRoID8geCA6IHlcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1Zpc2libGUoc2lnbiwgdGlja1Bvc2l0aW9uLCBnZXRTaXplLCBzdGFydCwgZW5kKSB7XG4gIC8qIFNpbmNlIGdldFNpemUoKSBpcyBleHBlbnNpdmUgKGl0IHJlYWRzIHRoZSB0aWNrcycgc2l6ZSBmcm9tIHRoZSBET00pLCB3ZSBkbyB0aGlzIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGNhbGN1bGF0aW5nXG4gICAqIHRoZSB0aWNrJ3Mgc2l6ZS4gKi9cbiAgaWYgKHNpZ24gKiB0aWNrUG9zaXRpb24gPCBzaWduICogc3RhcnQgfHwgc2lnbiAqIHRpY2tQb3NpdGlvbiA+IHNpZ24gKiBlbmQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNpemUgPSBnZXRTaXplKCk7XG4gIHJldHVybiBzaWduICogKHRpY2tQb3NpdGlvbiAtIHNpZ24gKiBzaXplIC8gMiAtIHN0YXJ0KSA+PSAwICYmIHNpZ24gKiAodGlja1Bvc2l0aW9uICsgc2lnbiAqIHNpemUgLyAyIC0gZW5kKSA8PSAwO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE51bWJlckludGVydmFsVGlja3ModGlja3MsIGludGVydmFsKSB7XG4gIHJldHVybiBnZXRFdmVyeU50aFdpdGhDb25kaXRpb24odGlja3MsIGludGVydmFsICsgMSk7XG59Il0sIm5hbWVzIjpbImdldEFuZ2xlZFJlY3RhbmdsZVdpZHRoIiwiZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uIiwiZ2V0QW5nbGVkVGlja1dpZHRoIiwiY29udGVudFNpemUiLCJ1bml0U2l6ZSIsImFuZ2xlIiwic2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwiZ2V0VGlja0JvdW5kYXJpZXMiLCJ2aWV3Qm94Iiwic2lnbiIsInNpemVLZXkiLCJpc1dpZHRoIiwieCIsInkiLCJzdGFydCIsImVuZCIsImlzVmlzaWJsZSIsInRpY2tQb3NpdGlvbiIsImdldFNpemUiLCJnZXROdW1iZXJJbnRlcnZhbFRpY2tzIiwidGlja3MiLCJpbnRlcnZhbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/TickUtils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js":
/*!************************************************************!*\
!*** ./node_modules/recharts/es6/util/calculateViewBox.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ calculateViewBox: () => (/* binding */ calculateViewBox)\n/* harmony export */ });\n/* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/memoize */ \"(ssr)/./node_modules/lodash/memoize.js\");\n/* harmony import */ var lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_memoize__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */ var calculateViewBox = lodash_memoize__WEBPACK_IMPORTED_MODULE_0___default()(function(offset) {\n return {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n };\n}, function(offset) {\n return [\n \"l\",\n offset.left,\n \"t\",\n offset.top,\n \"w\",\n offset.width,\n \"h\",\n offset.height\n ].join(\"\");\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY2FsY3VsYXRlVmlld0JveC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBcUM7QUFDckM7Ozs7OztDQU1DLEdBQ00sSUFBSUMsbUJBQW1CRCxxREFBT0EsQ0FBQyxTQUFVRSxNQUFNO0lBQ3BELE9BQU87UUFDTEMsR0FBR0QsT0FBT0UsSUFBSTtRQUNkQyxHQUFHSCxPQUFPSSxHQUFHO1FBQ2JDLE9BQU9MLE9BQU9LLEtBQUs7UUFDbkJDLFFBQVFOLE9BQU9NLE1BQU07SUFDdkI7QUFDRixHQUFHLFNBQVVOLE1BQU07SUFDakIsT0FBTztRQUFDO1FBQUtBLE9BQU9FLElBQUk7UUFBRTtRQUFLRixPQUFPSSxHQUFHO1FBQUU7UUFBS0osT0FBT0ssS0FBSztRQUFFO1FBQUtMLE9BQU9NLE1BQU07S0FBQyxDQUFDQyxJQUFJLENBQUM7QUFDekYsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY2FsY3VsYXRlVmlld0JveC5qcz84NTA4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbi8qKlxuICogVGhpcyBpcyBtZW1vaXplZCBiZWNhdXNlIHRoZSB2aWV3Qm94IGlzIHVubGlrZWx5IHRvIGNoYW5nZSBvZnRlblxuICogLSBidXQgYmVjYXVzZSBpdCBpcyBjb21wdXRlZCBmcm9tIG9mZnNldCwgYW55IGNoYW5nZSB0byBpdCB3b3VsZCByZS1yZW5kZXIgYWxsIGNoaWxkcmVuLlxuICpcbiAqIEFuZCBiZWNhdXNlIHdlIGhhdmUgbWFueSByZWFkZXJzIG9mIHRoZSB2aWV3Qm94LCBhbmQgdXBkYXRlIGl0IG9ubHkgcmFyZWx5LFxuICogdGhlbiBsZXQncyBvcHRpbWl6ZSB3aXRoIG1lbW9pemF0aW9uLlxuICovXG5leHBvcnQgdmFyIGNhbGN1bGF0ZVZpZXdCb3ggPSBtZW1vaXplKGZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBvZmZzZXQubGVmdCxcbiAgICB5OiBvZmZzZXQudG9wLFxuICAgIHdpZHRoOiBvZmZzZXQud2lkdGgsXG4gICAgaGVpZ2h0OiBvZmZzZXQuaGVpZ2h0XG4gIH07XG59LCBmdW5jdGlvbiAob2Zmc2V0KSB7XG4gIHJldHVybiBbJ2wnLCBvZmZzZXQubGVmdCwgJ3QnLCBvZmZzZXQudG9wLCAndycsIG9mZnNldC53aWR0aCwgJ2gnLCBvZmZzZXQuaGVpZ2h0XS5qb2luKCcnKTtcbn0pOyJdLCJuYW1lcyI6WyJtZW1vaXplIiwiY2FsY3VsYXRlVmlld0JveCIsIm9mZnNldCIsIngiLCJsZWZ0IiwieSIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Iiwiam9pbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/calculateViewBox.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js":
/*!******************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getCursorPoints.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCursorPoints: () => (/* binding */ getCursorPoints)\n/* harmony export */ });\n/* harmony import */ var _PolarUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n/* harmony import */ var _getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getRadialCursorPoints */ \"(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\");\n\n\nfunction getCursorPoints(layout, activeCoordinate, offset) {\n var x1, y1, x2, y2;\n if (layout === \"horizontal\") {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === \"vertical\") {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n if (layout === \"centric\") {\n var cx = activeCoordinate.cx, cy = activeCoordinate.cy, innerRadius = activeCoordinate.innerRadius, outerRadius = activeCoordinate.outerRadius, angle = activeCoordinate.angle;\n var innerPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, innerRadius, angle);\n var outerPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n return (0,_getRadialCursorPoints__WEBPACK_IMPORTED_MODULE_1__.getRadialCursorPoints)(activeCoordinate);\n }\n }\n return [\n {\n x: x1,\n y: y1\n },\n {\n x: x2,\n y: y2\n }\n ];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUQ7QUFDZTtBQUN6RCxTQUFTRSxnQkFBZ0JDLE1BQU0sRUFBRUMsZ0JBQWdCLEVBQUVDLE1BQU07SUFDOUQsSUFBSUMsSUFBSUMsSUFBSUMsSUFBSUM7SUFDaEIsSUFBSU4sV0FBVyxjQUFjO1FBQzNCRyxLQUFLRixpQkFBaUJNLENBQUM7UUFDdkJGLEtBQUtGO1FBQ0xDLEtBQUtGLE9BQU9NLEdBQUc7UUFDZkYsS0FBS0osT0FBT00sR0FBRyxHQUFHTixPQUFPTyxNQUFNO0lBQ2pDLE9BQU8sSUFBSVQsV0FBVyxZQUFZO1FBQ2hDSSxLQUFLSCxpQkFBaUJTLENBQUM7UUFDdkJKLEtBQUtGO1FBQ0xELEtBQUtELE9BQU9TLElBQUk7UUFDaEJOLEtBQUtILE9BQU9TLElBQUksR0FBR1QsT0FBT1UsS0FBSztJQUNqQyxPQUFPLElBQUlYLGlCQUFpQlksRUFBRSxJQUFJLFFBQVFaLGlCQUFpQmEsRUFBRSxJQUFJLE1BQU07UUFDckUsSUFBSWQsV0FBVyxXQUFXO1lBQ3hCLElBQUlhLEtBQUtaLGlCQUFpQlksRUFBRSxFQUMxQkMsS0FBS2IsaUJBQWlCYSxFQUFFLEVBQ3hCQyxjQUFjZCxpQkFBaUJjLFdBQVcsRUFDMUNDLGNBQWNmLGlCQUFpQmUsV0FBVyxFQUMxQ0MsUUFBUWhCLGlCQUFpQmdCLEtBQUs7WUFDaEMsSUFBSUMsYUFBYXJCLDZEQUFnQkEsQ0FBQ2dCLElBQUlDLElBQUlDLGFBQWFFO1lBQ3ZELElBQUlFLGFBQWF0Qiw2REFBZ0JBLENBQUNnQixJQUFJQyxJQUFJRSxhQUFhQztZQUN2RGQsS0FBS2UsV0FBV1gsQ0FBQztZQUNqQkgsS0FBS2MsV0FBV1IsQ0FBQztZQUNqQkwsS0FBS2MsV0FBV1osQ0FBQztZQUNqQkQsS0FBS2EsV0FBV1QsQ0FBQztRQUNuQixPQUFPO1lBQ0wsT0FBT1osNkVBQXFCQSxDQUFDRztRQUMvQjtJQUNGO0lBQ0EsT0FBTztRQUFDO1lBQ05NLEdBQUdKO1lBQ0hPLEdBQUdOO1FBQ0w7UUFBRztZQUNERyxHQUFHRjtZQUNISyxHQUFHSjtRQUNMO0tBQUU7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL3ZlcmlmeXBhY2stZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclBvaW50cy5qcz9kMTVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvbGFyVG9DYXJ0ZXNpYW4gfSBmcm9tICcuLi9Qb2xhclV0aWxzJztcbmltcG9ydCB7IGdldFJhZGlhbEN1cnNvclBvaW50cyB9IGZyb20gJy4vZ2V0UmFkaWFsQ3Vyc29yUG9pbnRzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRDdXJzb3JQb2ludHMobGF5b3V0LCBhY3RpdmVDb29yZGluYXRlLCBvZmZzZXQpIHtcbiAgdmFyIHgxLCB5MSwgeDIsIHkyO1xuICBpZiAobGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICB4MSA9IGFjdGl2ZUNvb3JkaW5hdGUueDtcbiAgICB4MiA9IHgxO1xuICAgIHkxID0gb2Zmc2V0LnRvcDtcbiAgICB5MiA9IG9mZnNldC50b3AgKyBvZmZzZXQuaGVpZ2h0O1xuICB9IGVsc2UgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgIHkxID0gYWN0aXZlQ29vcmRpbmF0ZS55O1xuICAgIHkyID0geTE7XG4gICAgeDEgPSBvZmZzZXQubGVmdDtcbiAgICB4MiA9IG9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoO1xuICB9IGVsc2UgaWYgKGFjdGl2ZUNvb3JkaW5hdGUuY3ggIT0gbnVsbCAmJiBhY3RpdmVDb29yZGluYXRlLmN5ICE9IG51bGwpIHtcbiAgICBpZiAobGF5b3V0ID09PSAnY2VudHJpYycpIHtcbiAgICAgIHZhciBjeCA9IGFjdGl2ZUNvb3JkaW5hdGUuY3gsXG4gICAgICAgIGN5ID0gYWN0aXZlQ29vcmRpbmF0ZS5jeSxcbiAgICAgICAgaW5uZXJSYWRpdXMgPSBhY3RpdmVDb29yZGluYXRlLmlubmVyUmFkaXVzLFxuICAgICAgICBvdXRlclJhZGl1cyA9IGFjdGl2ZUNvb3JkaW5hdGUub3V0ZXJSYWRpdXMsXG4gICAgICAgIGFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5hbmdsZTtcbiAgICAgIHZhciBpbm5lclBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIGlubmVyUmFkaXVzLCBhbmdsZSk7XG4gICAgICB2YXIgb3V0ZXJQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY3gsIGN5LCBvdXRlclJhZGl1cywgYW5nbGUpO1xuICAgICAgeDEgPSBpbm5lclBvaW50Lng7XG4gICAgICB5MSA9IGlubmVyUG9pbnQueTtcbiAgICAgIHgyID0gb3V0ZXJQb2ludC54O1xuICAgICAgeTIgPSBvdXRlclBvaW50Lnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXRSYWRpYWxDdXJzb3JQb2ludHMoYWN0aXZlQ29vcmRpbmF0ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbe1xuICAgIHg6IHgxLFxuICAgIHk6IHkxXG4gIH0sIHtcbiAgICB4OiB4MixcbiAgICB5OiB5MlxuICB9XTtcbn0iXSwibmFtZXMiOlsicG9sYXJUb0NhcnRlc2lhbiIsImdldFJhZGlhbEN1cnNvclBvaW50cyIsImdldEN1cnNvclBvaW50cyIsImxheW91dCIsImFjdGl2ZUNvb3JkaW5hdGUiLCJvZmZzZXQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsIngiLCJ0b3AiLCJoZWlnaHQiLCJ5IiwibGVmdCIsIndpZHRoIiwiY3giLCJjeSIsImlubmVyUmFkaXVzIiwib3V0ZXJSYWRpdXMiLCJhbmdsZSIsImlubmVyUG9pbnQiLCJvdXRlclBvaW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getCursorPoints.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js":
/*!*********************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getCursorRectangle.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCursorRectangle: () => (/* binding */ getCursorRectangle)\n/* harmony export */ });\nfunction getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: \"none\",\n fill: \"#ccc\",\n x: layout === \"horizontal\" ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === \"horizontal\" ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === \"horizontal\" ? tooltipAxisBandSize : offset.width - 1,\n height: layout === \"horizontal\" ? offset.height - 1 : tooltipAxisBandSize\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldEN1cnNvclJlY3RhbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sU0FBU0EsbUJBQW1CQyxNQUFNLEVBQUVDLGdCQUFnQixFQUFFQyxNQUFNLEVBQUVDLG1CQUFtQjtJQUN0RixJQUFJQyxXQUFXRCxzQkFBc0I7SUFDckMsT0FBTztRQUNMRSxRQUFRO1FBQ1JDLE1BQU07UUFDTkMsR0FBR1AsV0FBVyxlQUFlQyxpQkFBaUJNLENBQUMsR0FBR0gsV0FBV0YsT0FBT00sSUFBSSxHQUFHO1FBQzNFQyxHQUFHVCxXQUFXLGVBQWVFLE9BQU9RLEdBQUcsR0FBRyxNQUFNVCxpQkFBaUJRLENBQUMsR0FBR0w7UUFDckVPLE9BQU9YLFdBQVcsZUFBZUcsc0JBQXNCRCxPQUFPUyxLQUFLLEdBQUc7UUFDdEVDLFFBQVFaLFdBQVcsZUFBZUUsT0FBT1UsTUFBTSxHQUFHLElBQUlUO0lBQ3hEO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL2N1cnNvci9nZXRDdXJzb3JSZWN0YW5nbGUuanM/NjZlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2V0Q3Vyc29yUmVjdGFuZ2xlKGxheW91dCwgYWN0aXZlQ29vcmRpbmF0ZSwgb2Zmc2V0LCB0b29sdGlwQXhpc0JhbmRTaXplKSB7XG4gIHZhciBoYWxmU2l6ZSA9IHRvb2x0aXBBeGlzQmFuZFNpemUgLyAyO1xuICByZXR1cm4ge1xuICAgIHN0cm9rZTogJ25vbmUnLFxuICAgIGZpbGw6ICcjY2NjJyxcbiAgICB4OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IGFjdGl2ZUNvb3JkaW5hdGUueCAtIGhhbGZTaXplIDogb2Zmc2V0LmxlZnQgKyAwLjUsXG4gICAgeTogbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcgPyBvZmZzZXQudG9wICsgMC41IDogYWN0aXZlQ29vcmRpbmF0ZS55IC0gaGFsZlNpemUsXG4gICAgd2lkdGg6IGxheW91dCA9PT0gJ2hvcml6b250YWwnID8gdG9vbHRpcEF4aXNCYW5kU2l6ZSA6IG9mZnNldC53aWR0aCAtIDEsXG4gICAgaGVpZ2h0OiBsYXlvdXQgPT09ICdob3Jpem9udGFsJyA/IG9mZnNldC5oZWlnaHQgLSAxIDogdG9vbHRpcEF4aXNCYW5kU2l6ZVxuICB9O1xufSJdLCJuYW1lcyI6WyJnZXRDdXJzb3JSZWN0YW5nbGUiLCJsYXlvdXQiLCJhY3RpdmVDb29yZGluYXRlIiwib2Zmc2V0IiwidG9vbHRpcEF4aXNCYW5kU2l6ZSIsImhhbGZTaXplIiwic3Ryb2tlIiwiZmlsbCIsIngiLCJsZWZ0IiwieSIsInRvcCIsIndpZHRoIiwiaGVpZ2h0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getCursorRectangle.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js":
/*!************************************************************************!*\
!*** ./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getRadialCursorPoints: () => (/* binding */ getRadialCursorPoints)\n/* harmony export */ });\n/* harmony import */ var _PolarUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../PolarUtils */ \"(ssr)/./node_modules/recharts/es6/util/PolarUtils.js\");\n\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */ function getRadialCursorPoints(activeCoordinate) {\n var cx = activeCoordinate.cx, cy = activeCoordinate.cy, radius = activeCoordinate.radius, startAngle = activeCoordinate.startAngle, endAngle = activeCoordinate.endAngle;\n var startPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, radius, startAngle);\n var endPoint = (0,_PolarUtils__WEBPACK_IMPORTED_MODULE_0__.polarToCartesian)(cx, cy, radius, endAngle);\n return {\n points: [\n startPoint,\n endPoint\n ],\n cx: cx,\n cy: cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvY3Vyc29yL2dldFJhZGlhbEN1cnNvclBvaW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFpRDtBQUNqRDs7OztDQUlDLEdBQ00sU0FBU0Msc0JBQXNCQyxnQkFBZ0I7SUFDcEQsSUFBSUMsS0FBS0QsaUJBQWlCQyxFQUFFLEVBQzFCQyxLQUFLRixpQkFBaUJFLEVBQUUsRUFDeEJDLFNBQVNILGlCQUFpQkcsTUFBTSxFQUNoQ0MsYUFBYUosaUJBQWlCSSxVQUFVLEVBQ3hDQyxXQUFXTCxpQkFBaUJLLFFBQVE7SUFDdEMsSUFBSUMsYUFBYVIsNkRBQWdCQSxDQUFDRyxJQUFJQyxJQUFJQyxRQUFRQztJQUNsRCxJQUFJRyxXQUFXVCw2REFBZ0JBLENBQUNHLElBQUlDLElBQUlDLFFBQVFFO0lBQ2hELE9BQU87UUFDTEcsUUFBUTtZQUFDRjtZQUFZQztTQUFTO1FBQzlCTixJQUFJQTtRQUNKQyxJQUFJQTtRQUNKQyxRQUFRQTtRQUNSQyxZQUFZQTtRQUNaQyxVQUFVQTtJQUNaO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL2N1cnNvci9nZXRSYWRpYWxDdXJzb3JQb2ludHMuanM/MjEzMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2xhclRvQ2FydGVzaWFuIH0gZnJvbSAnLi4vUG9sYXJVdGlscyc7XG4vKipcbiAqIE9ubHkgYXBwbGljYWJsZSBmb3IgcmFkaWFsIGxheW91dHNcbiAqIEBwYXJhbSB7T2JqZWN0fSBhY3RpdmVDb29yZGluYXRlIENoYXJ0Q29vcmRpbmF0ZVxuICogQHJldHVybnMge09iamVjdH0gUmFkaWFsQ3Vyc29yUG9pbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSYWRpYWxDdXJzb3JQb2ludHMoYWN0aXZlQ29vcmRpbmF0ZSkge1xuICB2YXIgY3ggPSBhY3RpdmVDb29yZGluYXRlLmN4LFxuICAgIGN5ID0gYWN0aXZlQ29vcmRpbmF0ZS5jeSxcbiAgICByYWRpdXMgPSBhY3RpdmVDb29yZGluYXRlLnJhZGl1cyxcbiAgICBzdGFydEFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5zdGFydEFuZ2xlLFxuICAgIGVuZEFuZ2xlID0gYWN0aXZlQ29vcmRpbmF0ZS5lbmRBbmdsZTtcbiAgdmFyIHN0YXJ0UG9pbnQgPSBwb2xhclRvQ2FydGVzaWFuKGN4LCBjeSwgcmFkaXVzLCBzdGFydEFuZ2xlKTtcbiAgdmFyIGVuZFBvaW50ID0gcG9sYXJUb0NhcnRlc2lhbihjeCwgY3ksIHJhZGl1cywgZW5kQW5nbGUpO1xuICByZXR1cm4ge1xuICAgIHBvaW50czogW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSxcbiAgICBjeDogY3gsXG4gICAgY3k6IGN5LFxuICAgIHJhZGl1czogcmFkaXVzLFxuICAgIHN0YXJ0QW5nbGU6IHN0YXJ0QW5nbGUsXG4gICAgZW5kQW5nbGU6IGVuZEFuZ2xlXG4gIH07XG59Il0sIm5hbWVzIjpbInBvbGFyVG9DYXJ0ZXNpYW4iLCJnZXRSYWRpYWxDdXJzb3JQb2ludHMiLCJhY3RpdmVDb29yZGluYXRlIiwiY3giLCJjeSIsInJhZGl1cyIsInN0YXJ0QW5nbGUiLCJlbmRBbmdsZSIsInN0YXJ0UG9pbnQiLCJlbmRQb2ludCIsInBvaW50cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js":
/*!********************************************************************!*\
!*** ./node_modules/recharts/es6/util/getEveryNthWithCondition.js ***!
\********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getEveryNthWithCondition: () => (/* binding */ getEveryNthWithCondition)\n/* harmony export */ });\n/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */ function getEveryNthWithCondition(array, n, isValid) {\n if (n < 1) {\n return [];\n }\n if (n === 1 && isValid === undefined) {\n return array;\n }\n var result = [];\n for(var i = 0; i < array.length; i += n){\n if (isValid === undefined || isValid(array[i]) === true) {\n result.push(array[i]);\n } else {\n return undefined;\n }\n }\n return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Q0FRQyxHQUNNLFNBQVNBLHlCQUF5QkMsS0FBSyxFQUFFQyxDQUFDLEVBQUVDLE9BQU87SUFDeEQsSUFBSUQsSUFBSSxHQUFHO1FBQ1QsT0FBTyxFQUFFO0lBQ1g7SUFDQSxJQUFJQSxNQUFNLEtBQUtDLFlBQVlDLFdBQVc7UUFDcEMsT0FBT0g7SUFDVDtJQUNBLElBQUlJLFNBQVMsRUFBRTtJQUNmLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJTCxNQUFNTSxNQUFNLEVBQUVELEtBQUtKLEVBQUc7UUFDeEMsSUFBSUMsWUFBWUMsYUFBYUQsUUFBUUYsS0FBSyxDQUFDSyxFQUFFLE1BQU0sTUFBTTtZQUN2REQsT0FBT0csSUFBSSxDQUFDUCxLQUFLLENBQUNLLEVBQUU7UUFDdEIsT0FBTztZQUNMLE9BQU9GO1FBQ1Q7SUFDRjtJQUNBLE9BQU9DO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL2dldEV2ZXJ5TnRoV2l0aENvbmRpdGlvbi5qcz85MjE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgYW5kIGEgbnVtYmVyIE4sIHJldHVybiBhIG5ldyBhcnJheSB3aGljaCBjb250YWlucyBldmVyeSBuVGhcbiAqIGVsZW1lbnQgb2YgdGhlIGlucHV0IGFycmF5LiBGb3IgbiBiZWxvdyAxLCBhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC5cbiAqIElmIGlzVmFsaWQgaXMgcHJvdmlkZWQsIGFsbCBjYW5kaWRhdGVzIG11c3Qgc3VmZmljZSB0aGUgY29uZGl0aW9uLCBlbHNlIHVuZGVmaW5lZCBpcyByZXR1cm5lZC5cbiAqIEBwYXJhbSB7VFtdfSBhcnJheSBBbiBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7aW50ZWdlcn0gbiBBIG51bWJlclxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXNWYWxpZCBBIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGEgY2FuZGlkYXRlIGZvcm0gdGhlIGFycmF5XG4gKiBAcmV0dXJucyB7VFtdfSBUaGUgcmVzdWx0IGFycmF5IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGlucHV0IGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlcnlOdGhXaXRoQ29uZGl0aW9uKGFycmF5LCBuLCBpc1ZhbGlkKSB7XG4gIGlmIChuIDwgMSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAobiA9PT0gMSAmJiBpc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSBuKSB7XG4gICAgaWYgKGlzVmFsaWQgPT09IHVuZGVmaW5lZCB8fCBpc1ZhbGlkKGFycmF5W2ldKSA9PT0gdHJ1ZSkge1xuICAgICAgcmVzdWx0LnB1c2goYXJyYXlbaV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSJdLCJuYW1lcyI6WyJnZXRFdmVyeU50aFdpdGhDb25kaXRpb24iLCJhcnJheSIsIm4iLCJpc1ZhbGlkIiwidW5kZWZpbmVkIiwicmVzdWx0IiwiaSIsImxlbmd0aCIsInB1c2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/getEveryNthWithCondition.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/getLegendProps.js":
/*!**********************************************************!*\
!*** ./node_modules/recharts/es6/util/getLegendProps.js ***!
\**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getLegendProps: () => (/* binding */ getLegendProps)\n/* harmony export */ });\n/* harmony import */ var _component_Legend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../component/Legend */ \"(ssr)/./node_modules/recharts/es6/component/Legend.js\");\n/* harmony import */ var _ChartUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ChartUtils */ \"(ssr)/./node_modules/recharts/es6/util/ChartUtils.js\");\n/* harmony import */ var _ReactUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ReactUtils */ \"(ssr)/./node_modules/recharts/es6/util/ReactUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\n\nvar getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children, formattedGraphicalItems = _ref.formattedGraphicalItems, legendWidth = _ref.legendWidth, legendContent = _ref.legendContent;\n var legendItem = (0,_ReactUtils__WEBPACK_IMPORTED_MODULE_0__.findChildByType)(children, _component_Legend__WEBPACK_IMPORTED_MODULE_1__.Legend);\n if (!legendItem) {\n return null;\n }\n var legendData;\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === \"children\") {\n legendData = (formattedGraphicalItems || []).reduce(function(result, _ref2) {\n var item = _ref2.item, props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function(entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formattedGraphicalItems || []).map(function(_ref3) {\n var item = _ref3.item;\n var _item$props = item.props, dataKey = _item$props.dataKey, name = _item$props.name, legendType = _item$props.legendType, hide = _item$props.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || \"square\",\n color: (0,_ChartUtils__WEBPACK_IMPORTED_MODULE_2__.getMainColorOfGraphicItem)(item),\n value: name || dataKey,\n // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n payload: item.props\n };\n });\n }\n return _objectSpread(_objectSpread(_objectSpread({}, legendItem.props), _component_Legend__WEBPACK_IMPORTED_MODULE_1__.Legend.getWithHeight(legendItem, legendWidth)), {}, {\n payload: legendData,\n item: legendItem\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvZ2V0TGVnZW5kUHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFBSTtJQUEyQixPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQUksT0FBTyxPQUFPQTtJQUFHLElBQUksU0FBVUEsQ0FBQztRQUFJLE9BQU9BLEtBQUssY0FBYyxPQUFPQyxVQUFVRCxFQUFFRyxXQUFXLEtBQUtGLFVBQVVELE1BQU1DLE9BQU9HLFNBQVMsR0FBRyxXQUFXLE9BQU9KO0lBQUcsR0FBR0QsUUFBUUM7QUFBSTtBQUM3VCxTQUFTSyxRQUFRQyxDQUFDLEVBQUVDLENBQUM7SUFBSSxJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQUksSUFBSUcsT0FBT0UscUJBQXFCLEVBQUU7UUFBRSxJQUFJWCxJQUFJUyxPQUFPRSxxQkFBcUIsQ0FBQ0w7UUFBSUMsS0FBTVAsQ0FBQUEsSUFBSUEsRUFBRVksTUFBTSxDQUFDLFNBQVVMLENBQUM7WUFBSSxPQUFPRSxPQUFPSSx3QkFBd0IsQ0FBQ1AsR0FBR0MsR0FBR08sVUFBVTtRQUFFLEVBQUMsR0FBSU4sRUFBRU8sSUFBSSxDQUFDQyxLQUFLLENBQUNSLEdBQUdSO0lBQUk7SUFBRSxPQUFPUTtBQUFHO0FBQzlQLFNBQVNTLGNBQWNYLENBQUM7SUFBSSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVcsVUFBVUMsTUFBTSxFQUFFWixJQUFLO1FBQUUsSUFBSUMsSUFBSSxRQUFRVSxTQUFTLENBQUNYLEVBQUUsR0FBR1csU0FBUyxDQUFDWCxFQUFFLEdBQUcsQ0FBQztRQUFHQSxJQUFJLElBQUlGLFFBQVFJLE9BQU9ELElBQUksQ0FBQyxHQUFHWSxPQUFPLENBQUMsU0FBVWIsQ0FBQztZQUFJYyxnQkFBZ0JmLEdBQUdDLEdBQUdDLENBQUMsQ0FBQ0QsRUFB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T0ksWUFBWUosSUFBSSxFQUN2QkQsYUFBYUssWUFBWUwsVUFBVSxFQUNuQ08sT0FBT0YsWUFBWUUsSUFBSTtZQUN6QixPQUFPO2dCQUNMQyxVQUFVRDtnQkFDVkQsU0FBU0E7Z0JBQ1RSLE1BQU1iLFdBQVdFLEtBQUssQ0FBQ1ksUUFBUSxJQUFJQyxjQUFjO2dCQUNqREUsT0FBT3pCLHNFQUF5QkEsQ0FBQ2U7Z0JBQ2pDM0IsT0FBT29DLFFBQVFLO2dCQUNmLHlGQUF5RjtnQkFDekZsQixTQUFTSSxLQUFLTCxLQUFLO1lBQ3JCO1FBQ0Y7SUFDRjtJQUNBLE9BQU9oQyxjQUFjQSxjQUFjQSxjQUFjLENBQUMsR0FBRzhCLFdBQVdFLEtBQUssR0FBR1gscURBQU1BLENBQUNpQyxhQUFhLENBQUN4QixZQUFZRixlQUFlLENBQUMsR0FBRztRQUMxSEssU0FBU0Y7UUFDVE0sTUFBTVA7SUFDUjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL2dldExlZ2VuZFByb3BzLmpzP2E3NjYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykgeyByZXR1cm4gdHlwZW9mIG87IH0gOiBmdW5jdGlvbiAobykgeyByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbzsgfSwgX3R5cGVvZihvKTsgfVxuZnVuY3Rpb24gb3duS2V5cyhlLCByKSB7IHZhciB0ID0gT2JqZWN0LmtleXMoZSk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTsgciAmJiAobyA9IG8uZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7IH0pKSwgdC5wdXNoLmFwcGx5KHQsIG8pOyB9IHJldHVybiB0OyB9XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKGUpIHsgZm9yICh2YXIgciA9IDE7IHIgPCBhcmd1bWVudHMubGVuZ3RoOyByKyspIHsgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9OyByICUgMiA/IG93bktleXMoT2JqZWN0KHQpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBfZGVmaW5lUHJvcGVydHkoZSwgciwgdFtyXSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSkgOiBvd25LZXlzKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbiAocikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgciwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCByKSk7IH0pOyB9IHJldHVybiBlOyB9XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGtleSA9IF90b1Byb3BlcnR5S2V5KGtleSk7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuZnVuY3Rpb24gX3RvUHJvcGVydHlLZXkodCkgeyB2YXIgaSA9IF90b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTsgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBTdHJpbmcoaSk7IH1cbmZ1bmN0aW9uIF90b1ByaW1pdGl2ZSh0LCByKSB7IGlmIChcIm9iamVjdFwiICE9IF90eXBlb2YodCkgfHwgIXQpIHJldHVybiB0OyB2YXIgZSA9IHRbU3ltYm9sLnRvUHJpbWl0aXZlXTsgaWYgKHZvaWQgMCAhPT0gZSkgeyB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlwiKTsgfSByZXR1cm4gKFwic3RyaW5nXCIgPT09IHIgPyBTdHJpbmcgOiBOdW1iZXIpKHQpOyB9XG5pbXBvcnQgeyBMZWdlbmQgfSBmcm9tICcuLi9jb21wb25lbnQvTGVnZW5kJztcbmltcG9ydCB7IGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0gfSBmcm9tICcuL0NoYXJ0VXRpbHMnO1xuaW1wb3J0IHsgZmluZENoaWxkQnlUeXBlIH0gZnJvbSAnLi9SZWFjdFV0aWxzJztcbmV4cG9ydCB2YXIgZ2V0TGVnZW5kUHJvcHMgPSBmdW5jdGlvbiBnZXRMZWdlbmRQcm9wcyhfcmVmKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYuY2hpbGRyZW4sXG4gICAgZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgPSBfcmVmLmZvcm1hdHRlZEdyYXBoaWNhbEl0ZW1zLFxuICAgIGxlZ2VuZFdpZHRoID0gX3JlZi5sZWdlbmRXaWR0aCxcbiAgICBsZWdlbmRDb250ZW50ID0gX3JlZi5sZWdlbmRDb250ZW50O1xuICB2YXIgbGVnZW5kSXRlbSA9IGZpbmRDaGlsZEJ5VHlwZShjaGlsZHJlbiwgTGVnZW5kKTtcbiAgaWYgKCFsZWdlbmRJdGVtKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIGxlZ2VuZERhdGE7XG4gIGlmIChsZWdlbmRJdGVtLnByb3BzICYmIGxlZ2VuZEl0ZW0ucHJvcHMucGF5bG9hZCkge1xuICAgIGxlZ2VuZERhdGEgPSBsZWdlbmRJdGVtLnByb3BzICYmIGxlZ2VuZEl0ZW0ucHJvcHMucGF5bG9hZDtcbiAgfSBlbHNlIGlmIChsZWdlbmRDb250ZW50ID09PSAnY2hpbGRyZW4nKSB7XG4gICAgbGVnZW5kRGF0YSA9IChmb3JtYXR0ZWRHcmFwaGljYWxJdGVtcyB8fCBbXSkucmVkdWNlKGZ1bmN0aW9uIChyZXN1bHQsIF9yZWYyKSB7XG4gICAgICB2YXIgaXRlbSA9IF9yZWYyLml0ZW0sXG4gICAgICAgIHByb3BzID0gX3JlZjIucHJvcHM7XG4gICAgICB2YXIgZGF0YSA9IHByb3BzLnNlY3RvcnMgfHwgcHJvcHMuZGF0YSB8fCBbXTtcbiAgICAgIHJldHVybiByZXN1bHQuY29uY2F0KGRhdGEubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IGxlZ2VuZEl0ZW0ucHJvcHMuaWNvblR5cGUgfHwgaXRlbS5wcm9wcy5sZWdlbmRUeXBlLFxuICAgICAgICAgIHZhbHVlOiBlbnRyeS5uYW1lLFxuICAgICAgICAgIGNvbG9yOiBlbnRyeS5maWxsLFxuICAgICAgICAgIHBheWxvYWQ6IGVudHJ5XG4gICAgICAgIH07XG4gICAgICB9KSk7XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIGxlZ2VuZERhdGEgPSAoZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMgfHwgW10pLm1hcChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgIHZhciBpdGVtID0gX3JlZjMuaXRlbTtcbiAgICAgIHZhciBfaXRlbSRwcm9wcyA9IGl0ZW0ucHJvcHMsXG4gICAgICAgIGRhdGFLZXkgPSBfaXRlbSRwcm9wcy5kYXRhS2V5LFxuICAgICAgICBuYW1lID0gX2l0ZW0kcHJvcHMubmFtZSxcbiAgICAgICAgbGVnZW5kVHlwZSA9IF9pdGVtJHByb3BzLmxlZ2VuZFR5cGUsXG4gICAgICAgIGhpZGUgPSBfaXRlbSRwcm9wcy5oaWRlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5hY3RpdmU6IGhpZGUsXG4gICAgICAgIGRhdGFLZXk6IGRhdGFLZXksXG4gICAgICAgIHR5cGU6IGxlZ2VuZEl0ZW0ucHJvcHMuaWNvblR5cGUgfHwgbGVnZW5kVHlwZSB8fCAnc3F1YXJlJyxcbiAgICAgICAgY29sb3I6IGdldE1haW5Db2xvck9mR3JhcGhpY0l0ZW0oaXRlbSksXG4gICAgICAgIHZhbHVlOiBuYW1lIHx8IGRhdGFLZXksXG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgcHJvcGVydHkgc3Ryb2tlRGFzaGFycmF5IGlzIHJlcXVpcmVkIGluIFBheWxvYWQgYnV0IG9wdGlvbmFsIGluIHByb3BzXG4gICAgICAgIHBheWxvYWQ6IGl0ZW0ucHJvcHNcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBsZWdlbmRJdGVtLnByb3BzKSwgTGVnZW5kLmdldFdpdGhIZWlnaHQobGVnZW5kSXRlbSwgbGVnZW5kV2lkdGgpKSwge30sIHtcbiAgICBwYXlsb2FkOiBsZWdlbmREYXRhLFxuICAgIGl0ZW06IGxlZ2VuZEl0ZW1cbiAgfSk7XG59OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJ2YWx1ZSIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiTnVtYmVyIiwiTGVnZW5kIiwiZ2V0TWFpbkNvbG9yT2ZHcmFwaGljSXRlbSIsImZpbmRDaGlsZEJ5VHlwZSIsImdldExlZ2VuZFByb3BzIiwiX3JlZiIsImNoaWxkcmVuIiwiZm9ybWF0dGVkR3JhcGhpY2FsSXRlbXMiLCJsZWdlbmRXaWR0aCIsImxlZ2VuZENvbnRlbnQiLCJsZWdlbmRJdGVtIiwibGVnZW5kRGF0YSIsInByb3BzIiwicGF5bG9hZCIsInJlZHVjZSIsInJlc3VsdCIsIl9yZWYyIiwiaXRlbSIsImRhdGEiLCJzZWN0b3JzIiwiY29uY2F0IiwibWFwIiwiZW50cnkiLCJ0eXBlIiwiaWNvblR5cGUiLCJsZWdlbmRUeXBlIiwibmFtZSIsImNvbG9yIiwiZmlsbCIsIl9yZWYzIiwiX2l0ZW0kcHJvcHMiLCJkYXRhS2V5IiwiaGlkZSIsImluYWN0aXZlIiwiZ2V0V2l0aEhlaWdodCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/getLegendProps.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js":
/*!*******************************************************************!*\
!*** ./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isDomainSpecifiedByUser: () => (/* binding */ isDomainSpecifiedByUser)\n/* harmony export */ });\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\n\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param {AxisDomain} domain The potential domain from props\n * @param {Boolean} allowDataOverflow from props\n * @param {String} axisType from props\n * @returns {Boolean} `true` if domain is specified by user\n */ function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n if (axisType === \"number\" && allowDataOverflow === true && Array.isArray(domain)) {\n var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n /*\n * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n * In such case, we have to compute the domain from the data.\n */ if (!!domainStart && !!domainEnd && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_0__.isNumber)(domainStart) && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_0__.isNumber)(domainEnd)) {\n return true;\n }\n }\n return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvaXNEb21haW5TcGVjaWZpZWRCeVVzZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7QUFDdkM7Ozs7OztDQU1DLEdBQ00sU0FBU0Msd0JBQXdCQyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRO0lBQ3pFLElBQUlBLGFBQWEsWUFBWUQsc0JBQXNCLFFBQVFFLE1BQU1DLE9BQU8sQ0FBQ0osU0FBUztRQUNoRixJQUFJSyxjQUFjTCxXQUFXLFFBQVFBLFdBQVcsS0FBSyxJQUFJLEtBQUssSUFBSUEsTUFBTSxDQUFDLEVBQUU7UUFDM0UsSUFBSU0sWUFBWU4sV0FBVyxRQUFRQSxXQUFXLEtBQUssSUFBSSxLQUFLLElBQUlBLE1BQU0sQ0FBQyxFQUFFO1FBRXpFOzs7S0FHQyxHQUNELElBQUksQ0FBQyxDQUFDSyxlQUFlLENBQUMsQ0FBQ0MsYUFBYVIsb0RBQVFBLENBQUNPLGdCQUFnQlAsb0RBQVFBLENBQUNRLFlBQVk7WUFDaEYsT0FBTztRQUNUO0lBQ0Y7SUFDQSxPQUFPO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly92ZXJpZnlwYWNrLWZyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlY2hhcnRzL2VzNi91dGlsL2lzRG9tYWluU3BlY2lmaWVkQnlVc2VyLmpzPzY3ZmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuL0RhdGFVdGlscyc7XG4vKipcbiAqIFRha2VzIGEgZG9tYWluIGFuZCB1c2VyIHByb3BzIHRvIGRldGVybWluZSB3aGV0aGVyIGhlIHByb3ZpZGVkIHRoZSBkb21haW4gdmlhIHByb3BzIG9yIGlmIHdlIG5lZWQgdG8gY2FsY3VsYXRlIGl0LlxuICogQHBhcmFtICAge0F4aXNEb21haW59ICBkb21haW4gICAgICAgICAgICAgIFRoZSBwb3RlbnRpYWwgZG9tYWluIGZyb20gcHJvcHNcbiAqIEBwYXJhbSAgIHtCb29sZWFufSAgICAgYWxsb3dEYXRhT3ZlcmZsb3cgICBmcm9tIHByb3BzXG4gKiBAcGFyYW0gICB7U3RyaW5nfSAgICAgIGF4aXNUeXBlICAgICAgICAgICAgZnJvbSBwcm9wc1xuICogQHJldHVybnMge0Jvb2xlYW59ICAgICAgICAgICAgICAgICAgICAgICAgIGB0cnVlYCBpZiBkb21haW4gaXMgc3BlY2lmaWVkIGJ5IHVzZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3BlY2lmaWVkQnlVc2VyKGRvbWFpbiwgYWxsb3dEYXRhT3ZlcmZsb3csIGF4aXNUeXBlKSB7XG4gIGlmIChheGlzVHlwZSA9PT0gJ251bWJlcicgJiYgYWxsb3dEYXRhT3ZlcmZsb3cgPT09IHRydWUgJiYgQXJyYXkuaXNBcnJheShkb21haW4pKSB7XG4gICAgdmFyIGRvbWFpblN0YXJ0ID0gZG9tYWluID09PSBudWxsIHx8IGRvbWFpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG9tYWluWzBdO1xuICAgIHZhciBkb21haW5FbmQgPSBkb21haW4gPT09IG51bGwgfHwgZG9tYWluID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkb21haW5bMV07XG5cbiAgICAvKlxuICAgICAqIFRoZSBgaXNOdW1iZXJgIGNoZWNrIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB1c2VyIGNvdWxkIGFsc28gcHJvdmlkZSBzdHJpbmdzIGxpa2UgXCJkYXRhTWluXCIgdmlhIHRoZSBkb21haW4gcHJvcHMuXG4gICAgICogSW4gc3VjaCBjYXNlLCB3ZSBoYXZlIHRvIGNvbXB1dGUgdGhlIGRvbWFpbiBmcm9tIHRoZSBkYXRhLlxuICAgICAqL1xuICAgIGlmICghIWRvbWFpblN0YXJ0ICYmICEhZG9tYWluRW5kICYmIGlzTnVtYmVyKGRvbWFpblN0YXJ0KSAmJiBpc051bWJlcihkb21haW5FbmQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSJdLCJuYW1lcyI6WyJpc051bWJlciIsImlzRG9tYWluU3BlY2lmaWVkQnlVc2VyIiwiZG9tYWluIiwiYWxsb3dEYXRhT3ZlcmZsb3ciLCJheGlzVHlwZSIsIkFycmF5IiwiaXNBcnJheSIsImRvbWFpblN0YXJ0IiwiZG9tYWluRW5kIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/isDomainSpecifiedByUser.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js":
/*!******************************************************************!*\
!*** ./node_modules/recharts/es6/util/payload/getUniqPayload.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getUniqPayload: () => (/* binding */ getUniqPayload)\n/* harmony export */ });\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/uniqBy */ \"(ssr)/./node_modules/lodash/uniqBy.js\");\n/* harmony import */ var lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isFunction */ \"(ssr)/./node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */ function getUniqPayload(payload, option, defaultUniqBy) {\n if (option === true) {\n return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(payload, defaultUniqBy);\n }\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_1___default()(option)) {\n return lodash_uniqBy__WEBPACK_IMPORTED_MODULE_0___default()(payload, option);\n }\n return payload;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvcGF5bG9hZC9nZXRVbmlxUGF5bG9hZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFtQztBQUNRO0FBRTNDOzs7Ozs7Q0FNQyxHQUVNLFNBQVNFLGVBQWVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxhQUFhO0lBQzNELElBQUlELFdBQVcsTUFBTTtRQUNuQixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0U7SUFDekI7SUFDQSxJQUFJSix3REFBVUEsQ0FBQ0csU0FBUztRQUN0QixPQUFPSixvREFBTUEsQ0FBQ0csU0FBU0M7SUFDekI7SUFDQSxPQUFPRDtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC9wYXlsb2FkL2dldFVuaXFQYXlsb2FkLmpzP2U2MTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcbmltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJ2xvZGFzaC9pc0Z1bmN0aW9uJztcblxuLyoqXG4gKiBUaGlzIGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgZGVjaWRlcyBob3cgdG8gZmlsdGVyIGZvciB1bmlxdWUgdmFsdWVzIG9ubHk6XG4gKlxuICogLSBgZmFsc2VgIG1lYW5zIFwibm8gZmlsdGVyXCJcbiAqIC0gYHRydWVgIG1lYW5zIFwidXNlIHJlY2hhcnRzIGRlZmF1bHQgZmlsdGVyXCJcbiAqIC0gZnVuY3Rpb24gbWVhbnMgXCJ1c2UgcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGRlZmF1bHQga2V5XCJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5pcVBheWxvYWQocGF5bG9hZCwgb3B0aW9uLCBkZWZhdWx0VW5pcUJ5KSB7XG4gIGlmIChvcHRpb24gPT09IHRydWUpIHtcbiAgICByZXR1cm4gdW5pcUJ5KHBheWxvYWQsIGRlZmF1bHRVbmlxQnkpO1xuICB9XG4gIGlmIChpc0Z1bmN0aW9uKG9wdGlvbikpIHtcbiAgICByZXR1cm4gdW5pcUJ5KHBheWxvYWQsIG9wdGlvbik7XG4gIH1cbiAgcmV0dXJuIHBheWxvYWQ7XG59Il0sIm5hbWVzIjpbInVuaXFCeSIsImlzRnVuY3Rpb24iLCJnZXRVbmlxUGF5bG9hZCIsInBheWxvYWQiLCJvcHRpb24iLCJkZWZhdWx0VW5pcUJ5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/payload/getUniqPayload.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js":
/*!*************************************************************!*\
!*** ./node_modules/recharts/es6/util/tooltip/translate.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getTooltipCSSClassName: () => (/* binding */ getTooltipCSSClassName),\n/* harmony export */ getTooltipTranslate: () => (/* binding */ getTooltipTranslate),\n/* harmony export */ getTooltipTranslateXY: () => (/* binding */ getTooltipTranslateXY),\n/* harmony export */ getTransformStyle: () => (/* binding */ getTransformStyle)\n/* harmony export */ });\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n/* harmony import */ var _DataUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../DataUtils */ \"(ssr)/./node_modules/recharts/es6/util/DataUtils.js\");\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n\nvar CSS_CLASS_PREFIX = \"recharts-tooltip-wrapper\";\nvar TOOLTIP_HIDDEN = {\n visibility: \"hidden\"\n};\nfunction getTooltipCSSClassName(_ref) {\n var coordinate = _ref.coordinate, translateX = _ref.translateX, translateY = _ref.translateY;\n return (0,clsx__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateX) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateX) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateY) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(translateY) && coordinate && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(coordinate.y) && translateY < coordinate.y));\n}\nfunction getTooltipTranslateXY(_ref2) {\n var allowEscapeViewBox = _ref2.allowEscapeViewBox, coordinate = _ref2.coordinate, key = _ref2.key, offsetTopLeft = _ref2.offsetTopLeft, position = _ref2.position, reverseDirection = _ref2.reverseDirection, tooltipDimension = _ref2.tooltipDimension, viewBox = _ref2.viewBox, viewBoxDimension = _ref2.viewBoxDimension;\n if (position && (0,_DataUtils__WEBPACK_IMPORTED_MODULE_1__.isNumber)(position[key])) {\n return position[key];\n }\n var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n var positive = coordinate[key] + offsetTopLeft;\n if (allowEscapeViewBox[key]) {\n return reverseDirection[key] ? negative : positive;\n }\n if (reverseDirection[key]) {\n var _tooltipBoundary = negative;\n var _viewBoxBoundary = viewBox[key];\n if (_tooltipBoundary < _viewBoxBoundary) {\n return Math.max(positive, viewBox[key]);\n }\n return Math.max(negative, viewBox[key]);\n }\n var tooltipBoundary = positive + tooltipDimension;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(negative, viewBox[key]);\n }\n return Math.max(positive, viewBox[key]);\n}\nfunction getTransformStyle(_ref3) {\n var translateX = _ref3.translateX, translateY = _ref3.translateY, useTranslate3d = _ref3.useTranslate3d;\n return {\n transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n };\n}\nfunction getTooltipTranslate(_ref4) {\n var allowEscapeViewBox = _ref4.allowEscapeViewBox, coordinate = _ref4.coordinate, offsetTopLeft = _ref4.offsetTopLeft, position = _ref4.position, reverseDirection = _ref4.reverseDirection, tooltipBox = _ref4.tooltipBox, useTranslate3d = _ref4.useTranslate3d, viewBox = _ref4.viewBox;\n var cssProperties, translateX, translateY;\n if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n translateX = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: \"x\",\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.width,\n viewBox: viewBox,\n viewBoxDimension: viewBox.width\n });\n translateY = getTooltipTranslateXY({\n allowEscapeViewBox: allowEscapeViewBox,\n coordinate: coordinate,\n key: \"y\",\n offsetTopLeft: offsetTopLeft,\n position: position,\n reverseDirection: reverseDirection,\n tooltipDimension: tooltipBox.height,\n viewBox: viewBox,\n viewBoxDimension: viewBox.height\n });\n cssProperties = getTransformStyle({\n translateX: translateX,\n translateY: translateY,\n useTranslate3d: useTranslate3d\n });\n } else {\n cssProperties = TOOLTIP_HIDDEN;\n }\n return {\n cssProperties: cssProperties,\n cssClasses: getTooltipCSSClassName({\n translateX: translateX,\n translateY: translateY,\n coordinate: coordinate\n })\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdG9vbHRpcC90cmFuc2xhdGUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQzdULFNBQVNLLGdCQUFnQkMsR0FBRyxFQUFFQyxHQUFHLEVBQUVDLEtBQUs7SUFBSUQsTUFBTUUsZUFBZUY7SUFBTSxJQUFJQSxPQUFPRCxLQUFLO1FBQUVJLE9BQU9DLGNBQWMsQ0FBQ0wsS0FBS0MsS0FBSztZQUFFQyxPQUFPQTtZQUFPSSxZQUFZO1lBQU1DLGNBQWM7WUFBTUMsVUFBVTtRQUFLO0lBQUksT0FBTztRQUFFUixHQUFHLENBQUNDLElBQUksR0FBR0M7SUFBTztJQUFFLE9BQU9GO0FBQUs7QUFDM08sU0FBU0csZUFBZU0sQ0FBQztJQUFJLElBQUlDLElBQUlDLGFBQWFGLEdBQUc7SUFBVyxPQUFPLFlBQVloQixRQUFRaUIsS0FBS0EsSUFBSUUsT0FBT0Y7QUFBSTtBQUMvRyxTQUFTQyxhQUFhRixDQUFDLEVBQUVJLENBQUM7SUFBSSxJQUFJLFlBQVlwQixRQUFRZ0IsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQUcsSUFBSUssSUFBSUwsQ0FBQyxDQUFDZCxPQUFPb0IsV0FBVyxDQUFDO0lBQUUsSUFBSSxLQUFLLE1BQU1ELEdBQUc7UUFBRSxJQUFJSixJQUFJSSxFQUFFRSxJQUFJLENBQUNQLEdBQUdJLEtBQUs7UUFBWSxJQUFJLFlBQVlwQixRQUFRaUIsSUFB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QVlBO1lBQ1pDLFlBQVlBO1lBQ1p1QixnQkFBZ0JBO1FBQ2xCO0lBQ0YsT0FBTztRQUNMSyxnQkFBZ0JsQztJQUNsQjtJQUNBLE9BQU87UUFDTGtDLGVBQWVBO1FBQ2ZHLFlBQVluQyx1QkFBdUI7WUFDakNHLFlBQVlBO1lBQ1pDLFlBQVlBO1lBQ1pGLFlBQVlBO1FBQ2Q7SUFDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC90b29sdGlwL3RyYW5zbGF0ZS5qcz84ZThkIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleSh0KSB7IHZhciBpID0gX3RvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpOyByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IFN0cmluZyhpKTsgfVxuZnVuY3Rpb24gX3RvUHJpbWl0aXZlKHQsIHIpIHsgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7IHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdOyBpZiAodm9pZCAwICE9PSBlKSB7IHZhciBpID0gZS5jYWxsKHQsIHIgfHwgXCJkZWZhdWx0XCIpOyBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpOyB9IHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7IH1cbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi9EYXRhVXRpbHMnO1xudmFyIENTU19DTEFTU19QUkVGSVggPSAncmVjaGFydHMtdG9vbHRpcC13cmFwcGVyJztcbnZhciBUT09MVElQX0hJRERFTiA9IHtcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbn07XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcENTU0NsYXNzTmFtZShfcmVmKSB7XG4gIHZhciBjb29yZGluYXRlID0gX3JlZi5jb29yZGluYXRlLFxuICAgIHRyYW5zbGF0ZVggPSBfcmVmLnRyYW5zbGF0ZVgsXG4gICAgdHJhbnNsYXRlWSA9IF9yZWYudHJhbnNsYXRlWTtcbiAgcmV0dXJuIGNsc3goQ1NTX0NMQVNTX1BSRUZJWCwgX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eShfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChDU1NfQ0xBU1NfUFJFRklYLCBcIi1yaWdodFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWCkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLngpICYmIHRyYW5zbGF0ZVggPj0gY29vcmRpbmF0ZS54KSwgXCJcIi5jb25jYXQoQ1NTX0NMQVNTX1BSRUZJWCwgXCItbGVmdFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWCkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLngpICYmIHRyYW5zbGF0ZVggPCBjb29yZGluYXRlLngpLCBcIlwiLmNvbmNhdChDU1NfQ0xBU1NfUFJFRklYLCBcIi1ib3R0b21cIiksIGlzTnVtYmVyKHRyYW5zbGF0ZVkpICYmIGNvb3JkaW5hdGUgJiYgaXNOdW1iZXIoY29vcmRpbmF0ZS55KSAmJiB0cmFuc2xhdGVZID49IGNvb3JkaW5hdGUueSksIFwiXCIuY29uY2F0KENTU19DTEFTU19QUkVGSVgsIFwiLXRvcFwiKSwgaXNOdW1iZXIodHJhbnNsYXRlWSkgJiYgY29vcmRpbmF0ZSAmJiBpc051bWJlcihjb29yZGluYXRlLnkpICYmIHRyYW5zbGF0ZVkgPCBjb29yZGluYXRlLnkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwVHJhbnNsYXRlWFkoX3JlZjIpIHtcbiAgdmFyIGFsbG93RXNjYXBlVmlld0JveCA9IF9yZWYyLmFsbG93RXNjYXBlVmlld0JveCxcbiAgICBjb29yZGluYXRlID0gX3JlZjIuY29vcmRpbmF0ZSxcbiAgICBrZXkgPSBfcmVmMi5rZXksXG4gICAgb2Zmc2V0VG9wTGVmdCA9IF9yZWYyLm9mZnNldFRvcExlZnQsXG4gICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICByZXZlcnNlRGlyZWN0aW9uID0gX3JlZjIucmV2ZXJzZURpcmVjdGlvbixcbiAgICB0b29sdGlwRGltZW5zaW9uID0gX3JlZjIudG9vbHRpcERpbWVuc2lvbixcbiAgICB2aWV3Qm94ID0gX3JlZjIudmlld0JveCxcbiAgICB2aWV3Qm94RGltZW5zaW9uID0gX3JlZjIudmlld0JveERpbWVuc2lvbjtcbiAgaWYgKHBvc2l0aW9uICYmIGlzTnVtYmVyKHBvc2l0aW9uW2tleV0pKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uW2tleV07XG4gIH1cbiAgdmFyIG5lZ2F0aXZlID0gY29vcmRpbmF0ZVtrZXldIC0gdG9vbHRpcERpbWVuc2lvbiAtIG9mZnNldFRvcExlZnQ7XG4gIHZhciBwb3NpdGl2ZSA9IGNvb3JkaW5hdGVba2V5XSArIG9mZnNldFRvcExlZnQ7XG4gIGlmIChhbGxvd0VzY2FwZVZpZXdCb3hba2V5XSkge1xuICAgIHJldHVybiByZXZlcnNlRGlyZWN0aW9uW2tleV0gPyBuZWdhdGl2ZSA6IHBvc2l0aXZlO1xuICB9XG4gIGlmIChyZXZlcnNlRGlyZWN0aW9uW2tleV0pIHtcbiAgICB2YXIgX3Rvb2x0aXBCb3VuZGFyeSA9IG5lZ2F0aXZlO1xuICAgIHZhciBfdmlld0JveEJvdW5kYXJ5ID0gdmlld0JveFtrZXldO1xuICAgIGlmIChfdG9vbHRpcEJvdW5kYXJ5IDwgX3ZpZXdCb3hCb3VuZGFyeSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KHBvc2l0aXZlLCB2aWV3Qm94W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5tYXgobmVnYXRpdmUsIHZpZXdCb3hba2V5XSk7XG4gIH1cbiAgdmFyIHRvb2x0aXBCb3VuZGFyeSA9IHBvc2l0aXZlICsgdG9vbHRpcERpbWVuc2lvbjtcbiAgdmFyIHZpZXdCb3hCb3VuZGFyeSA9IHZpZXdCb3hba2V5XSArIHZpZXdCb3hEaW1lbnNpb247XG4gIGlmICh0b29sdGlwQm91bmRhcnkgPiB2aWV3Qm94Qm91bmRhcnkpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgobmVnYXRpdmUsIHZpZXdCb3hba2V5XSk7XG4gIH1cbiAgcmV0dXJuIE1hdGgubWF4KHBvc2l0aXZlLCB2aWV3Qm94W2tleV0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zZm9ybVN0eWxlKF9yZWYzKSB7XG4gIHZhciB0cmFuc2xhdGVYID0gX3JlZjMudHJhbnNsYXRlWCxcbiAgICB0cmFuc2xhdGVZID0gX3JlZjMudHJhbnNsYXRlWSxcbiAgICB1c2VUcmFuc2xhdGUzZCA9IF9yZWYzLnVzZVRyYW5zbGF0ZTNkO1xuICByZXR1cm4ge1xuICAgIHRyYW5zZm9ybTogdXNlVHJhbnNsYXRlM2QgPyBcInRyYW5zbGF0ZTNkKFwiLmNvbmNhdCh0cmFuc2xhdGVYLCBcInB4LCBcIikuY29uY2F0KHRyYW5zbGF0ZVksIFwicHgsIDApXCIpIDogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHRyYW5zbGF0ZVgsIFwicHgsIFwiKS5jb25jYXQodHJhbnNsYXRlWSwgXCJweClcIilcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwVHJhbnNsYXRlKF9yZWY0KSB7XG4gIHZhciBhbGxvd0VzY2FwZVZpZXdCb3ggPSBfcmVmNC5hbGxvd0VzY2FwZVZpZXdCb3gsXG4gICAgY29vcmRpbmF0ZSA9IF9yZWY0LmNvb3JkaW5hdGUsXG4gICAgb2Zmc2V0VG9wTGVmdCA9IF9yZWY0Lm9mZnNldFRvcExlZnQsXG4gICAgcG9zaXRpb24gPSBfcmVmNC5wb3NpdGlvbixcbiAgICByZXZlcnNlRGlyZWN0aW9uID0gX3JlZjQucmV2ZXJzZURpcmVjdGlvbixcbiAgICB0b29sdGlwQm94ID0gX3JlZjQudG9vbHRpcEJveCxcbiAgICB1c2VUcmFuc2xhdGUzZCA9IF9yZWY0LnVzZVRyYW5zbGF0ZTNkLFxuICAgIHZpZXdCb3ggPSBfcmVmNC52aWV3Qm94O1xuICB2YXIgY3NzUHJvcGVydGllcywgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWTtcbiAgaWYgKHRvb2x0aXBCb3guaGVpZ2h0ID4gMCAmJiB0b29sdGlwQm94LndpZHRoID4gMCAmJiBjb29yZGluYXRlKSB7XG4gICAgdHJhbnNsYXRlWCA9IGdldFRvb2x0aXBUcmFuc2xhdGVYWSh7XG4gICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICBrZXk6ICd4JyxcbiAgICAgIG9mZnNldFRvcExlZnQ6IG9mZnNldFRvcExlZnQsXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiByZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgdG9vbHRpcERpbWVuc2lvbjogdG9vbHRpcEJveC53aWR0aCxcbiAgICAgIHZpZXdCb3g6IHZpZXdCb3gsXG4gICAgICB2aWV3Qm94RGltZW5zaW9uOiB2aWV3Qm94LndpZHRoXG4gICAgfSk7XG4gICAgdHJhbnNsYXRlWSA9IGdldFRvb2x0aXBUcmFuc2xhdGVYWSh7XG4gICAgICBhbGxvd0VzY2FwZVZpZXdCb3g6IGFsbG93RXNjYXBlVmlld0JveCxcbiAgICAgIGNvb3JkaW5hdGU6IGNvb3JkaW5hdGUsXG4gICAgICBrZXk6ICd5JyxcbiAgICAgIG9mZnNldFRvcExlZnQ6IG9mZnNldFRvcExlZnQsXG4gICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICByZXZlcnNlRGlyZWN0aW9uOiByZXZlcnNlRGlyZWN0aW9uLFxuICAgICAgdG9vbHRpcERpbWVuc2lvbjogdG9vbHRpcEJveC5oZWlnaHQsXG4gICAgICB2aWV3Qm94OiB2aWV3Qm94LFxuICAgICAgdmlld0JveERpbWVuc2lvbjogdmlld0JveC5oZWlnaHRcbiAgICB9KTtcbiAgICBjc3NQcm9wZXJ0aWVzID0gZ2V0VHJhbnNmb3JtU3R5bGUoe1xuICAgICAgdHJhbnNsYXRlWDogdHJhbnNsYXRlWCxcbiAgICAgIHRyYW5zbGF0ZVk6IHRyYW5zbGF0ZVksXG4gICAgICB1c2VUcmFuc2xhdGUzZDogdXNlVHJhbnNsYXRlM2RcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjc3NQcm9wZXJ0aWVzID0gVE9PTFRJUF9ISURERU47XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjc3NQcm9wZXJ0aWVzOiBjc3NQcm9wZXJ0aWVzLFxuICAgIGNzc0NsYXNzZXM6IGdldFRvb2x0aXBDU1NDbGFzc05hbWUoe1xuICAgICAgdHJhbnNsYXRlWDogdHJhbnNsYXRlWCxcbiAgICAgIHRyYW5zbGF0ZVk6IHRyYW5zbGF0ZVksXG4gICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlXG4gICAgfSlcbiAgfTtcbn0iXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwidCIsImkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJyIiwiZSIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsImNsc3giLCJpc051bWJlciIsIkNTU19DTEFTU19QUkVGSVgiLCJUT09MVElQX0hJRERFTiIsInZpc2liaWxpdHkiLCJnZXRUb29sdGlwQ1NTQ2xhc3NOYW1lIiwiX3JlZiIsImNvb3JkaW5hdGUiLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsImNvbmNhdCIsIngiLCJ5IiwiZ2V0VG9vbHRpcFRyYW5zbGF0ZVhZIiwiX3JlZjIiLCJhbGxvd0VzY2FwZVZpZXdCb3giLCJvZmZzZXRUb3BMZWZ0IiwicG9zaXRpb24iLCJyZXZlcnNlRGlyZWN0aW9uIiwidG9vbHRpcERpbWVuc2lvbiIsInZpZXdCb3giLCJ2aWV3Qm94RGltZW5zaW9uIiwibmVnYXRpdmUiLCJwb3NpdGl2ZSIsIl90b29sdGlwQm91bmRhcnkiLCJfdmlld0JveEJvdW5kYXJ5IiwiTWF0aCIsIm1heCIsInRvb2x0aXBCb3VuZGFyeSIsInZpZXdCb3hCb3VuZGFyeSIsImdldFRyYW5zZm9ybVN0eWxlIiwiX3JlZjMiLCJ1c2VUcmFuc2xhdGUzZCIsInRyYW5zZm9ybSIsImdldFRvb2x0aXBUcmFuc2xhdGUiLCJfcmVmNCIsInRvb2x0aXBCb3giLCJjc3NQcm9wZXJ0aWVzIiwiaGVpZ2h0Iiwid2lkdGgiLCJjc3NDbGFzc2VzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/tooltip/translate.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/recharts/es6/util/types.js":
/*!*************************************************!*\
!*** ./node_modules/recharts/es6/util/types.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EventKeys: () => (/* binding */ EventKeys),\n/* harmony export */ FilteredElementKeyMap: () => (/* binding */ FilteredElementKeyMap),\n/* harmony export */ SVGElementPropKeys: () => (/* binding */ SVGElementPropKeys),\n/* harmony export */ adaptEventHandlers: () => (/* binding */ adaptEventHandlers),\n/* harmony export */ adaptEventsOfChild: () => (/* binding */ adaptEventsOfChild)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isObject */ \"(ssr)/./node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */ //\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\nvar SVGContainerPropKeys = [\n \"viewBox\",\n \"children\"\n];\nvar SVGElementPropKeys = [\n \"aria-activedescendant\",\n \"aria-atomic\",\n \"aria-autocomplete\",\n \"aria-busy\",\n \"aria-checked\",\n \"aria-colcount\",\n \"aria-colindex\",\n \"aria-colspan\",\n \"aria-controls\",\n \"aria-current\",\n \"aria-describedby\",\n \"aria-details\",\n \"aria-disabled\",\n \"aria-errormessage\",\n \"aria-expanded\",\n \"aria-flowto\",\n \"aria-haspopup\",\n \"aria-hidden\",\n \"aria-invalid\",\n \"aria-keyshortcuts\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-level\",\n \"aria-live\",\n \"aria-modal\",\n \"aria-multiline\",\n \"aria-multiselectable\",\n \"aria-orientation\",\n \"aria-owns\",\n \"aria-placeholder\",\n \"aria-posinset\",\n \"aria-pressed\",\n \"aria-readonly\",\n \"aria-relevant\",\n \"aria-required\",\n \"aria-roledescription\",\n \"aria-rowcount\",\n \"aria-rowindex\",\n \"aria-rowspan\",\n \"aria-selected\",\n \"aria-setsize\",\n \"aria-sort\",\n \"aria-valuemax\",\n \"aria-valuemin\",\n \"aria-valuenow\",\n \"aria-valuetext\",\n \"className\",\n \"color\",\n \"height\",\n \"id\",\n \"lang\",\n \"max\",\n \"media\",\n \"method\",\n \"min\",\n \"name\",\n \"style\",\n /*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */ // 'type',\n \"target\",\n \"width\",\n \"role\",\n \"tabIndex\",\n \"accentHeight\",\n \"accumulate\",\n \"additive\",\n \"alignmentBaseline\",\n \"allowReorder\",\n \"alphabetic\",\n \"amplitude\",\n \"arabicForm\",\n \"ascent\",\n \"attributeName\",\n \"attributeType\",\n \"autoReverse\",\n \"azimuth\",\n \"baseFrequency\",\n \"baselineShift\",\n \"baseProfile\",\n \"bbox\",\n \"begin\",\n \"bias\",\n \"by\",\n \"calcMode\",\n \"capHeight\",\n \"clip\",\n \"clipPath\",\n \"clipPathUnits\",\n \"clipRule\",\n \"colorInterpolation\",\n \"colorInterpolationFilters\",\n \"colorProfile\",\n \"colorRendering\",\n \"contentScriptType\",\n \"contentStyleType\",\n \"cursor\",\n \"cx\",\n \"cy\",\n \"d\",\n \"decelerate\",\n \"descent\",\n \"diffuseConstant\",\n \"direction\",\n \"display\",\n \"divisor\",\n \"dominantBaseline\",\n \"dur\",\n \"dx\",\n \"dy\",\n \"edgeMode\",\n \"elevation\",\n \"enableBackground\",\n \"end\",\n \"exponent\",\n \"externalResourcesRequired\",\n \"fill\",\n \"fillOpacity\",\n \"fillRule\",\n \"filter\",\n \"filterRes\",\n \"filterUnits\",\n \"floodColor\",\n \"floodOpacity\",\n \"focusable\",\n \"fontFamily\",\n \"fontSize\",\n \"fontSizeAdjust\",\n \"fontStretch\",\n \"fontStyle\",\n \"fontVariant\",\n \"fontWeight\",\n \"format\",\n \"from\",\n \"fx\",\n \"fy\",\n \"g1\",\n \"g2\",\n \"glyphName\",\n \"glyphOrientationHorizontal\",\n \"glyphOrientationVertical\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"hanging\",\n \"horizAdvX\",\n \"horizOriginX\",\n \"href\",\n \"ideographic\",\n \"imageRendering\",\n \"in2\",\n \"in\",\n \"intercept\",\n \"k1\",\n \"k2\",\n \"k3\",\n \"k4\",\n \"k\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"kerning\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"letterSpacing\",\n \"lightingColor\",\n \"limitingConeAngle\",\n \"local\",\n \"markerEnd\",\n \"markerHeight\",\n \"markerMid\",\n \"markerStart\",\n \"markerUnits\",\n \"markerWidth\",\n \"mask\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"mathematical\",\n \"mode\",\n \"numOctaves\",\n \"offset\",\n \"opacity\",\n \"operator\",\n \"order\",\n \"orient\",\n \"orientation\",\n \"origin\",\n \"overflow\",\n \"overlinePosition\",\n \"overlineThickness\",\n \"paintOrder\",\n \"panose1\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointerEvents\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"r\",\n \"radius\",\n \"refX\",\n \"refY\",\n \"renderingIntent\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"restart\",\n \"result\",\n \"rotate\",\n \"rx\",\n \"ry\",\n \"seed\",\n \"shapeRendering\",\n \"slope\",\n \"spacing\",\n \"specularConstant\",\n \"specularExponent\",\n \"speed\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stemh\",\n \"stemv\",\n \"stitchTiles\",\n \"stopColor\",\n \"stopOpacity\",\n \"strikethroughPosition\",\n \"strikethroughThickness\",\n \"string\",\n \"stroke\",\n \"strokeDasharray\",\n \"strokeDashoffset\",\n \"strokeLinecap\",\n \"strokeLinejoin\",\n \"strokeMiterlimit\",\n \"strokeOpacity\",\n \"strokeWidth\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textAnchor\",\n \"textDecoration\",\n \"textLength\",\n \"textRendering\",\n \"to\",\n \"transform\",\n \"u1\",\n \"u2\",\n \"underlinePosition\",\n \"underlineThickness\",\n \"unicode\",\n \"unicodeBidi\",\n \"unicodeRange\",\n \"unitsPerEm\",\n \"vAlphabetic\",\n \"values\",\n \"vectorEffect\",\n \"version\",\n \"vertAdvY\",\n \"vertOriginX\",\n \"vertOriginY\",\n \"vHanging\",\n \"vIdeographic\",\n \"viewTarget\",\n \"visibility\",\n \"vMathematical\",\n \"widths\",\n \"wordSpacing\",\n \"writingMode\",\n \"x1\",\n \"x2\",\n \"x\",\n \"xChannelSelector\",\n \"xHeight\",\n \"xlinkActuate\",\n \"xlinkArcrole\",\n \"xlinkHref\",\n \"xlinkRole\",\n \"xlinkShow\",\n \"xlinkTitle\",\n \"xlinkType\",\n \"xmlBase\",\n \"xmlLang\",\n \"xmlns\",\n \"xmlnsXlink\",\n \"xmlSpace\",\n \"y1\",\n \"y2\",\n \"y\",\n \"yChannelSelector\",\n \"z\",\n \"zoomAndPan\",\n \"ref\",\n \"key\",\n \"angle\"\n];\nvar PolyElementKeys = [\n \"points\",\n \"pathLength\"\n];\n/** svg element types that have specific attribute filtration requirements */ /** map of svg element types to unique svg attributes that belong to that element */ var FilteredElementKeyMap = {\n svg: SVGContainerPropKeys,\n polygon: PolyElementKeys,\n polyline: PolyElementKeys\n};\nvar EventKeys = [\n \"dangerouslySetInnerHTML\",\n \"onCopy\",\n \"onCopyCapture\",\n \"onCut\",\n \"onCutCapture\",\n \"onPaste\",\n \"onPasteCapture\",\n \"onCompositionEnd\",\n \"onCompositionEndCapture\",\n \"onCompositionStart\",\n \"onCompositionStartCapture\",\n \"onCompositionUpdate\",\n \"onCompositionUpdateCapture\",\n \"onFocus\",\n \"onFocusCapture\",\n \"onBlur\",\n \"onBlurCapture\",\n \"onChange\",\n \"onChangeCapture\",\n \"onBeforeInput\",\n \"onBeforeInputCapture\",\n \"onInput\",\n \"onInputCapture\",\n \"onReset\",\n \"onResetCapture\",\n \"onSubmit\",\n \"onSubmitCapture\",\n \"onInvalid\",\n \"onInvalidCapture\",\n \"onLoad\",\n \"onLoadCapture\",\n \"onError\",\n \"onErrorCapture\",\n \"onKeyDown\",\n \"onKeyDownCapture\",\n \"onKeyPress\",\n \"onKeyPressCapture\",\n \"onKeyUp\",\n \"onKeyUpCapture\",\n \"onAbort\",\n \"onAbortCapture\",\n \"onCanPlay\",\n \"onCanPlayCapture\",\n \"onCanPlayThrough\",\n \"onCanPlayThroughCapture\",\n \"onDurationChange\",\n \"onDurationChangeCapture\",\n \"onEmptied\",\n \"onEmptiedCapture\",\n \"onEncrypted\",\n \"onEncryptedCapture\",\n \"onEnded\",\n \"onEndedCapture\",\n \"onLoadedData\",\n \"onLoadedDataCapture\",\n \"onLoadedMetadata\",\n \"onLoadedMetadataCapture\",\n \"onLoadStart\",\n \"onLoadStartCapture\",\n \"onPause\",\n \"onPauseCapture\",\n \"onPlay\",\n \"onPlayCapture\",\n \"onPlaying\",\n \"onPlayingCapture\",\n \"onProgress\",\n \"onProgressCapture\",\n \"onRateChange\",\n \"onRateChangeCapture\",\n \"onSeeked\",\n \"onSeekedCapture\",\n \"onSeeking\",\n \"onSeekingCapture\",\n \"onStalled\",\n \"onStalledCapture\",\n \"onSuspend\",\n \"onSuspendCapture\",\n \"onTimeUpdate\",\n \"onTimeUpdateCapture\",\n \"onVolumeChange\",\n \"onVolumeChangeCapture\",\n \"onWaiting\",\n \"onWaitingCapture\",\n \"onAuxClick\",\n \"onAuxClickCapture\",\n \"onClick\",\n \"onClickCapture\",\n \"onContextMenu\",\n \"onContextMenuCapture\",\n \"onDoubleClick\",\n \"onDoubleClickCapture\",\n \"onDrag\",\n \"onDragCapture\",\n \"onDragEnd\",\n \"onDragEndCapture\",\n \"onDragEnter\",\n \"onDragEnterCapture\",\n \"onDragExit\",\n \"onDragExitCapture\",\n \"onDragLeave\",\n \"onDragLeaveCapture\",\n \"onDragOver\",\n \"onDragOverCapture\",\n \"onDragStart\",\n \"onDragStartCapture\",\n \"onDrop\",\n \"onDropCapture\",\n \"onMouseDown\",\n \"onMouseDownCapture\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseMoveCapture\",\n \"onMouseOut\",\n \"onMouseOutCapture\",\n \"onMouseOver\",\n \"onMouseOverCapture\",\n \"onMouseUp\",\n \"onMouseUpCapture\",\n \"onSelect\",\n \"onSelectCapture\",\n \"onTouchCancel\",\n \"onTouchCancelCapture\",\n \"onTouchEnd\",\n \"onTouchEndCapture\",\n \"onTouchMove\",\n \"onTouchMoveCapture\",\n \"onTouchStart\",\n \"onTouchStartCapture\",\n \"onPointerDown\",\n \"onPointerDownCapture\",\n \"onPointerMove\",\n \"onPointerMoveCapture\",\n \"onPointerUp\",\n \"onPointerUpCapture\",\n \"onPointerCancel\",\n \"onPointerCancelCapture\",\n \"onPointerEnter\",\n \"onPointerEnterCapture\",\n \"onPointerLeave\",\n \"onPointerLeaveCapture\",\n \"onPointerOver\",\n \"onPointerOverCapture\",\n \"onPointerOut\",\n \"onPointerOutCapture\",\n \"onGotPointerCapture\",\n \"onGotPointerCaptureCapture\",\n \"onLostPointerCapture\",\n \"onLostPointerCaptureCapture\",\n \"onScroll\",\n \"onScrollCapture\",\n \"onWheel\",\n \"onWheelCapture\",\n \"onAnimationStart\",\n \"onAnimationStartCapture\",\n \"onAnimationEnd\",\n \"onAnimationEndCapture\",\n \"onAnimationIteration\",\n \"onAnimationIterationCapture\",\n \"onTransitionEnd\",\n \"onTransitionEndCapture\"\n];\n/** The type of easing function to use for animations */ /** Specifies the duration of animation, the unit of this option is ms. */ /** the offset of a chart, which define the blank space all around */ /**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */ /**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */ /** The props definition of base axis */ /** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */ var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n if (!props || typeof props === \"function\" || typeof props === \"boolean\") {\n return null;\n }\n var inputProps = props;\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(props)) {\n inputProps = props.props;\n }\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(inputProps)) {\n return null;\n }\n var out = {};\n Object.keys(inputProps).forEach(function(key) {\n if (EventKeys.includes(key)) {\n out[key] = newHandler || function(e) {\n return inputProps[key](inputProps, e);\n };\n }\n });\n return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function(e) {\n originalHandler(data, index, e);\n return null;\n };\n};\nvar adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n if (!lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(props) || _typeof(props) !== \"object\") {\n return null;\n }\n var out = null;\n Object.keys(props).forEach(function(key) {\n var item = props[key];\n if (EventKeys.includes(key) && typeof item === \"function\") {\n if (!out) out = {};\n out[key] = getEventHandlerOfChild(item, data, index);\n }\n });\n return out;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvcmVjaGFydHMvZXM2L3V0aWwvdHlwZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsU0FBU0EsUUFBUUMsQ0FBQztJQUFJO0lBQTJCLE9BQU9ELFVBQVUsY0FBYyxPQUFPRSxVQUFVLFlBQVksT0FBT0EsT0FBT0MsUUFBUSxHQUFHLFNBQVVGLENBQUM7UUFBSSxPQUFPLE9BQU9BO0lBQUcsSUFBSSxTQUFVQSxDQUFDO1FBQUksT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFBRyxHQUFHRCxRQUFRQztBQUFJO0FBQ3RSO0FBQ0E7QUFFdkM7Ozs7Ozs7Ozs7O0NBV0MsR0FFRCxFQUFFO0FBQ0Ysb0ZBQW9GO0FBQ3BGLEVBQUU7QUFFRixJQUFJTyx1QkFBdUI7SUFBQztJQUFXO0NBQVc7QUFDM0MsSUFBSUMscUJBQXFCO0lBQUM7SUFBeUI7SUFBZTtJQUFxQjtJQUFhO0lBQWdCO0lBQWlCO0lBQWlCO0lBQWdCO0lBQWlCO0lBQWdCO0lBQW9CO0lBQWdCO0lBQWlCO0lBQXFCO0lBQWlCO0lBQWU7SUFBaUI7SUFBZTtJQUFnQjtJQUFxQjtJQUFjO0lBQW1CO0lBQWM7SUFBYTtJQUFjO0lBQWtCO0lBQXdCO0lBQW9CO0lBQWE7SUFBb0I7SUFBaUI7SUFBZ0I7SUFBaUI7SUFBaUI7SUFBaUI7SUFBd0I7SUFBaUI7SUFBaUI7SUFBZ0I7SUFBaUI7SUFBZ0I7SUFBYTtJQUFpQjtJQUFpQjtJQUFpQjtJQUFrQjtJQUFhO0lBQVM7SUFBVTtJQUFNO0lBQVE7SUFBTztJQUFTO0lBQVU7SUFBTztJQUFRO0lBQzk0Qjs7Ozs7Q0FLQyxHQUNELFVBQVU7SUFDVjtJQUFVO0lBQVM7SUFBUTtJQUFZO0lBQWdCO0lBQWM7SUFBWTtJQUFxQjtJQUFnQjtJQUFjO0lBQWE7SUFBYztJQUFVO0lBQWlCO0lBQWlCO0lBQWU7SUFBVztJ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U0FBVUMsR0FBRztRQUMzQyxJQUFJVCxVQUFVVSxRQUFRLENBQUNELE1BQU07WUFDM0JKLEdBQUcsQ0FBQ0ksSUFBSSxHQUFHTixjQUFjLFNBQVVRLENBQUM7Z0JBQ2xDLE9BQU9QLFVBQVUsQ0FBQ0ssSUFBSSxDQUFDTCxZQUFZTztZQUNyQztRQUNGO0lBQ0Y7SUFDQSxPQUFPTjtBQUNULEVBQUU7QUFDRixJQUFJTyx5QkFBeUIsU0FBU0EsdUJBQXVCQyxlQUFlLEVBQUVDLElBQUksRUFBRUMsS0FBSztJQUN2RixPQUFPLFNBQVVKLENBQUM7UUFDaEJFLGdCQUFnQkMsTUFBTUMsT0FBT0o7UUFDN0IsT0FBTztJQUNUO0FBQ0Y7QUFDTyxJQUFJSyxxQkFBcUIsU0FBU0EsbUJBQW1CZCxLQUFLLEVBQUVZLElBQUksRUFBRUMsS0FBSztJQUM1RSxJQUFJLENBQUN2QixzREFBUUEsQ0FBQ1UsVUFBVWpCLFFBQVFpQixXQUFXLFVBQVU7UUFDbkQsT0FBTztJQUNUO0lBQ0EsSUFBSUcsTUFBTTtJQUNWQyxPQUFPQyxJQUFJLENBQUNMLE9BQU9NLE9BQU8sQ0FBQyxTQUFVQyxHQUFHO1FBQ3RDLElBQUlRLE9BQU9mLEtBQUssQ0FBQ08sSUFBSTtRQUNyQixJQUFJVCxVQUFVVSxRQUFRLENBQUNELFFBQVEsT0FBT1EsU0FBUyxZQUFZO1lBQ3pELElBQUksQ0FBQ1osS0FBS0EsTUFBTSxDQUFDO1lBQ2pCQSxHQUFHLENBQUNJLElBQUksR0FBR0csdUJBQXVCSyxNQUFNSCxNQUFNQztRQUNoRDtJQUNGO0lBQ0EsT0FBT1Y7QUFDVCxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vdmVyaWZ5cGFjay1mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWNoYXJ0cy9lczYvdXRpbC90eXBlcy5qcz81ZmM2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF90eXBlb2YobykgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IHJldHVybiBfdHlwZW9mID0gXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgXCJzeW1ib2xcIiA9PSB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID8gZnVuY3Rpb24gKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9IDogZnVuY3Rpb24gKG8pIHsgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87IH0sIF90eXBlb2Yobyk7IH1cbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJ2xvZGFzaC9pc09iamVjdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBob3cgdmFsdWVzIGFyZSBzdGFja2VkOlxuICpcbiAqIC0gYG5vbmVgIGlzIHRoZSBkZWZhdWx0LCBpdCBhZGRzIHZhbHVlcyBvbiB0b3Agb2YgZWFjaCBvdGhlci4gTm8gc21hcnRzLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBvdmVybGFwLlxuICogLSBgZXhwYW5kYCBtYWtlIGl0IHNvIHRoYXQgdGhlIHZhbHVlcyBhbHdheXMgYWRkIHVwIHRvIDEgLSBzbyB0aGUgY2hhcnQgd2lsbCBsb29rIGxpa2UgYSByZWN0YW5nbGUuXG4gKiAtIGB3aWdnbGVgIGFuZCBgc2lsaG91ZXR0ZWAgdHJpZXMgdG8ga2VlcCB0aGUgY2hhcnQgY2VudGVyZWQuXG4gKiAtIGBzaWduYCBzdGFja3MgcG9zaXRpdmUgdmFsdWVzIGFib3ZlIHplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBiZWxvdyB6ZXJvLiBTaW1pbGFyIHRvIGBub25lYCBidXQgaGFuZGxlcyBuZWdhdGl2ZXMuXG4gKiAtIGBwb3NpdGl2ZWAgaWdub3JlcyBhbGwgbmVnYXRpdmUgdmFsdWVzLCBhbmQgdGhlbiBiZWhhdmVzIGxpa2UgXFxgbm9uZVxcYC5cbiAqXG4gKiBBbHNvIHNlZSBodHRwczovL2QzanMub3JnL2QzLXNoYXBlL3N0YWNrI3N0YWNrLW9mZnNldHNcbiAqIChub3RlIHRoYXQgdGhlIGBkaXZlcmdpbmdgIG9mZnNldCBpbiBkMyBpcyBuYW1lZCBgc2lnbmAgaW4gcmVjaGFydHMpXG4gKi9cblxuLy9cbi8vIEV2ZW50IEhhbmRsZXIgVHlwZXMgLS0gQ29waWVkIGZyb20gQHR5cGVzL3JlYWN0L2luZGV4LmQudHMgYW5kIGFkYXB0ZWQgZm9yIFByb3BzLlxuLy9cblxudmFyIFNWR0NvbnRhaW5lclByb3BLZXlzID0gWyd2aWV3Qm94JywgJ2NoaWxkcmVuJ107XG5leHBvcnQgdmFyIFNWR0VsZW1lbnRQcm9wS2V5cyA9IFsnYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgJ2FyaWEtYXRvbWljJywgJ2FyaWEtYXV0b2NvbXBsZXRlJywgJ2FyaWEtYnVzeScsICdhcmlhLWNoZWNrZWQnLCAnYXJpYS1jb2xjb3VudCcsICdhcmlhLWNvbGluZGV4JywgJ2FyaWEtY29sc3BhbicsICdhcmlhLWNvbnRyb2xzJywgJ2FyaWEtY3VycmVudCcsICdhcmlhLWRlc2NyaWJlZGJ5JywgJ2FyaWEtZGV0YWlscycsICdhcmlhLWRpc2FibGVkJywgJ2FyaWEtZXJyb3JtZXNzYWdlJywgJ2FyaWEtZXhwYW5kZWQnLCAnYXJpYS1mbG93dG8nLCAnYXJpYS1oYXNwb3B1cCcsICdhcmlhLWhpZGRlbicsICdhcmlhLWludmFsaWQnLCAnYXJpYS1rZXlzaG9ydGN1dHMnLCAnYXJpYS1sYWJlbCcsICdhcmlhLWxhYmVsbGVkYnknLCAnYXJpYS1sZXZlbCcsICdhcmlhLWxpdmUnLCAnYXJpYS1tb2RhbCcsICdhcmlhLW11bHRpbGluZScsICdhcmlhLW11bHRpc2VsZWN0YWJsZScsICdhcmlhLW9yaWVudGF0aW9uJywgJ2FyaWEtb3ducycsICdhcmlhLXBsYWNlaG9sZGVyJywgJ2FyaWEtcG9zaW5zZXQnLCAnYXJpYS1wcmVzc2VkJywgJ2FyaWEtcmVhZG9ubHknLCAnYXJpYS1yZWxldmFudCcsICdhcmlhLXJlcXVpcmVkJywgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJywgJ2FyaWEtcm93Y291bnQnLCAnYXJpYS1yb3dpbmRleCcsICdhcmlhLXJvd3NwYW4nLCAnYXJpYS1zZWxlY3RlZCcsICdhcmlhLXNldHNpemUnLCAnYXJpYS1zb3J0JywgJ2FyaWEtdmFsdWVtYXgnLCAnYXJpYS12YWx1ZW1pbicsICdhcmlhLXZhbHVlbm93JywgJ2FyaWEtdmFsdWV0ZXh0JywgJ2NsYXNzTmFtZScsICdjb2xvcicsICdoZWlnaHQnLCAnaWQnLCAnbGFuZycsICdtYXgnLCAnbWVkaWEnLCAnbWV0aG9kJywgJ21pbicsICduYW1lJywgJ3N0eWxlJyxcbi8qXG4gKiByZW1vdmVkICd0eXBlJyBTVkdFbGVtZW50UHJvcEtleSBiZWNhdXNlIHdlIGRvIG5vdCBjdXJyZW50bHkgdXNlIGFueSBTVkcgZWxlbWVudHNcbiAqIHRoYXQgY2FuIHVzZSBpdCBhbmQgaXQgY29uZmxpY3RzIHdpdGggdGhlIHJlY2hhcnRzIHByb3AgJ3R5cGUnXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVjaGFydHMvcmVjaGFydHMvcHVsbC8zMzI3XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3R5cGVcbiAqL1xuLy8gJ3R5cGUnLFxuJ3RhcmdldCcsICd3aWR0aCcsICdyb2xlJywgJ3RhYkluZGV4JywgJ2FjY2VudEhlaWdodCcsICdhY2N1bXVsYXRlJywgJ2FkZGl0aXZlJywgJ2FsaWdubWVudEJhc2VsaW5lJywgJ2FsbG93UmVvcmRlcicsICdhbHBoYWJldGljJywgJ2FtcGxpdHVkZScsICdhcmFiaWNGb3JtJywgJ2FzY2VudCcsICdhdHRyaWJ1dGVOYW1lJywgJ2F0dHJpYnV0ZVR5cGUnLCAnYXV0b1JldmVyc2UnLCAnYXppbXV0aCcsICdiYXNlRnJlcXVlbmN5JywgJ2Jhc2VsaW5lU2hpZnQnLCAnYmFzZVByb2ZpbGUnLCAnYmJveCcsICdiZWdpbicsICdiaWFzJywgJ2J5JywgJ2NhbGNNb2RlJywgJ2NhcEhlaWdodCcsICdjbGlwJywgJ2NsaXBQYXRoJywgJ2NsaXBQYXRoVW5pdHMnLCAnY2xpcFJ1bGUnLCAnY29sb3JJbnRlcnBvbGF0aW9uJywgJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLCAnY29sb3JQcm9maWxlJywgJ2NvbG9yUmVuZGVyaW5nJywgJ2NvbnRlbnRTY3JpcHRUeXBlJywgJ2NvbnRlbnRTdHlsZVR5cGUnLCAnY3Vyc29yJywgJ2N4JywgJ2N5JywgJ2QnLCAnZGVjZWxlcmF0ZScsICdkZXNjZW50JywgJ2RpZmZ1c2VDb25zdGFudCcsICdkaXJlY3Rpb24nLCAnZGlzcGxheScsICdkaXZpc29yJywgJ2RvbWluYW50QmFzZWxpbmUnLCAnZHVyJywgJ2R4JywgJ2R5JywgJ2VkZ2VNb2RlJywgJ2VsZXZhdGlvbicsICdlbmFibGVCYWNrZ3JvdW5kJywgJ2VuZCcsICdleHBvbmVudCcsICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJywgJ2ZpbGwnLCAnZmlsbE9wYWNpdHknLCAnZmlsbFJ1bGUnLCAnZmlsdGVyJywgJ2ZpbHRlclJlcycsICdmaWx0ZXJVbml0cycsICdmbG9vZENvbG9yJywgJ2Zsb29kT3BhY2l0eScsICdmb2N1c2FibGUnLCAnZm9udEZhbWlseScsICdmb250U2l6ZScsICdmb250U2l6ZUFkanVzdCcsICdmb250U3RyZXRjaCcsICdmb250U3R5bGUnLCAnZm9udFZhcmlhbnQnLCAnZm9udFdlaWdodCcsICdmb3JtYXQnLCAnZnJvbScsICdmeCcsICdmeScsICdnMScsICdnMicsICdnbHlwaE5hbWUnLCAnZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwnLCAnZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsJywgJ2dseXBoUmVmJywgJ2dyYWRpZW50VHJhbnNmb3JtJywgJ2dyYWRpZW50VW5pdHMnLCAnaGFuZ2luZycsICdob3JpekFkdlgnLCAnaG9yaXpPcmlnaW5YJywgJ2hyZWYnLCAnaWRlb2dyYXBoaWMnLCAnaW1hZ2VSZW5kZXJpbmcnLCAnaW4yJywgJ2luJywgJ2ludGVyY2VwdCcsICdrMScsICdrMicsICdrMycsICdrNCcsICdrJywgJ2tlcm5lbE1hdHJpeCcsICdrZXJuZWxVbml0TGVuZ3RoJywgJ2tlcm5pbmcnLCAna2V5UG9pbnRzJywgJ2tleVNwbGluZXMnLCAna2V5VGltZXMnLCAnbGVuZ3RoQWRqdXN0JywgJ2xldHRlclNwYWNpbmcnLCAnbGlnaHRpbmdDb2xvcicsICdsaW1pdGluZ0NvbmVBbmdsZScsICdsb2NhbCcsICdtYXJrZXJFbmQnLCAnbWFya2VySGVpZ2h0JywgJ21hcmtlck1pZCcsICdtYXJrZXJTdGFydCcsICdtYXJrZXJVbml0cycsICdtYXJrZXJXaWR0aCcsICdtYXNrJywgJ21hc2tDb250ZW50VW5pdHMnLCAnbWFza1VuaXRzJywgJ21hdGhlbWF0aWNhbCcsICdtb2RlJywgJ251bU9jdGF2ZXMnLCAnb2Zmc2V0JywgJ29wYWNpdHknLCAnb3BlcmF0b3InLCAnb3JkZXInLCAnb3JpZW50JywgJ29yaWVudGF0aW9uJywgJ29yaWdpbicsICdvdmVyZmxvdycsICdvdmVybGluZVBvc2l0aW9uJywgJ292ZXJsaW5lVGhpY2tuZXNzJywgJ3BhaW50T3JkZXInLCAncGFub3NlMScsICdwYXRoTGVuZ3RoJywgJ3BhdHRlcm5Db250ZW50VW5pdHMnLCAncGF0dGVyblRyYW5zZm9ybScsICdwYXR0ZXJuVW5pdHMnLCAncG9pbnRlckV2ZW50cycsICdwb2ludHNBdFgnLCAncG9pbnRzQXRZJywgJ3BvaW50c0F0WicsICdwcmVzZXJ2ZUFscGhhJywgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLCAncHJpbWl0aXZlVW5pdHMnLCAncicsICdyYWRpdXMnLCAncmVmWCcsICdyZWZZJywgJ3JlbmRlcmluZ0ludGVudCcsICdyZXBlYXRDb3VudCcsICdyZXBlYXREdXInLCAncmVxdWlyZWRFeHRlbnNpb25zJywgJ3JlcXVpcmVkRmVhdHVyZXMnLCAncmVzdGFydCcsICdyZXN1bHQnLCAncm90YXRlJywgJ3J4JywgJ3J5JywgJ3NlZWQnLCAnc2hhcGVSZW5kZXJpbmcnLCAnc2xvcGUnLCAnc3BhY2luZycsICdzcGVjdWxhckNvbnN0YW50JywgJ3NwZWN1bGFyRXhwb25lbnQnLCAnc3BlZWQnLCAnc3ByZWFkTWV0aG9kJywgJ3N0YXJ0T2Zmc2V0JywgJ3N0ZERldmlhdGlvbicsICdzdGVtaCcsICdzdGVtdicsICdzdGl0Y2hUaWxlcycsICdzdG9wQ29sb3InLCAnc3RvcE9wYWNpdHknLCAnc3RyaWtldGhyb3VnaFBvc2l0aW9uJywgJ3N0cmlrZXRocm91Z2hUaGlja25lc3MnLCAnc3RyaW5nJywgJ3N0cm9rZScsICdzdHJva2VEYXNoYXJyYXknLCAnc3Ryb2tlRGFzaG9mZnNldCcsICdzdHJva2VMaW5lY2FwJywgJ3N0cm9rZUxpbmVqb2luJywgJ3N0cm9rZU1pdGVybGltaXQnLCAnc3Ryb2tlT3BhY2l0eScsICdzdHJva2VXaWR0aCcsICdzdXJmYWNlU2NhbGUnLCAnc3lzdGVtTGFuZ3VhZ2UnLCAndGFibGVWYWx1ZXMnLCAndGFyZ2V0WCcsICd0YXJnZXRZJywgJ3RleHRBbmNob3InLCAndGV4dERlY29yYXRpb24nLCAndGV4dExlbmd0aCcsICd0ZXh0UmVuZGVyaW5nJywgJ3RvJywgJ3RyYW5zZm9ybScsICd1MScsICd1MicsICd1bmRlcmxpbmVQb3NpdGlvbicsICd1bmRlcmxpbmVUaGlja25lc3MnLCAndW5pY29kZScsICd1bmljb2RlQmlkaScsICd1bmljb2RlUmFuZ2UnLCAndW5pdHNQZXJFbScsICd2QWxwaGFiZXRpYycsICd2YWx1ZXMnLCAndmVjdG9yRWZmZWN0JywgJ3ZlcnNpb24nLCAndmVydEFkdlknLCAndmVydE9yaWdpblgnLCAndmVydE9yaWdpblknLCAndkhhbmdpbmcnLCAndklkZW9ncmFwaGljJywgJ3ZpZXdUYXJnZXQnLCAndmlzaWJpbGl0eScsICd2TWF0aGVtYXRpY2FsJywgJ3dpZHRocycsICd3b3JkU3BhY2luZycsICd3cml0aW5nTW9kZScsICd4MScsICd4MicsICd4JywgJ3hDaGFubmVsU2VsZWN0b3InLCAneEhlaWdodCcsICd4bGlua0FjdHVhdGUnLCAneGxpbmtBcmNyb2xlJywgJ3hsaW5rSHJlZicsICd4bGlua1JvbGUnLCAneGxpbmtTaG93JywgJ3hsaW5rVGl0bGUnLCAneGxpbmtUeXBlJywgJ3htbEJhc2UnLCAneG1sTGFuZycsICd4bWxucycsICd4bWxuc1hsaW5rJywgJ3htbFNwYWNlJywgJ3kxJywgJ3kyJywgJ3knLCAneUNoYW5uZWxTZWxlY3RvcicsICd6JywgJ3pvb21BbmRQYW4nLCAncmVmJywgJ2tleScsICdhbmdsZSddO1xudmFyIFBvbHlFbGVtZW50S2V5cyA9IFsncG9pbnRzJywgJ3BhdGhMZW5ndGgnXTtcblxuLyoqIHN2ZyBlbGVtZW50IHR5cGVzIHRoYXQgaGF2ZSBzcGVjaWZpYyBhdHRyaWJ1dGUgZmlsdHJhdGlvbiByZXF1aXJlbWVudHMgKi9cblxuLyoqIG1hcCBvZiBzdmcgZWxlbWVudCB0eXBlcyB0byB1bmlxdWUgc3ZnIGF0dHJpYnV0ZXMgdGhhdCBiZWxvbmcgdG8gdGhhdCBlbGVtZW50ICovXG5leHBvcnQgdmFyIEZpbHRlcmVkRWxlbWVudEtleU1hcCA9IHtcbiAgc3ZnOiBTVkdDb250YWluZXJQcm9wS2V5cyxcbiAgcG9seWdvbjogUG9seUVsZW1lbnRLZXlzLFxuICBwb2x5bGluZTogUG9seUVsZW1lbnRLZXlzXG59O1xuZXhwb3J0IHZhciBFdmVudEtleXMgPSBbJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJywgJ29uQ29weScsICdvbkNvcHlDYXB0dXJlJywgJ29uQ3V0JywgJ29uQ3V0Q2FwdHVyZScsICdvblBhc3RlJywgJ29uUGFzdGVDYXB0dXJlJywgJ29uQ29tcG9zaXRpb25FbmQnLCAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnLCAnb25Db21wb3NpdGlvblN0YXJ0JywgJ29uQ29tcG9zaXRpb25TdGFydENhcHR1cmUnLCAnb25Db21wb3NpdGlvblVwZGF0ZScsICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZScsICdvbkZvY3VzJywgJ29uRm9jdXNDYXB0dXJlJywgJ29uQmx1cicsICdvbkJsdXJDYXB0dXJlJywgJ29uQ2hhbmdlJywgJ29uQ2hhbmdlQ2FwdHVyZScsICdvbkJlZm9yZUlucHV0JywgJ29uQmVmb3JlSW5wdXRDYXB0dXJlJywgJ29uSW5wdXQnLCAnb25JbnB1dENhcHR1cmUnLCAnb25SZXNldCcsICdvblJlc2V0Q2FwdHVyZScsICdvblN1Ym1pdCcsICdvblN1Ym1pdENhcHR1cmUnLCAnb25JbnZhbGlkJywgJ29uSW52YWxpZENhcHR1cmUnLCAnb25Mb2FkJywgJ29uTG9hZENhcHR1cmUnLCAnb25FcnJvcicsICdvbkVycm9yQ2FwdHVyZScsICdvbktleURvd24nLCAnb25LZXlEb3duQ2FwdHVyZScsICdvbktleVByZXNzJywgJ29uS2V5UHJlc3NDYXB0dXJlJywgJ29uS2V5VXAnLCAnb25LZXlVcENhcHR1cmUnLCAnb25BYm9ydCcsICdvbkFib3J0Q2FwdHVyZScsICdvbkNhblBsYXknLCAnb25DYW5QbGF5Q2FwdHVyZScsICdvbkNhblBsYXlUaHJvdWdoJywgJ29uQ2FuUGxheVRocm91Z2hDYXB0dXJlJywgJ29uRHVyYXRpb25DaGFuZ2UnLCAnb25EdXJhdGlvbkNoYW5nZUNhcHR1cmUnLCAnb25FbXB0aWVkJywgJ29uRW1wdGllZENhcHR1cmUnLCAnb25FbmNyeXB0ZWQnLCAnb25FbmNyeXB0ZWRDYXB0dXJlJywgJ29uRW5kZWQnLCAnb25FbmRlZENhcHR1cmUnLCAnb25Mb2FkZWREYXRhJywgJ29uTG9hZGVkRGF0YUNhcHR1cmUnLCAnb25Mb2FkZWRNZXRhZGF0YScsICdvbkxvYWRlZE1ldGFkYXRhQ2FwdHVyZScsICdvbkxvYWRTdGFydCcsICdvbkxvYWRTdGFydENhcHR1cmUnLCAnb25QYXVzZScsICdvblBhdXNlQ2FwdHVyZScsICdvblBsYXknLCAnb25QbGF5Q2FwdHVyZScsICdvblBsYXlpbmcnLCAnb25QbGF5aW5nQ2FwdHVyZScsICdvblByb2dyZXNzJywgJ29uUHJvZ3Jlc3NDYXB0dXJlJywgJ29uUmF0ZUNoYW5nZScsICdvblJhdGVDaGFuZ2VDYXB0dXJlJywgJ29uU2Vla2VkJywgJ29uU2Vla2VkQ2FwdHVyZScsICdvblNlZWtpbmcnLCAnb25TZWVraW5nQ2FwdHVyZScsICdvblN0YWxsZWQnLCAnb25TdGFsbGVkQ2FwdHVyZScsICdvblN1c3BlbmQnLCAnb25TdXNwZW5kQ2FwdHVyZScsICdvblRpbWVVcGRhdGUnLCAnb25UaW1lVXBkYXRlQ2FwdHVyZScsICdvblZvbHVtZUNoYW5nZScsICdvblZvbHVtZUNoYW5nZUNhcHR1cmUnLCAnb25XYWl0aW5nJywgJ29uV2FpdGluZ0NhcHR1cmUnLCAnb25BdXhDbGljaycsICdvbkF1eENsaWNrQ2FwdHVyZScsICdvbkNsaWNrJywgJ29uQ2xpY2tDYXB0dXJlJywgJ29uQ29udGV4dE1lbnUnLCAnb25Db250ZXh0TWVudUNhcHR1cmUnLCAnb25Eb3VibGVDbGljaycsICdvbkRvdWJsZUNsaWNrQ2FwdHVyZScsICdvbkRyYWcnLCAnb25EcmFnQ2FwdHVyZScsICdvbkRyYWdFbmQnLCAnb25EcmFnRW5kQ2FwdHVyZScsICdvbkRyYWdFbnRlcicsICdvbkRyYWdFbnRlckNhcHR1cmUnLCAnb25EcmFnRXhpdCcsICdvbkRyYWdFeGl0Q2FwdHVyZScsICdvbkRyYWdMZWF2ZScsICdvbkRyYWdMZWF2ZUNhcHR1cmUnLCAnb25EcmFnT3ZlcicsICdvbkRyYWdPdmVyQ2FwdHVyZScsICdvbkRyYWdTdGFydCcsICdvbkRyYWdTdGFydENhcHR1cmUnLCAnb25Ecm9wJywgJ29uRHJvcENhcHR1cmUnLCAnb25Nb3VzZURvd24nLCAnb25Nb3VzZURvd25DYXB0dXJlJywgJ29uTW91c2VFbnRlcicsICdvbk1vdXNlTGVhdmUnLCAnb25Nb3VzZU1vdmUnLCAnb25Nb3VzZU1vdmVDYXB0dXJlJywgJ29uTW91c2VPdXQnLCAnb25Nb3VzZU91dENhcHR1cmUnLCAnb25Nb3VzZU92ZXInLCAnb25Nb3VzZU92ZXJDYXB0dXJlJywgJ29uTW91c2VVcCcsICdvbk1vdXNlVXBDYXB0dXJlJywgJ29uU2VsZWN0JywgJ29uU2VsZWN0Q2FwdHVyZScsICdvblRvdWNoQ2FuY2VsJywgJ29uVG91Y2hDYW5jZWxDYXB0dXJlJywgJ29uVG91Y2hFbmQnLCAnb25Ub3VjaEVuZENhcHR1cmUnLCAnb25Ub3VjaE1vdmUnLCAnb25Ub3VjaE1vdmVDYXB0dXJlJywgJ29uVG91Y2hTdGFydCcsICdvblRvdWNoU3RhcnRDYXB0dXJlJywgJ29uUG9pbnRlckRvd24nLCAnb25Qb2ludGVyRG93bkNhcHR1cmUnLCAnb25Qb2ludGVyTW92ZScsICdvblBvaW50ZXJNb3ZlQ2FwdHVyZScsICdvblBvaW50ZXJVcCcsICdvblBvaW50ZXJVcENhcHR1cmUnLCAnb25Qb2ludGVyQ2FuY2VsJywgJ29uUG9pbnRlckNhbmNlbENhcHR1cmUnLCAnb25Qb2ludGVyRW50ZXInLCAnb25Qb2ludGVyRW50ZXJDYXB0dXJlJywgJ29uUG9pbnRlckxlYXZlJywgJ29uUG9pbnRlckxlYXZlQ2FwdHVyZScsICdvblBvaW50ZXJPdmVyJywgJ29uUG9pbnRlck92ZXJDYXB0dXJlJywgJ29uUG9pbnRlck91dCcsICdvblBvaW50ZXJPdXRDYXB0dXJlJywgJ29uR290UG9pbnRlckNhcHR1cmUnLCAnb25Hb3RQb2ludGVyQ2FwdHVyZUNhcHR1cmUnLCAnb25Mb3N0UG9pbnRlckNhcHR1cmUnLCAnb25Mb3N0UG9pbnRlckNhcHR1cmVDYXB0dXJlJywgJ29uU2Nyb2xsJywgJ29uU2Nyb2xsQ2FwdHVyZScsICdvbldoZWVsJywgJ29uV2hlZWxDYXB0dXJlJywgJ29uQW5pbWF0aW9uU3RhcnQnLCAnb25BbmltYXRpb25TdGFydENhcHR1cmUnLCAnb25BbmltYXRpb25FbmQnLCAnb25BbmltYXRpb25FbmRDYXB0dXJlJywgJ29uQW5pbWF0aW9uSXRlcmF0aW9uJywgJ29uQW5pbWF0aW9uSXRlcmF0aW9uQ2FwdHVyZScsICdvblRyYW5zaXRpb25FbmQnLCAnb25UcmFuc2l0aW9uRW5kQ2FwdHVyZSddO1xuXG4vKiogVGhlIHR5cGUgb2YgZWFzaW5nIGZ1bmN0aW9uIHRvIHVzZSBmb3IgYW5pbWF0aW9ucyAqL1xuXG4vKiogU3BlY2lmaWVzIHRoZSBkdXJhdGlvbiBvZiBhbmltYXRpb24sIHRoZSB1bml0IG9mIHRoaXMgb3B0aW9uIGlzIG1zLiAqL1xuXG4vKiogdGhlIG9mZnNldCBvZiBhIGNoYXJ0LCB3aGljaCBkZWZpbmUgdGhlIGJsYW5rIHNwYWNlIGFsbCBhcm91bmQgKi9cblxuLyoqXG4gKiBUaGUgZG9tYWluIG9mIGF4aXMuXG4gKiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uXG4gKlxuICogTnVtZXJpYyBkb21haW4gaXMgYWx3YXlzIGRlZmluZWQgYnkgYW4gYXJyYXkgb2YgZXhhY3RseSB0d28gdmFsdWVzLCBmb3IgdGhlIG1pbiBhbmQgdGhlIG1heCBvZiB0aGUgYXhpcy5cbiAqIENhdGVnb3JpY2FsIGRvbWFpbiBpcyBkZWZpbmVkIGFzIGFycmF5IG9mIGFsbCBwb3NzaWJsZSB2YWx1ZXMuXG4gKlxuICogQ2FuIGJlIHNwZWNpZmllZCBpbiBtYW55IHdheXM6XG4gKiAtIGFycmF5IG9mIG51bWJlcnNcbiAqIC0gd2l0aCBzcGVjaWFsIHN0cmluZ3MgbGlrZSAnZGF0YU1pbicgYW5kICdkYXRhTWF4J1xuICogLSB3aXRoIHNwZWNpYWwgc3RyaW5nIG1hdGggbGlrZSAnZGF0YU1pbiAtIDEwMCdcbiAqIC0gd2l0aCBrZXl3b3JkICdhdXRvJ1xuICogLSBvciBhIGZ1bmN0aW9uXG4gKiAtIGFycmF5IG9mIGZ1bmN0aW9uc1xuICogLSBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZVxuICovXG5cbi8qKlxuICogTnVtYmVyRG9tYWluIGlzIGFuIGV2YWx1YXRlZCB7QGxpbmsgQXhpc0RvbWFpbn0uXG4gKiBVbmxpa2Uge0BsaW5rIEF4aXNEb21haW59LCBpdCBoYXMgbm8gdmFyaWV0eSAtIGl0J3MgYSB0dXBsZSBvZiB0d28gbnVtYmVyLlxuICogVGhpcyBpcyBhZnRlciBhbGwgdGhlIGtleXdvcmRzIGFuZCBmdW5jdGlvbnMgd2VyZSBldmFsdWF0ZWQgYW5kIHdoYXQgaXMgbGVmdCBpcyBbbWluLCBtYXhdLlxuICpcbiAqIEtub3cgdGhhdCB0aGUgbWluLCBtYXggdmFsdWVzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSBuaWNlIG51bWJlcnMgLSB2YWx1ZXMgbGlrZSAtSW5maW5pdHkgb3IgTmFOIGFyZSBwb3NzaWJsZS5cbiAqXG4gKiBUaGVyZSBhcmUgYWxzbyBgY2F0ZWdvcnlgIGF4ZXMgdGhhdCBoYXZlIGRpZmZlcmVudCB0aGluZ3MgdGhhbiBudW1iZXJzIGluIHRoZWlyIGRvbWFpbi5cbiAqL1xuXG4vKiogVGhlIHByb3BzIGRlZmluaXRpb24gb2YgYmFzZSBheGlzICovXG5cbi8qKiBEZWZpbmVzIGhvdyB0aWNrcyBhcmUgcGxhY2VkIGFuZCB3aGV0aGVyIC8gaG93IHRpY2sgY29sbGlzaW9ucyBhcmUgaGFuZGxlZC5cbiAqICdwcmVzZXJ2ZVN0YXJ0JyBrZWVwcyB0aGUgbGVmdCB0aWNrIG9uIGNvbGxpc2lvbiBhbmQgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCB0aWNrIGlzIGFsd2F5cyBzaG93bi5cbiAqICdwcmVzZXJ2ZUVuZCcga2VlcHMgdGhlIHJpZ2h0IHRpY2sgb24gY29sbGlzaW9uIGFuZCBlbnN1cmVzIHRoYXQgdGhlIGxhc3QgdGljayBpcyBhbHdheXMgc2hvd24uXG4gKiAncHJlc2VydmVTdGFydEVuZCcga2VlcHMgdGhlIGxlZnQgdGljayBvbiBjb2xsaXNpb24gYW5kIGVuc3VyZXMgdGhhdCB0aGUgZmlyc3QgYW5kIGxhc3QgdGlja3MgYXJlIGFsd2F5cyBzaG93bi5cbiAqICdlcXVpZGlzdGFudFByZXNlcnZlU3RhcnQnIHNlbGVjdHMgYSBudW1iZXIgTiBzdWNoIHRoYXQgZXZlcnkgblRoIHRpY2sgd2lsbCBiZSBzaG93biB3aXRob3V0IGNvbGxpc2lvbi5cbiAqL1xuXG5leHBvcnQgdmFyIGFkYXB0RXZlbnRIYW5kbGVycyA9IGZ1bmN0aW9uIGFkYXB0RXZlbnRIYW5kbGVycyhwcm9wcywgbmV3SGFuZGxlcikge1xuICBpZiAoIXByb3BzIHx8IHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgcHJvcHMgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBpbnB1dFByb3BzID0gcHJvcHM7XG4gIGlmICggLyojX19QVVJFX18qL2lzVmFsaWRFbGVtZW50KHByb3BzKSkge1xuICAgIGlucHV0UHJvcHMgPSBwcm9wcy5wcm9wcztcbiAgfVxuICBpZiAoIWlzT2JqZWN0KGlucHV0UHJvcHMpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdmFyIG91dCA9IHt9O1xuICBPYmplY3Qua2V5cyhpbnB1dFByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoRXZlbnRLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIG91dFtrZXldID0gbmV3SGFuZGxlciB8fCBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gaW5wdXRQcm9wc1trZXldKGlucHV0UHJvcHMsIGUpO1xuICAgICAgfTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufTtcbnZhciBnZXRFdmVudEhhbmRsZXJPZkNoaWxkID0gZnVuY3Rpb24gZ2V0RXZlbnRIYW5kbGVyT2ZDaGlsZChvcmlnaW5hbEhhbmRsZXIsIGRhdGEsIGluZGV4KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoZSkge1xuICAgIG9yaWdpbmFsSGFuZGxlcihkYXRhLCBpbmRleCwgZSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59O1xuZXhwb3J0IHZhciBhZGFwdEV2ZW50c09mQ2hpbGQgPSBmdW5jdGlvbiBhZGFwdEV2ZW50c09mQ2hpbGQocHJvcHMsIGRhdGEsIGluZGV4KSB7XG4gIGlmICghaXNPYmplY3QocHJvcHMpIHx8IF90eXBlb2YocHJvcHMpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHZhciBvdXQgPSBudWxsO1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGl0ZW0gPSBwcm9wc1trZXldO1xuICAgIGlmIChFdmVudEtleXMuaW5jbHVkZXMoa2V5KSAmJiB0eXBlb2YgaXRlbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKCFvdXQpIG91dCA9IHt9O1xuICAgICAgb3V0W2tleV0gPSBnZXRFdmVudEhhbmRsZXJPZkNoaWxkKGl0ZW0sIGRhdGEsIGluZGV4KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiaXNWYWxpZEVsZW1lbnQiLCJpc09iamVjdCIsIlNWR0NvbnRhaW5lclByb3BLZXlzIiwiU1ZHRWxlbWVudFByb3BLZXlzIiwiUG9seUVsZW1lbnRLZXlzIiwiRmlsdGVyZWRFbGVtZW50S2V5TWFwIiwic3ZnIiwicG9seWdvbiIsInBvbHlsaW5lIiwiRXZlbnRLZXlzIiwiYWRhcHRFdmVudEhhbmRsZXJzIiwicHJvcHMiLCJuZXdIYW5kbGVyIiwiaW5wdXRQcm9wcyIsIm91dCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiaW5jbHVkZXMiLCJlIiwiZ2V0RXZlbnRIYW5kbGVyT2ZDaGlsZCIsIm9yaWdpbmFsSGFuZGxlciIsImRhdGEiLCJpbmRleCIsImFkYXB0RXZlbnRzT2ZDaGlsZCIsIml0ZW0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/recharts/es6/util/types.js\n");
/***/ })
};
;