Hacked By AnonymousFox

Current Path : C:/AppServ/www/financial/stacked/code/es5/modules/
Upload File :
Current File : C:/AppServ/www/financial/stacked/code/es5/modules/stock.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/broken-axis\n * @requires highcharts\n *\n * (c) 2009-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Series\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"Series\"][\"types\"][\"column\"], require(\"highcharts\")[\"StackItem\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/stock\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Axis\"], [\"highcharts/highcharts\",\"Point\"], [\"highcharts/highcharts\",\"Series\"], [\"highcharts/highcharts\",\"Color\"], [\"highcharts/highcharts\",\"SeriesRegistry\"], [\"highcharts/highcharts\",\"RendererRegistry\"], [\"highcharts/highcharts\",\"SVGRenderer\"], [\"highcharts/highcharts\",\"SVGElement\"], [\"highcharts/highcharts\",\"Chart\"], [\"highcharts/highcharts\",\"Templating\"], [\"highcharts/highcharts\",\"Series\",\"types\",\"column\"], [\"highcharts/highcharts\",\"StackItem\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/stock\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Axis\"], require(\"highcharts\")[\"Point\"], require(\"highcharts\")[\"Series\"], require(\"highcharts\")[\"Color\"], require(\"highcharts\")[\"SeriesRegistry\"], require(\"highcharts\")[\"RendererRegistry\"], require(\"highcharts\")[\"SVGRenderer\"], require(\"highcharts\")[\"SVGElement\"], require(\"highcharts\")[\"Chart\"], require(\"highcharts\")[\"Templating\"], require(\"highcharts\")[\"Series\"][\"types\"][\"column\"], require(\"highcharts\")[\"StackItem\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Axis\"], root[\"Highcharts\"][\"Point\"], root[\"Highcharts\"][\"Series\"], root[\"Highcharts\"][\"Color\"], root[\"Highcharts\"][\"SeriesRegistry\"], root[\"Highcharts\"][\"RendererRegistry\"], root[\"Highcharts\"][\"SVGRenderer\"], root[\"Highcharts\"][\"SVGElement\"], root[\"Highcharts\"][\"Chart\"], root[\"Highcharts\"][\"Templating\"], root[\"Highcharts\"][\"Series\"][\"types\"][\"column\"], root[\"Highcharts\"][\"StackItem\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__532__, __WEBPACK_EXTERNAL_MODULE__260__, __WEBPACK_EXTERNAL_MODULE__820__, __WEBPACK_EXTERNAL_MODULE__620__, __WEBPACK_EXTERNAL_MODULE__512__, __WEBPACK_EXTERNAL_MODULE__608__, __WEBPACK_EXTERNAL_MODULE__540__, __WEBPACK_EXTERNAL_MODULE__28__, __WEBPACK_EXTERNAL_MODULE__960__, __WEBPACK_EXTERNAL_MODULE__984__, __WEBPACK_EXTERNAL_MODULE__448__, __WEBPACK_EXTERNAL_MODULE__184__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 532:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__532__;\n\n/***/ }),\n\n/***/ 960:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__960__;\n\n/***/ }),\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__260__;\n\n/***/ }),\n\n/***/ 608:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__608__;\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__28__;\n\n/***/ }),\n\n/***/ 540:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__540__;\n\n/***/ }),\n\n/***/ 448:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__448__;\n\n/***/ }),\n\n/***/ 820:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__820__;\n\n/***/ }),\n\n/***/ 512:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__512__;\n\n/***/ }),\n\n/***/ 184:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__184__;\n\n/***/ }),\n\n/***/ 984:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__984__;\n\n/***/ }),\n\n/***/ 944:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__944__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n  \"default\": function() { return /* binding */ stock_src; }\n});\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\"],\"commonjs\":[\"highcharts\"],\"commonjs2\":[\"highcharts\"],\"root\":[\"Highcharts\"]}\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_ = __webpack_require__(944);\nvar highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default = /*#__PURE__*/__webpack_require__.n(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Axis\"],\"commonjs\":[\"highcharts\",\"Axis\"],\"commonjs2\":[\"highcharts\",\"Axis\"],\"root\":[\"Highcharts\",\"Axis\"]}\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_ = __webpack_require__(532);\nvar highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default = /*#__PURE__*/__webpack_require__.n(highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Point\"],\"commonjs\":[\"highcharts\",\"Point\"],\"commonjs2\":[\"highcharts\",\"Point\"],\"root\":[\"Highcharts\",\"Point\"]}\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_ = __webpack_require__(260);\nvar highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default = /*#__PURE__*/__webpack_require__.n(highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\"],\"commonjs\":[\"highcharts\",\"Series\"],\"commonjs2\":[\"highcharts\",\"Series\"],\"root\":[\"Highcharts\",\"Series\"]}\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_ = __webpack_require__(820);\nvar highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_);\n;// ./code/es5/es-modules/Series/DataModifyComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar pointTooltipFormatter = (highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default()).prototype.tooltipFormatter;\n\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, arrayMax = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMax, arrayMin = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMin, correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Composition\n *\n * */\nvar DataModifyComposition;\n(function (DataModifyComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Extends the series, axis and point classes with\n     * compare and cumulative support.\n     *\n     * @private\n     *\n     * @param SeriesClass\n     * Series class to use.\n     *\n     * @param AxisClass\n     * Axis class to extend.\n     *\n     * @param PointClass\n     * Point class to use.\n     */\n    function compose(SeriesClass, AxisClass, PointClass) {\n        var axisProto = AxisClass.prototype,\n            pointProto = PointClass.prototype,\n            seriesProto = SeriesClass.prototype;\n        if (!seriesProto.setCompare) {\n            seriesProto.setCompare = seriesSetCompare;\n            seriesProto.setCumulative = seriesSetCumulative;\n            addEvent(SeriesClass, 'afterInit', afterInit);\n            addEvent(SeriesClass, 'afterGetExtremes', afterGetExtremes);\n            addEvent(SeriesClass, 'afterProcessData', afterProcessData);\n        }\n        if (!axisProto.setCompare) {\n            axisProto.setCompare = axisSetCompare;\n            axisProto.setModifier = setModifier;\n            axisProto.setCumulative = axisSetCumulative;\n            pointProto.tooltipFormatter = tooltipFormatter;\n        }\n        return SeriesClass;\n    }\n    DataModifyComposition.compose = compose;\n    /* ********************************************************************** *\n     *  Start shared compare and cumulative logic                             *\n     * ********************************************************************** */\n    /**\n     * Shared code for the axis.setCompare() and the axis.setCumulative()\n     * methods. Inits the 'compare' or the 'cumulative' mode.\n     * @private\n     */\n    function setModifier(mode, modeState, redraw) {\n        if (!this.isXAxis) {\n            this.series.forEach(function (series) {\n                if (mode === 'compare' &&\n                    typeof modeState !== 'boolean') {\n                    series.setCompare(modeState, false);\n                }\n                else if (mode === 'cumulative' &&\n                    !isString(modeState)) {\n                    series.setCumulative(modeState, false);\n                }\n            });\n            if (pick(redraw, true)) {\n                this.chart.redraw();\n            }\n        }\n    }\n    /**\n     * Extend the tooltip formatter by adding support for the point.change\n     * variable as well as the changeDecimals option.\n     *\n     * @ignore\n     * @function Highcharts.Point#tooltipFormatter\n     *\n     * @param {string} pointFormat\n     */\n    function tooltipFormatter(pointFormat) {\n        var point = this, numberFormatter = point.series.chart.numberFormatter, replace = function (value) {\n                pointFormat = pointFormat.replace('{point.' + value + '}', (point[value] > 0 && value === 'change' ? '+' : '') +\n                    numberFormatter(point[value], pick(point.series.tooltipOptions.changeDecimals, 2)));\n        };\n        if (defined(point.change)) {\n            replace('change');\n        }\n        if (defined(point.cumulativeSum)) {\n            replace('cumulativeSum');\n        }\n        return pointTooltipFormatter.apply(this, [pointFormat]);\n    }\n    /**\n     * Extend series.init by adding a methods to modify the y values used\n     * for plotting on the y axis. For compare mode, this method is called both\n     * from the axis when finding dataMin and dataMax,\n     * and from the series.translate method.\n     *\n     * @ignore\n     * @function Highcharts.Series#init\n     */\n    function afterInit() {\n        var compare = this.options.compare;\n        var dataModify;\n        if (compare === 'percent' ||\n            compare === 'value' ||\n            this.options.cumulative) {\n            dataModify = new Additions(this);\n            if (compare === 'percent' || compare === 'value') {\n                // Set comparison mode\n                dataModify.initCompare(compare);\n            }\n            else {\n                // Set Cumulative Sum mode\n                dataModify.initCumulative();\n            }\n        }\n        this.dataModify = dataModify;\n    }\n    /**\n     * Adjust the extremes (compare and cumulative modify the data).\n     * @private\n     */\n    function afterGetExtremes(e) {\n        var dataExtremes = e.dataExtremes,\n            activeYData = dataExtremes.activeYData;\n        if (this.dataModify && dataExtremes) {\n            var extremes = void 0;\n            if (this.options.compare) {\n                extremes = [\n                    this.dataModify.modifyValue(dataExtremes.dataMin),\n                    this.dataModify.modifyValue(dataExtremes.dataMax)\n                ];\n            }\n            else if (this.options.cumulative &&\n                isArray(activeYData) &&\n                // If only one y visible, sum doesn't change\n                // so no need to change extremes\n                activeYData.length >= 2) {\n                extremes = Additions.getCumulativeExtremes(activeYData);\n            }\n            if (extremes) {\n                dataExtremes.dataMin = arrayMin(extremes);\n                dataExtremes.dataMax = arrayMax(extremes);\n            }\n        }\n    }\n    /* ********************************************************************** *\n     *  End shared compare and cumulative logic                               *\n     * ********************************************************************** */\n    /* ********************************************************************** *\n     *  Start value compare logic                                             *\n     * ********************************************************************** */\n    /**\n     * Highcharts Stock only. Set the\n     * [compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n     * mode of the series after render time.\n     * In most cases it is more useful running\n     * {@link Axis#setCompare} on the X axis to update all its series.\n     *\n     * @function Highcharts.Series#setCompare\n     *\n     * @param {string|null} [compare]\n     *        Can be one of `undefined` (default), `null`, `\"percent\"`\n     *        or `\"value\"`.\n     *\n     * @param {boolean} [redraw=true]\n     *        Whether to redraw the chart or to wait for a later call to\n     *        {@link Chart#redraw}.\n     */\n    function seriesSetCompare(compare, redraw) {\n        // Survive to export, #5485 (and for options generally)\n        this.options.compare = this.userOptions.compare = compare;\n        // Fire series.init() that will set or delete series.dataModify\n        this.update({}, pick(redraw, true));\n        if (this.dataModify && (compare === 'value' || compare === 'percent')) {\n            this.dataModify.initCompare(compare);\n        }\n        else {\n            // When disabling, clear the points\n            this.points.forEach(function (point) {\n                delete point.change;\n            });\n        }\n    }\n    /**\n     * Extend series.processData by finding the first y value in the plot area,\n     * used for comparing the following values\n     *\n     * @ignore\n     * @function Highcharts.Series#processData\n     */\n    function afterProcessData() {\n        var series = this, \n            // For series with more than one value (range, OHLC etc), compare\n            // against close or the pointValKey (#4922, #3112, #9854)\n            compareColumn = this.getColumn((series.pointArrayMap &&\n                (series.options.pointValKey || series.pointValKey)) || 'y',\n            true);\n        if (series.xAxis && // Not pies\n            compareColumn.length &&\n            series.dataModify) {\n            var processedXData = series.getColumn('x',\n                true),\n                length_1 = series.dataTable.rowCount,\n                compareStart = series.options.compareStart === true ? 0 : 1;\n            // Find the first value for comparison\n            for (var i = 0; i < length_1 - compareStart; i++) {\n                var compareValue = compareColumn[i];\n                if (isNumber(compareValue) &&\n                    compareValue !== 0 &&\n                    processedXData[i + compareStart] >= (series.xAxis.min || 0)) {\n                    series.dataModify.compareValue = compareValue;\n                    break;\n                }\n            }\n        }\n    }\n    /**\n     * Highcharts Stock only. Set the compare mode on all series\n     * belonging to a Y axis.\n     *\n     * @see [plotOptions.series.compare](https://api.highcharts.com/highstock/plotOptions.series.compare)\n     *\n     * @sample stock/members/axis-setcompare/\n     *         Set compare\n     *\n     * @function Highcharts.Axis#setCompare\n     *\n     * @param {string|null} [compare]\n     *        The compare mode. Can be one of `undefined` (default), `null`,\n     *        `\"value\"` or `\"percent\"`.\n     *\n     * @param {boolean} [redraw=true]\n     *        Whether to redraw the chart or to wait for a later call to\n     *        {@link Chart#redraw}.\n     */\n    function axisSetCompare(compare, redraw) {\n        this.setModifier('compare', compare, redraw);\n    }\n    /* ********************************************************************** *\n     *  End value compare logic                                               *\n     * ********************************************************************** */\n    /* ********************************************************************** *\n     *  Start Cumulative Sum logic, author: Rafal Sebestjanski                *\n     * ********************************************************************** */\n    /**\n     * Highcharts Stock only. Set the\n     * [cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n     * mode of the series after render time.\n     * In most cases it is more useful running\n     * {@link Axis#setCumulative} on the Y axis to update all its series.\n     *\n     * @function Highcharts.Series#setCumulative\n     *\n     * @param {boolean} [cumulative=false]\n     *        Either enable or disable Cumulative Sum mode.\n     *        Can be one of `false` (default) or `true`.\n     *\n     * @param {boolean} [redraw=true]\n     *        Whether to redraw the chart or to wait for a later call to\n     *        {@link Chart#redraw}.\n     */\n    function seriesSetCumulative(cumulative, redraw) {\n        // Set default value to false\n        cumulative = pick(cumulative, false);\n        // Survive to export, #5485 (and for options generally)\n        this.options.cumulative = this.userOptions.cumulative = cumulative;\n        // Fire series.init() that will set or delete series.dataModify\n        this.update({}, pick(redraw, true));\n        // If should, turn on the Cumulative Sum mode\n        if (this.dataModify) {\n            this.dataModify.initCumulative();\n        }\n        else {\n            // When disabling, clear the points\n            this.points.forEach(function (point) {\n                delete point.cumulativeSum;\n            });\n        }\n    }\n    /**\n     * Highcharts Stock only. Set the cumulative mode on all series\n     * belonging to a Y axis.\n     *\n     * @see [plotOptions.series.cumulative](https://api.highcharts.com/highstock/plotOptions.series.cumulative)\n     *\n     * @sample stock/members/axis-setcumulative/\n     *         Set cumulative\n     *\n     * @function Highcharts.Axis#setCumulative\n     *\n     * @param {boolean} [cumulative]\n     *        Whether to disable or enable the cumulative mode.\n     *        Can be one of `undefined` (default, treated as `false`),\n     *        `false` or `true`.\n     *\n     * @param {boolean} [redraw=true]\n     *        Whether to redraw the chart or to wait for a later call to\n     *        {@link Chart#redraw}.\n     */\n    function axisSetCumulative(cumulative, redraw) {\n        this.setModifier('cumulative', cumulative, redraw);\n    }\n    /* *\n     *\n     *  Classes\n     *\n     * */\n    /**\n     * @private\n     */\n    var Additions = /** @class */ (function () {\n            /* *\n             *\n             *  Constructors\n             *\n             * */\n            /**\n             * @private\n             */\n            function Additions(series) {\n                this.series = series;\n        }\n        /* *\n        *\n        *  Functions\n        *\n        * */\n        /**\n         * @private\n         */\n        Additions.prototype.modifyValue = function () {\n            return 0;\n        };\n        /**\n         * @ignore\n         * @function Highcharts.Series#getCumulativeExtremes\n         *\n         * @param {Array} [activeYData]\n         *        An array cointaining all the points' y values\n         *        in a visible range.\n         */\n        Additions.getCumulativeExtremes = function (activeYData) {\n            var cumulativeDataMin = Infinity,\n                cumulativeDataMax = -Infinity;\n            activeYData.reduce(function (prev, cur) {\n                var sum = prev + cur;\n                cumulativeDataMin = Math.min(cumulativeDataMin, sum, prev);\n                cumulativeDataMax = Math.max(cumulativeDataMax, sum, prev);\n                return sum;\n            });\n            return [cumulativeDataMin, cumulativeDataMax];\n        };\n        /**\n         * @ignore\n         * @function Highcharts.Series#initCompare\n         *\n         * @param {string} [compare]\n         *        Can be one of `\"percent\"` or `\"value\"`.\n         */\n        Additions.prototype.initCompare = function (compare) {\n            // Set the modifyValue method\n            this.modifyValue = function (value, index) {\n                if (value === null) {\n                    value = 0;\n                }\n                var compareValue = this.compareValue;\n                if (typeof value !== 'undefined' &&\n                    typeof compareValue !== 'undefined') { // #2601, #5814\n                    // Get the modified value\n                    if (compare === 'value') {\n                        value -= compareValue;\n                        // Compare percent\n                    }\n                    else {\n                        var compareBase = this.series.options.compareBase;\n                        value = 100 * (value / compareValue) -\n                            (compareBase === 100 ? 0 : 100);\n                    }\n                    // Record for tooltip etc.\n                    if (typeof index !== 'undefined') {\n                        var point = this.series.points[index];\n                        if (point) {\n                            point.change = value;\n                        }\n                    }\n                    return value;\n                }\n                return 0;\n            };\n        };\n        /**\n         * @ignore\n         * @function Highcharts.Series#initCumulative\n         */\n        Additions.prototype.initCumulative = function () {\n            // Set the modifyValue method\n            this.modifyValue = function (value, index) {\n                if (value === null) {\n                    value = 0;\n                }\n                if (value !== void 0 && index !== void 0) {\n                    var prevPoint = index > 0 ?\n                            this.series.points[index - 1] : null;\n                    // Get the modified value\n                    if (prevPoint && prevPoint.cumulativeSum) {\n                        value = correctFloat(prevPoint.cumulativeSum + value);\n                    }\n                    // Record for tooltip etc.\n                    var point = this.series.points[index];\n                    var cumulativeStart = point.series.options.cumulativeStart,\n                        withinRange = point.x <= this.series.xAxis.max &&\n                            point.x >= this.series.xAxis.min;\n                    if (point) {\n                        if (!cumulativeStart || withinRange) {\n                            point.cumulativeSum = value;\n                        }\n                        else {\n                            point.cumulativeSum = void 0;\n                        }\n                    }\n                    return value;\n                }\n                return 0;\n            };\n        };\n        return Additions;\n    }());\n    DataModifyComposition.Additions = Additions;\n})(DataModifyComposition || (DataModifyComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Series_DataModifyComposition = (DataModifyComposition);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Compare the values of the series against the first non-null, non-\n * zero value in the visible range. The y axis will show percentage\n * or absolute change depending on whether `compare` is set to `\"percent\"`\n * or `\"value\"`. When this is applied to multiple series, it allows\n * comparing the development of the series against each other. Adds\n * a `change` field to every point object.\n *\n * @see [compareBase](#plotOptions.series.compareBase)\n * @see [Axis.setCompare()](/class-reference/Highcharts.Axis#setCompare)\n * @see [Series.setCompare()](/class-reference/Highcharts.Series#setCompare)\n *\n * @sample {highstock} stock/plotoptions/series-compare-percent/\n *         Percent\n * @sample {highstock} stock/plotoptions/series-compare-value/\n *         Value\n *\n * @type      {string}\n * @since     1.0.1\n * @product   highstock\n * @validvalue [\"percent\", \"value\"]\n * @apioption plotOptions.series.compare\n */\n/**\n * Defines if comparison should start from the first point within the visible\n * range or should start from the last point **before** the range.\n *\n * In other words, this flag determines if first point within the visible range\n * will have 0% (`compareStart=true`) or should have been already calculated\n * according to the previous point (`compareStart=false`).\n *\n * @sample {highstock} stock/plotoptions/series-comparestart/\n *         Calculate compare within visible range\n *\n * @type      {boolean}\n * @default   false\n * @since     6.0.0\n * @product   highstock\n * @apioption plotOptions.series.compareStart\n */\n/**\n * When [compare](#plotOptions.series.compare) is `percent`, this option\n * dictates whether to use 0 or 100 as the base of comparison.\n *\n * @sample {highstock} stock/plotoptions/series-comparebase/\n *         Compare base is 100\n *\n * @type       {number}\n * @default    0\n * @since      5.0.6\n * @product    highstock\n * @validvalue [0, 100]\n * @apioption  plotOptions.series.compareBase\n */\n/**\n * Cumulative Sum feature replaces points' values with the following formula:\n * `sum of all previous points' values + current point's value`.\n * Works only for points in a visible range.\n * Adds the `cumulativeSum` field to each point object that can be accessed\n * e.g. in the [tooltip.pointFormat](https://api.highcharts.com/highstock/tooltip.pointFormat).\n *\n * With `dataGrouping` enabled, default grouping approximation is set to `sum`.\n *\n * @see [Axis.setCumulative()](/class-reference/Highcharts.Axis#setCumulative)\n * @see [Series.setCumulative()](/class-reference/Highcharts.Series#setCumulative)\n *\n * @sample {highstock} stock/plotoptions/series-cumulative-sum/\n *         Cumulative Sum\n *\n * @type      {boolean}\n * @default   false\n * @since 9.3.0\n * @product   highstock\n * @apioption plotOptions.series.cumulative\n */\n/**\n * Defines if cumulation should start from the first point within the visible\n * range or should start from the last point **before** the range.\n *\n * In other words, this flag determines if first point within the visible range\n * will start at 0 (`cumulativeStart=true`) or should have been already calculated\n * according to the previous point (`cumulativeStart=false`).\n *\n * @sample {highstock} stock/plotoptions/series-cumulativestart/\n *         Cumulative Start\n *\n * @type      {boolean}\n * @default   false\n * @since 11.4.2\n * @product   highstock\n * @apioption plotOptions.series.cumulativeStart\n */\n''; // Keeps doclets above in transpiled file\n\n;// ./code/es5/es-modules/Stock/Navigator/ChartNavigatorComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar ChartNavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, ChartNavigatorComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Constants\n *\n * */\nvar composedMembers = [];\n/* *\n *\n *  Variables\n *\n * */\nvar NavigatorConstructor;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction compose(ChartClass, NavigatorClass) {\n    if (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().pushUnique(composedMembers, ChartClass)) {\n        var chartProto = ChartClass.prototype;\n        NavigatorConstructor = NavigatorClass;\n        chartProto.callbacks.push(onChartCallback);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterAddSeries', onChartAfterAddSeries);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);\n        ChartNavigatorComposition_addEvent(ChartClass, 'afterUpdate', onChartAfterUpdate);\n        ChartNavigatorComposition_addEvent(ChartClass, 'beforeRender', onChartBeforeRender);\n        ChartNavigatorComposition_addEvent(ChartClass, 'beforeShowResetZoom', onChartBeforeShowResetZoom);\n        ChartNavigatorComposition_addEvent(ChartClass, 'update', onChartUpdate);\n    }\n}\n/**\n * Handle adding new series.\n * @private\n */\nfunction onChartAfterAddSeries() {\n    if (this.navigator) {\n        // Recompute which series should be shown in navigator, and add them\n        this.navigator.setBaseSeries(null, false);\n    }\n}\n/**\n * For stock charts, extend the Chart.setChartSize method so that we can set the\n * final top position of the navigator once the height of the chart, including\n * the legend, is determined. #367. We can't use Chart.getMargins, because\n * labels offsets are not calculated yet.\n * @private\n */\nfunction onChartAfterSetChartSize() {\n    var _a;\n    var legend = this.legend,\n        navigator = this.navigator;\n    var legendOptions,\n        xAxis,\n        yAxis;\n    if (navigator) {\n        legendOptions = legend && legend.options;\n        xAxis = navigator.xAxis;\n        yAxis = navigator.yAxis;\n        var scrollbarHeight = navigator.scrollbarHeight,\n            scrollButtonSize = navigator.scrollButtonSize;\n        // Compute the top position\n        if (this.inverted) {\n            navigator.left = navigator.opposite ?\n                this.chartWidth - scrollbarHeight -\n                    navigator.height :\n                this.spacing[3] + scrollbarHeight;\n            navigator.top = this.plotTop + scrollButtonSize;\n        }\n        else {\n            navigator.left = ChartNavigatorComposition_pick(xAxis.left, this.plotLeft + scrollButtonSize);\n            navigator.top = navigator.navigatorOptions.top ||\n                this.chartHeight -\n                    navigator.height -\n                    scrollbarHeight -\n                    (((_a = this.scrollbar) === null || _a === void 0 ? void 0 : _a.options.margin) || 0) -\n                    this.spacing[2] -\n                    (this.rangeSelector && this.extraBottomMargin ?\n                        this.rangeSelector.getHeight() :\n                        0) -\n                    ((legendOptions &&\n                        legendOptions.verticalAlign === 'bottom' &&\n                        legendOptions.layout !== 'proximate' && // #13392\n                        legendOptions.enabled &&\n                        !legendOptions.floating) ?\n                        legend.legendHeight +\n                            ChartNavigatorComposition_pick(legendOptions.margin, 10) :\n                        0) -\n                    (this.titleOffset ? this.titleOffset[2] : 0);\n        }\n        if (xAxis && yAxis) { // False if navigator is disabled (#904)\n            if (this.inverted) {\n                xAxis.options.left = yAxis.options.left = navigator.left;\n            }\n            else {\n                xAxis.options.top = yAxis.options.top = navigator.top;\n            }\n            xAxis.setAxisSize();\n            yAxis.setAxisSize();\n        }\n    }\n}\n/**\n * Initialize navigator, if no scrolling exists yet.\n * @private\n */\nfunction onChartAfterUpdate(event) {\n    if (!this.navigator && !this.scroller &&\n        (this.options.navigator.enabled ||\n            this.options.scrollbar.enabled)) {\n        this.scroller = this.navigator = new NavigatorConstructor(this);\n        if (ChartNavigatorComposition_pick(event.redraw, true)) {\n            this.redraw(event.animation); // #7067\n        }\n    }\n}\n/**\n * Initialize navigator for stock charts\n * @private\n */\nfunction onChartBeforeRender() {\n    var options = this.options;\n    if (options.navigator.enabled ||\n        options.scrollbar.enabled) {\n        this.scroller = this.navigator = new NavigatorConstructor(this);\n    }\n}\n/**\n * For Stock charts. For x only zooming, do not to create the zoom button\n * because X axis zooming is already allowed by the Navigator and Range\n * selector. (#9285)\n * @private\n */\nfunction onChartBeforeShowResetZoom() {\n    var chartOptions = this.options,\n        navigator = chartOptions.navigator,\n        rangeSelector = chartOptions.rangeSelector;\n    if (((navigator && navigator.enabled) ||\n        (rangeSelector && rangeSelector.enabled)) &&\n        ((!isTouchDevice &&\n            this.zooming.type === 'x') ||\n            (isTouchDevice && this.zooming.pinchType === 'x'))) {\n        return false;\n    }\n}\n/**\n * @private\n */\nfunction onChartCallback(chart) {\n    var navigator = chart.navigator;\n    // Initialize the navigator\n    if (navigator && chart.xAxis[0]) {\n        var extremes = chart.xAxis[0].getExtremes();\n        navigator.render(extremes.min, extremes.max);\n    }\n}\n/**\n * Merge options, if no scrolling exists yet\n * @private\n */\nfunction onChartUpdate(e) {\n    var navigatorOptions = (e.options.navigator || {}),\n        scrollbarOptions = (e.options.scrollbar || {});\n    if (!this.navigator && !this.scroller &&\n        (navigatorOptions.enabled || scrollbarOptions.enabled)) {\n        merge(true, this.options.navigator, navigatorOptions);\n        merge(true, this.options.scrollbar, scrollbarOptions);\n        delete e.options.navigator;\n        delete e.options.scrollbar;\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar ChartNavigatorComposition = {\n    compose: compose\n};\n/* harmony default export */ var Navigator_ChartNavigatorComposition = (ChartNavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/NavigatorAxisComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar NavigatorAxisComposition_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\nvar NavigatorAxisComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, NavigatorAxisComposition_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, NavigatorAxisComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NavigatorAxisComposition_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, NavigatorAxisComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction onAxisInit() {\n    var axis = this;\n    if (!axis.navigatorAxis) {\n        axis.navigatorAxis = new NavigatorAxisAdditions(axis);\n    }\n}\n/**\n * For Stock charts, override selection zooming with some special features\n * because X axis zooming is already allowed by the Navigator and Range\n * selector.\n * @private\n */\nfunction onAxisSetExtremes(e) {\n    var axis = this,\n        chart = axis.chart,\n        chartOptions = chart.options,\n        navigator = chartOptions.navigator,\n        navigatorAxis = axis.navigatorAxis,\n        pinchType = chart.zooming.pinchType,\n        rangeSelector = chartOptions.rangeSelector,\n        zoomType = chart.zooming.type;\n    var zoomed;\n    if (axis.isXAxis &&\n        ((navigator === null || navigator === void 0 ? void 0 : navigator.enabled) || (rangeSelector === null || rangeSelector === void 0 ? void 0 : rangeSelector.enabled))) {\n        // For y only zooming, ignore the X axis completely\n        if (zoomType === 'y' && e.trigger === 'zoom') {\n            zoomed = false;\n            // For xy zooming, record the state of the zoom before zoom selection,\n            // then when the reset button is pressed, revert to this state. This\n            // should apply only if the chart is initialized with a range (#6612),\n            // otherwise zoom all the way out.\n        }\n        else if (((e.trigger === 'zoom' && zoomType === 'xy') ||\n            (NavigatorAxisComposition_isTouchDevice && pinchType === 'xy')) &&\n            axis.options.range) {\n            var previousZoom = navigatorAxis.previousZoom;\n            // Minimum defined, zooming in\n            if (NavigatorAxisComposition_defined(e.min)) {\n                navigatorAxis.previousZoom = [axis.min, axis.max];\n                // Minimum undefined, resetting zoom\n            }\n            else if (previousZoom) {\n                e.min = previousZoom[0];\n                e.max = previousZoom[1];\n                navigatorAxis.previousZoom = void 0;\n            }\n        }\n    }\n    if (typeof zoomed !== 'undefined') {\n        e.preventDefault();\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * @private\n * @class\n */\nvar NavigatorAxisAdditions = /** @class */ (function () {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    function NavigatorAxisAdditions(axis) {\n        this.axis = axis;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    NavigatorAxisAdditions.compose = function (AxisClass) {\n        if (!AxisClass.keepProps.includes('navigatorAxis')) {\n            AxisClass.keepProps.push('navigatorAxis');\n            NavigatorAxisComposition_addEvent(AxisClass, 'init', onAxisInit);\n            NavigatorAxisComposition_addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);\n        }\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    NavigatorAxisAdditions.prototype.destroy = function () {\n        this.axis = void 0;\n    };\n    /**\n     * Add logic to normalize the zoomed range in order to preserve the pressed\n     * state of range selector buttons\n     *\n     * @private\n     * @function Highcharts.Axis#toFixedRange\n     */\n    NavigatorAxisAdditions.prototype.toFixedRange = function (pxMin, pxMax, fixedMin, fixedMax) {\n        var axis = this.axis,\n            halfPointRange = (axis.pointRange || 0) / 2;\n        var newMin = NavigatorAxisComposition_pick(fixedMin,\n            axis.translate(pxMin,\n            true, !axis.horiz)),\n            newMax = NavigatorAxisComposition_pick(fixedMax,\n            axis.translate(pxMax,\n            true, !axis.horiz));\n        // Add/remove half point range to/from the extremes (#1172)\n        if (!NavigatorAxisComposition_defined(fixedMin)) {\n            newMin = NavigatorAxisComposition_correctFloat(newMin + halfPointRange);\n        }\n        if (!NavigatorAxisComposition_defined(fixedMax)) {\n            newMax = NavigatorAxisComposition_correctFloat(newMax - halfPointRange);\n        }\n        if (!NavigatorAxisComposition_isNumber(newMin) || !NavigatorAxisComposition_isNumber(newMax)) { // #1195, #7411\n            newMin = newMax = void 0;\n        }\n        return {\n            min: newMin,\n            max: newMax\n        };\n    };\n    return NavigatorAxisAdditions;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var NavigatorAxisComposition = (NavigatorAxisAdditions);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Color\"],\"commonjs\":[\"highcharts\",\"Color\"],\"commonjs2\":[\"highcharts\",\"Color\"],\"root\":[\"Highcharts\",\"Color\"]}\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_ = __webpack_require__(620);\nvar highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default = /*#__PURE__*/__webpack_require__.n(highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SeriesRegistry\"],\"commonjs\":[\"highcharts\",\"SeriesRegistry\"],\"commonjs2\":[\"highcharts\",\"SeriesRegistry\"],\"root\":[\"Highcharts\",\"SeriesRegistry\"]}\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_ = __webpack_require__(512);\nvar highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_);\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar color = (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default()).parse;\n\nvar seriesTypes = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes;\n/* *\n *\n *  Constants\n *\n * */\n/**\n * The navigator is a small series below the main series, displaying\n * a view of the entire data set. It provides tools to zoom in and\n * out on parts of the data as well as panning across the dataset.\n *\n * @product      highstock gantt\n * @optionparent navigator\n */\nvar NavigatorDefaults = {\n    /**\n     * Whether the navigator and scrollbar should adapt to updated data\n     * in the base X axis. When loading data async, as in the demo below,\n     * this should be `false`. Otherwise new data will trigger navigator\n     * redraw, which will cause unwanted looping. In the demo below, the\n     * data in the navigator is set only once. On navigating, only the main\n     * chart content is updated.\n     *\n     * @sample {highstock} stock/demo/lazy-loading/\n     *         Set to false with async data loading\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption navigator.adaptToUpdatedData\n     */\n    /**\n     * An integer identifying the index to use for the base series, or a\n     * string representing the id of the series.\n     *\n     * **Note**: As of Highcharts 5.0, this is now a deprecated option.\n     * Prefer [series.showInNavigator](#plotOptions.series.showInNavigator).\n     *\n     * @see [series.showInNavigator](#plotOptions.series.showInNavigator)\n     *\n     * @deprecated\n     * @type      {number|string}\n     * @default   0\n     * @apioption navigator.baseSeries\n     */\n    /**\n     * Enable or disable the navigator.\n     *\n     * @sample {highstock} stock/navigator/enabled/\n     *         Disable the navigator\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption navigator.enabled\n     */\n    /**\n     * When the chart is inverted, whether to draw the navigator on the\n     * opposite side.\n     *\n     * @type      {boolean}\n     * @default   false\n     * @since     5.0.8\n     * @apioption navigator.opposite\n     */\n    /**\n     * The height of the navigator.\n     *\n     * @sample {highstock} stock/navigator/height/\n     *         A higher navigator\n     */\n    height: 40,\n    /**\n     * The distance from the nearest element, the X axis or X axis labels.\n     *\n     * @sample {highstock} stock/navigator/margin/\n     *         A margin of 2 draws the navigator closer to the X axis labels\n     */\n    margin: 25,\n    /**\n     * Whether the mask should be inside the range marking the zoomed\n     * range, or outside. In Highcharts Stock 1.x it was always `false`.\n     *\n     * @sample {highstock} stock/demo/maskinside-false/\n     *         False, mask outside\n     *\n     * @since   2.0\n     */\n    maskInside: true,\n    /**\n     * Options for the handles for dragging the zoomed area.\n     *\n     * @sample {highstock} stock/navigator/handles/\n     *         Colored handles\n     */\n    handles: {\n        /**\n         * Width for handles.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since   6.0.0\n         */\n        width: 7,\n        /**\n         * Border radius of the handles.\n         *\n         * @sample {highstock} stock/navigator/handles-border-radius/\n         *      Border radius on the navigator handles.\n         *\n         * @since 11.4.2\n         */\n        borderRadius: 0,\n        /**\n         * Height for handles.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since   6.0.0\n         */\n        height: 15,\n        /**\n         * Array to define shapes of handles. 0-index for left, 1-index for\n         * right.\n         *\n         * Additionally, the URL to a graphic can be given on this form:\n         * `url(graphic.png)`. Note that for the image to be applied to\n         * exported charts, its URL needs to be accessible by the export\n         * server.\n         *\n         * Custom callbacks for symbol path generation can also be added to\n         * `Highcharts.SVGRenderer.prototype.symbols`. The callback is then\n         * used by its method name, as shown in the demo.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @type    {Array<string>}\n         * @default [\"navigator-handle\", \"navigator-handle\"]\n         * @since   6.0.0\n         */\n        symbols: ['navigator-handle', 'navigator-handle'],\n        /**\n         * Allows to enable/disable handles.\n         *\n         * @since   6.0.0\n         */\n        enabled: true,\n        /**\n         * The width for the handle border and the stripes inside.\n         *\n         * @sample {highstock} stock/navigator/styled-handles/\n         *         Styled handles\n         *\n         * @since     6.0.0\n         * @apioption navigator.handles.lineWidth\n         */\n        lineWidth: 1,\n        /**\n         * The fill for the handle.\n         *\n         * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        backgroundColor: \"#f2f2f2\" /* Palette.neutralColor5 */,\n        /**\n         * The stroke for the handle border and the stripes inside.\n         *\n         * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         */\n        borderColor: \"#999999\" /* Palette.neutralColor40 */\n    },\n    /**\n     * The color of the mask covering the areas of the navigator series\n     * that are currently not visible in the main series. The default\n     * color is bluish with an opacity of 0.3 to see the series below.\n     *\n     * @see In styled mode, the mask is styled with the\n     *      `.highcharts-navigator-mask` and\n     *      `.highcharts-navigator-mask-inside` classes.\n     *\n     * @sample {highstock} stock/navigator/maskfill/\n     *         Blue, semi transparent mask\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default rgba(102,133,194,0.3)\n     */\n    maskFill: color(\"#667aff\" /* Palette.highlightColor60 */).setOpacity(0.3).get(),\n    /**\n     * The color of the line marking the currently zoomed area in the\n     * navigator.\n     *\n     * @sample {highstock} stock/navigator/outline/\n     *         2px blue outline\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default #cccccc\n     */\n    outlineColor: \"#999999\" /* Palette.neutralColor40 */,\n    /**\n     * The width of the line marking the currently zoomed area in the\n     * navigator.\n     *\n     * @see In styled mode, the outline stroke width is set with the\n     *      `.highcharts-navigator-outline` class.\n     *\n     * @sample {highstock} stock/navigator/outline/\n     *         2px blue outline\n     *\n     * @type    {number}\n     */\n    outlineWidth: 1,\n    /**\n     * Options for the navigator series. Available options are the same\n     * as any series, documented at [plotOptions](#plotOptions.series)\n     * and [series](#series).\n     *\n     * Unless data is explicitly defined on navigator.series, the data\n     * is borrowed from the first series in the chart.\n     *\n     * Default series options for the navigator series are:\n     * ```js\n     * series: {\n     *     type: 'areaspline',\n     *     fillOpacity: 0.05,\n     *     dataGrouping: {\n     *         smoothed: true\n     *     },\n     *     lineWidth: 1,\n     *     marker: {\n     *         enabled: false\n     *     }\n     * }\n     * ```\n     *\n     * @see In styled mode, the navigator series is styled with the\n     *      `.highcharts-navigator-series` class.\n     *\n     * @sample {highstock} stock/navigator/series-data/\n     *         Using a separate data set for the navigator\n     * @sample {highstock} stock/navigator/series/\n     *         A green navigator series\n     *\n     * @type {*|Array<*>|Highcharts.SeriesOptionsType|Array<Highcharts.SeriesOptionsType>}\n     */\n    series: {\n        /**\n         * The type of the navigator series.\n         *\n         * Heads up:\n         * In column-type navigator, zooming is limited to at least one\n         * point with its `pointRange`.\n         *\n         * @sample {highstock} stock/navigator/column/\n         *         Column type navigator\n         *\n         * @type    {string}\n         * @default {highstock} `areaspline` if defined, otherwise `line`\n         * @default {gantt} gantt\n         */\n        type: (typeof seriesTypes.areaspline === 'undefined' ?\n            'line' :\n            'areaspline'),\n        /**\n         * The fill opacity of the navigator series.\n         */\n        fillOpacity: 0.05,\n        /**\n         * The pixel line width of the navigator series.\n         */\n        lineWidth: 1,\n        /**\n         * @ignore-option\n         */\n        compare: null,\n        /**\n         * @ignore-option\n         */\n        sonification: {\n            enabled: false\n        },\n        /**\n         * Unless data is explicitly defined, the data is borrowed from the\n         * first series in the chart.\n         *\n         * @type      {Array<number|Array<number|string|null>|object|null>}\n         * @product   highstock\n         * @apioption navigator.series.data\n         */\n        /**\n         * Data grouping options for the navigator series.\n         *\n         * @extends plotOptions.series.dataGrouping\n         */\n        dataGrouping: {\n            approximation: 'average',\n            enabled: true,\n            groupPixelWidth: 2,\n            // Replace smoothed property by anchors, #12455.\n            firstAnchor: 'firstPoint',\n            anchor: 'middle',\n            lastAnchor: 'lastPoint',\n            // Day and week differs from plotOptions.series.dataGrouping\n            units: [\n                ['millisecond', [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]],\n                ['second', [1, 2, 5, 10, 15, 30]],\n                ['minute', [1, 2, 5, 10, 15, 30]],\n                ['hour', [1, 2, 3, 4, 6, 8, 12]],\n                ['day', [1, 2, 3, 4]],\n                ['week', [1, 2, 3]],\n                ['month', [1, 3, 6]],\n                ['year', null]\n            ]\n        },\n        /**\n         * Data label options for the navigator series. Data labels are\n         * disabled by default on the navigator series.\n         *\n         * @extends plotOptions.series.dataLabels\n         */\n        dataLabels: {\n            enabled: false,\n            zIndex: 2 // #1839\n        },\n        id: 'highcharts-navigator-series',\n        className: 'highcharts-navigator-series',\n        /**\n         * Sets the fill color of the navigator series.\n         *\n         * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n         * @apioption navigator.series.color\n         */\n        /**\n         * Line color for the navigator series. Allows setting the color\n         * while disallowing the default candlestick setting.\n         *\n         * @type {Highcharts.ColorString|null}\n         */\n        lineColor: null, // #4602\n        marker: {\n            enabled: false\n        },\n        /**\n         * Since Highcharts Stock v8, default value is the same as default\n         * `pointRange` defined for a specific type (e.g. `null` for\n         * column type).\n         *\n         * In Highcharts Stock version < 8, defaults to 0.\n         *\n         * @extends plotOptions.series.pointRange\n         * @type {number|null}\n         * @apioption navigator.series.pointRange\n         */\n        /**\n         * The threshold option. Setting it to 0 will make the default\n         * navigator area series draw its area from the 0 value and up.\n         *\n         * @type {number|null}\n         */\n        threshold: null\n    },\n    /**\n     * Enable or disable navigator sticking to right, while adding new\n     * points. If `undefined`, the navigator sticks to the axis maximum only\n     * if it was already at the maximum prior to adding points.\n     *\n     * @type      {boolean}\n     * @default   undefined\n     * @since 10.2.1\n     * @sample {highstock} stock/navigator/sticktomax-false/\n     * stickToMax set to false\n     * @apioption navigator.stickToMax\n     */\n    /**\n     * Options for the navigator X axis. Default series options for the\n     * navigator xAxis are:\n     * ```js\n     * xAxis: {\n     *     tickWidth: 0,\n     *     lineWidth: 0,\n     *     gridLineWidth: 1,\n     *     tickPixelInterval: 200,\n     *     labels: {\n     *            align: 'left',\n     *         style: {\n     *             color: '#888'\n     *         },\n     *         x: 3,\n     *         y: -4\n     *     }\n     * }\n     * ```\n     *\n     * @extends   xAxis\n     * @excluding linkedTo, maxZoom, minRange, opposite, range, scrollbar,\n     *            showEmpty, maxRange\n     */\n    xAxis: {\n        /**\n         * Additional range on the right side of the xAxis. Works similar to\n         * `xAxis.maxPadding`, but the value is set in terms of axis values,\n         * percentage or pixels.\n         *\n         * If it's a number, it is interpreted as axis values, which in a\n         * datetime axis equals milliseconds.\n         *\n         * If it's a percentage string, is interpreted as percentages of the\n         * axis length. An overscroll of 50% will make a 100px axis 50px longer.\n         *\n         * If it's a pixel string, it is interpreted as a fixed pixel value, but\n         * limited to 90% of the axis length.\n         *\n         * If it's undefined, the value is inherited from `xAxis.overscroll`.\n         *\n         * Can be set for both, main xAxis and navigator's xAxis.\n         *\n         * @type    {number | string | undefined}\n         * @since   6.0.0\n         * @apioption navigator.xAxis.overscroll\n         */\n        className: 'highcharts-navigator-xaxis',\n        tickLength: 0,\n        lineWidth: 0,\n        gridLineColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n        id: 'navigator-x-axis',\n        gridLineWidth: 1,\n        tickPixelInterval: 200,\n        labels: {\n            align: 'left',\n            /**\n             * @type {Highcharts.CSSObject}\n             */\n            style: {\n                /** @ignore */\n                color: \"#000000\" /* Palette.neutralColor100 */,\n                /** @ignore */\n                fontSize: '0.7em',\n                /** @ignore */\n                opacity: 0.6,\n                /** @ignore */\n                textOutline: '2px contrast'\n            },\n            x: 3,\n            y: -4\n        },\n        crosshair: false\n    },\n    /**\n     * Options for the navigator Y axis. Default series options for the\n     * navigator yAxis are:\n     * ```js\n     * yAxis: {\n     *     gridLineWidth: 0,\n     *     startOnTick: false,\n     *     endOnTick: false,\n     *     minPadding: 0.1,\n     *     maxPadding: 0.1,\n     *     labels: {\n     *         enabled: false\n     *     },\n     *     title: {\n     *         text: null\n     *     },\n     *     tickWidth: 0\n     * }\n     * ```\n     *\n     * @extends   yAxis\n     * @excluding height, linkedTo, maxZoom, minRange, ordinal, range,\n     *            showEmpty, scrollbar, top, units, maxRange, minLength,\n     *            maxLength, resize\n     */\n    yAxis: {\n        className: 'highcharts-navigator-yaxis',\n        gridLineWidth: 0,\n        startOnTick: false,\n        endOnTick: false,\n        minPadding: 0.1,\n        id: 'navigator-y-axis',\n        maxPadding: 0.1,\n        labels: {\n            enabled: false\n        },\n        crosshair: false,\n        title: {\n            text: null\n        },\n        tickLength: 0,\n        tickWidth: 0\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Navigator_NavigatorDefaults = (NavigatorDefaults);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Maximum range which can be set using the navigator's handles.\n * Opposite of [xAxis.minRange](#xAxis.minRange).\n *\n * @sample {highstock} stock/navigator/maxrange/\n *         Defined max and min range\n *\n * @type      {number}\n * @since     6.0.0\n * @product   highstock gantt\n * @apioption xAxis.maxRange\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Core/Renderer/SVG/Symbols.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar Symbols_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Symbols_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Symbols_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Functions\n *\n * */\n/* eslint-disable require-jsdoc, valid-jsdoc */\n/**\n *\n */\nfunction arc(cx, cy, w, h, options) {\n    var arc = [];\n    if (options) {\n        var start = options.start || 0,\n            rx = Symbols_pick(options.r,\n            w),\n            ry = Symbols_pick(options.r,\n            h || w), \n            // Subtract a small number to prevent cos and sin of start and end\n            // from becoming equal on 360 arcs (#1561). The size of the circle\n            // affects the constant, therefore the division by `rx`. If the\n            // proximity is too small, the arc disappears. If it is too great, a\n            // gap appears. This can be seen in the animation of the official\n            // bubble demo (#20586).\n            proximity = 0.0002 / (options.borderRadius ? 1 : Math.max(rx, 1)),\n            fullCircle = (Math.abs((options.end || 0) - start - 2 * Math.PI) <\n                proximity),\n            end = (options.end || 0) - (fullCircle ? proximity : 0),\n            innerRadius = options.innerR,\n            open_1 = Symbols_pick(options.open,\n            fullCircle),\n            cosStart = Math.cos(start),\n            sinStart = Math.sin(start),\n            cosEnd = Math.cos(end),\n            sinEnd = Math.sin(end), \n            // Proximity takes care of rounding errors around PI (#6971)\n            longArc = Symbols_pick(options.longArc,\n            end - start - Math.PI < proximity ? 0 : 1);\n        var arcSegment = [\n                'A', // ArcTo\n                rx, // X radius\n                ry, // Y radius\n                0, // Slanting\n                longArc, // Long or short arc\n                Symbols_pick(options.clockwise, 1), // Clockwise\n                cx + rx * cosEnd,\n                cy + ry * sinEnd\n            ];\n        arcSegment.params = { start: start, end: end, cx: cx, cy: cy }; // Memo for border radius\n        arc.push([\n            'M',\n            cx + rx * cosStart,\n            cy + ry * sinStart\n        ], arcSegment);\n        if (Symbols_defined(innerRadius)) {\n            arcSegment = [\n                'A', // ArcTo\n                innerRadius, // X radius\n                innerRadius, // Y radius\n                0, // Slanting\n                longArc, // Long or short arc\n                // Clockwise - opposite to the outer arc clockwise\n                Symbols_defined(options.clockwise) ? 1 - options.clockwise : 0,\n                cx + innerRadius * cosStart,\n                cy + innerRadius * sinStart\n            ];\n            // Memo for border radius\n            arcSegment.params = {\n                start: end,\n                end: start,\n                cx: cx,\n                cy: cy\n            };\n            arc.push(open_1 ?\n                [\n                    'M',\n                    cx + innerRadius * cosEnd,\n                    cy + innerRadius * sinEnd\n                ] : [\n                'L',\n                cx + innerRadius * cosEnd,\n                cy + innerRadius * sinEnd\n            ], arcSegment);\n        }\n        if (!open_1) {\n            arc.push(['Z']);\n        }\n    }\n    return arc;\n}\n/**\n * Callout shape used for default tooltips.\n */\nfunction callout(x, y, w, h, options) {\n    var arrowLength = 6,\n        halfDistance = 6,\n        r = Math.min((options && options.r) || 0,\n        w,\n        h),\n        safeDistance = r + halfDistance,\n        anchorX = options && options.anchorX,\n        anchorY = options && options.anchorY || 0;\n    var path = roundedRect(x,\n        y,\n        w,\n        h, { r: r });\n    if (!Symbols_isNumber(anchorX)) {\n        return path;\n    }\n    // Do not render a connector, if anchor starts inside the label\n    if (anchorX < w && anchorX > 0 && anchorY < h && anchorY > 0) {\n        return path;\n    }\n    // Anchor on right side\n    if (x + anchorX > w - safeDistance) {\n        // Chevron\n        if (anchorY > y + safeDistance &&\n            anchorY < y + h - safeDistance) {\n            path.splice(3, 1, ['L', x + w, anchorY - halfDistance], ['L', x + w + arrowLength, anchorY], ['L', x + w, anchorY + halfDistance], ['L', x + w, y + h - r]);\n            // Simple connector\n        }\n        else {\n            if (anchorX < w) { // Corner connector\n                var isTopCorner = anchorY < y + safeDistance,\n                    cornerY = isTopCorner ? y : y + h,\n                    sliceStart = isTopCorner ? 2 : 5;\n                path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + w - r, cornerY]);\n            }\n            else { // Side connector\n                path.splice(3, 1, ['L', x + w, h / 2], ['L', anchorX, anchorY], ['L', x + w, h / 2], ['L', x + w, y + h - r]);\n            }\n        }\n        // Anchor on left side\n    }\n    else if (x + anchorX < safeDistance) {\n        // Chevron\n        if (anchorY > y + safeDistance &&\n            anchorY < y + h - safeDistance) {\n            path.splice(7, 1, ['L', x, anchorY + halfDistance], ['L', x - arrowLength, anchorY], ['L', x, anchorY - halfDistance], ['L', x, y + r]);\n            // Simple connector\n        }\n        else {\n            if (anchorX > 0) { // Corner connector\n                var isTopCorner = anchorY < y + safeDistance,\n                    cornerY = isTopCorner ? y : y + h,\n                    sliceStart = isTopCorner ? 1 : 6;\n                path.splice(sliceStart, 0, ['L', anchorX, anchorY], ['L', x + r, cornerY]);\n            }\n            else { // Side connector\n                path.splice(7, 1, ['L', x, h / 2], ['L', anchorX, anchorY], ['L', x, h / 2], ['L', x, y + r]);\n            }\n        }\n    }\n    else if ( // Replace bottom\n    anchorY > h &&\n        anchorX < w - safeDistance) {\n        path.splice(5, 1, ['L', anchorX + halfDistance, y + h], ['L', anchorX, y + h + arrowLength], ['L', anchorX - halfDistance, y + h], ['L', x + r, y + h]);\n    }\n    else if ( // Replace top\n    anchorY < 0 &&\n        anchorX > safeDistance) {\n        path.splice(1, 1, ['L', anchorX - halfDistance, y], ['L', anchorX, y - arrowLength], ['L', anchorX + halfDistance, y], ['L', w - r, y]);\n    }\n    return path;\n}\n/**\n *\n */\nfunction circle(x, y, w, h) {\n    // Return a full arc\n    return arc(x + w / 2, y + h / 2, w / 2, h / 2, {\n        start: Math.PI * 0.5,\n        end: Math.PI * 2.5,\n        open: false\n    });\n}\n/**\n *\n */\nfunction diamond(x, y, w, h) {\n    return [\n        ['M', x + w / 2, y],\n        ['L', x + w, y + h / 2],\n        ['L', x + w / 2, y + h],\n        ['L', x, y + h / 2],\n        ['Z']\n    ];\n}\n// #15291\n/**\n *\n */\nfunction rect(x, y, w, h, options) {\n    if (options && options.r) {\n        return roundedRect(x, y, w, h, options);\n    }\n    return [\n        ['M', x, y],\n        ['L', x + w, y],\n        ['L', x + w, y + h],\n        ['L', x, y + h],\n        ['Z']\n    ];\n}\n/**\n *\n */\nfunction roundedRect(x, y, w, h, options) {\n    var r = (options === null || options === void 0 ? void 0 : options.r) || 0;\n    return [\n        ['M', x + r, y],\n        ['L', x + w - r, y], // Top side\n        ['A', r, r, 0, 0, 1, x + w, y + r], // Top-right corner\n        ['L', x + w, y + h - r], // Right side\n        ['A', r, r, 0, 0, 1, x + w - r, y + h], // Bottom-right corner\n        ['L', x + r, y + h], // Bottom side\n        ['A', r, r, 0, 0, 1, x, y + h - r], // Bottom-left corner\n        ['L', x, y + r], // Left side\n        ['A', r, r, 0, 0, 1, x + r, y],\n        ['Z'] // Top-left corner\n    ];\n}\n/**\n *\n */\nfunction triangle(x, y, w, h) {\n    return [\n        ['M', x + w / 2, y],\n        ['L', x + w, y + h],\n        ['L', x, y + h],\n        ['Z']\n    ];\n}\n/**\n *\n */\nfunction triangleDown(x, y, w, h) {\n    return [\n        ['M', x, y],\n        ['L', x + w, y],\n        ['L', x + w / 2, y + h],\n        ['Z']\n    ];\n}\nvar Symbols = {\n    arc: arc,\n    callout: callout,\n    circle: circle,\n    diamond: diamond,\n    rect: rect,\n    roundedRect: roundedRect,\n    square: rect,\n    triangle: triangle,\n    'triangle-down': triangleDown\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var SVG_Symbols = (Symbols);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorSymbols.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\nvar relativeLength = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).relativeLength;\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Draw one of the handles on the side of the zoomed range in the navigator.\n * @private\n */\nfunction navigatorHandle(_x, _y, width, height, options) {\n    if (options === void 0) { options = {}; }\n    var halfWidth = options.width ? options.width / 2 : width,\n        markerPosition = 1.5,\n        r = relativeLength(options.borderRadius || 0,\n        Math.min(halfWidth * 2,\n        height));\n    height = options.height || height;\n    return __spreadArray([\n        ['M', -markerPosition, height / 2 - 3.5],\n        ['L', -markerPosition, height / 2 + 4.5],\n        ['M', markerPosition - 1, height / 2 - 3.5],\n        ['L', markerPosition - 1, height / 2 + 4.5]\n    ], SVG_Symbols.rect(-halfWidth - 1, 0.5, halfWidth * 2 + 1, height, { r: r }), true);\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar NavigatorSymbols = {\n    'navigator-handle': navigatorHandle\n};\n/* harmony default export */ var Navigator_NavigatorSymbols = (NavigatorSymbols);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"RendererRegistry\"],\"commonjs\":[\"highcharts\",\"RendererRegistry\"],\"commonjs2\":[\"highcharts\",\"RendererRegistry\"],\"root\":[\"Highcharts\",\"RendererRegistry\"]}\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_ = __webpack_require__(608);\nvar highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default = /*#__PURE__*/__webpack_require__.n(highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_);\n;// ./code/es5/es-modules/Stock/Utilities/StockUtilities.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar StockUtilities_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Sets the chart.fixedRange to the specified value. If the value is larger\n * than actual range, sets it to the maximum possible range. (#20327)\n *\n * @private\n * @function Highcharts.StockChart#setFixedRange\n * @param {number|undefined} range\n *        Range to set in axis units.\n */\nfunction setFixedRange(range) {\n    var xAxis = this.xAxis[0];\n    if (StockUtilities_defined(xAxis.dataMax) &&\n        StockUtilities_defined(xAxis.dataMin) &&\n        range) {\n        this.fixedRange = Math.min(range, xAxis.dataMax - xAxis.dataMin);\n    }\n    else {\n        this.fixedRange = range;\n    }\n}\nvar StockUtilities = {\n    setFixedRange: setFixedRange\n};\n/* harmony default export */ var Utilities_StockUtilities = (StockUtilities);\n\n;// ./code/es5/es-modules/Stock/Navigator/NavigatorComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar setOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).setOptions;\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\n\nvar getRendererType = (highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default()).getRendererType;\n\nvar NavigatorComposition_setFixedRange = Utilities_StockUtilities.setFixedRange;\n\nvar NavigatorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Variables\n *\n * */\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction NavigatorComposition_compose(ChartClass, AxisClass, SeriesClass) {\n    NavigatorAxisComposition.compose(AxisClass);\n    if (pushUnique(composed, 'Navigator')) {\n        ChartClass.prototype.setFixedRange = NavigatorComposition_setFixedRange;\n        extend(getRendererType().prototype.symbols, Navigator_NavigatorSymbols);\n        NavigatorComposition_addEvent(SeriesClass, 'afterUpdate', onSeriesAfterUpdate);\n        setOptions({ navigator: Navigator_NavigatorDefaults });\n    }\n}\n/**\n * Handle updating series\n * @private\n */\nfunction onSeriesAfterUpdate() {\n    if (this.chart.navigator && !this.options.isInternal) {\n        this.chart.navigator.setBaseSeries(null, false);\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar NavigatorComposition = {\n    compose: NavigatorComposition_compose\n};\n/* harmony default export */ var Navigator_NavigatorComposition = (NavigatorComposition);\n\n;// ./code/es5/es-modules/Core/Axis/ScrollbarAxis.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar ScrollbarAxis_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar ScrollbarAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, ScrollbarAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, ScrollbarAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, ScrollbarAxis_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Composition\n *\n * */\nvar ScrollbarAxis;\n(function (ScrollbarAxis) {\n    /* *\n     *\n     *  Variables\n     *\n     * */\n    var Scrollbar;\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Attaches to axis events to create scrollbars if enabled.\n     *\n     * @private\n     *\n     * @param {Highcharts.Axis} AxisClass\n     * Axis class to extend.\n     *\n     * @param {Highcharts.Scrollbar} ScrollbarClass\n     * Scrollbar class to use.\n     */\n    function compose(AxisClass, ScrollbarClass) {\n        if (ScrollbarAxis_pushUnique(ScrollbarAxis_composed, 'Axis.Scrollbar')) {\n            Scrollbar = ScrollbarClass;\n            ScrollbarAxis_addEvent(AxisClass, 'afterGetOffset', onAxisAfterGetOffset);\n            ScrollbarAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n            ScrollbarAxis_addEvent(AxisClass, 'afterRender', onAxisAfterRender);\n        }\n    }\n    ScrollbarAxis.compose = compose;\n    /** @private */\n    function getExtremes(axis) {\n        var axisMin = ScrollbarAxis_pick(axis.options && axis.options.min,\n            axis.min);\n        var axisMax = ScrollbarAxis_pick(axis.options && axis.options.max,\n            axis.max);\n        return {\n            axisMin: axisMin,\n            axisMax: axisMax,\n            scrollMin: ScrollbarAxis_defined(axis.dataMin) ?\n                Math.min(axisMin, axis.min, axis.dataMin, ScrollbarAxis_pick(axis.threshold, Infinity)) : axisMin,\n            scrollMax: ScrollbarAxis_defined(axis.dataMax) ?\n                Math.max(axisMax, axis.max, axis.dataMax, ScrollbarAxis_pick(axis.threshold, -Infinity)) : axisMax\n        };\n    }\n    /**\n     * Make space for a scrollbar.\n     * @private\n     */\n    function onAxisAfterGetOffset() {\n        var axis = this,\n            scrollbar = axis.scrollbar,\n            opposite = scrollbar && !scrollbar.options.opposite,\n            index = axis.horiz ? 2 : opposite ? 3 : 1;\n        if (scrollbar) {\n            // Reset scrollbars offsets\n            axis.chart.scrollbarsOffsets = [0, 0];\n            axis.chart.axisOffset[index] +=\n                scrollbar.size + (scrollbar.options.margin || 0);\n        }\n    }\n    /**\n     * Wrap axis initialization and create scrollbar if enabled.\n     * @private\n     */\n    function onAxisAfterInit() {\n        var axis = this;\n        if (axis.options &&\n            axis.options.scrollbar &&\n            axis.options.scrollbar.enabled) {\n            // Predefined options:\n            axis.options.scrollbar.vertical = !axis.horiz;\n            axis.options.startOnTick = axis.options.endOnTick = false;\n            axis.scrollbar = new Scrollbar(axis.chart.renderer, axis.options.scrollbar, axis.chart);\n            ScrollbarAxis_addEvent(axis.scrollbar, 'changed', function (e) {\n                var _a = getExtremes(axis),\n                    axisMin = _a.axisMin,\n                    axisMax = _a.axisMax,\n                    unitedMin = _a.scrollMin,\n                    unitedMax = _a.scrollMax,\n                    range = unitedMax - unitedMin;\n                var to,\n                    from;\n                // #12834, scroll when show/hide series, wrong extremes\n                if (!ScrollbarAxis_defined(axisMin) || !ScrollbarAxis_defined(axisMax)) {\n                    return;\n                }\n                if ((axis.horiz && !axis.reversed) ||\n                    (!axis.horiz && axis.reversed)) {\n                    to = unitedMin + range * this.to;\n                    from = unitedMin + range * this.from;\n                }\n                else {\n                    // Y-values in browser are reversed, but this also\n                    // applies for reversed horizontal axis:\n                    to = unitedMin + range * (1 - this.from);\n                    from = unitedMin + range * (1 - this.to);\n                }\n                if (this.shouldUpdateExtremes(e.DOMType)) {\n                    // #17977, set animation to undefined instead of true\n                    var animate = e.DOMType === 'mousemove' ||\n                            e.DOMType === 'touchmove' ? false : void 0;\n                    axis.setExtremes(from, to, true, animate, e);\n                }\n                else {\n                    // When live redraw is disabled, don't change extremes\n                    // Only change the position of the scrollbar thumb\n                    this.setRange(this.from, this.to);\n                }\n            });\n        }\n    }\n    /**\n     * Wrap rendering axis, and update scrollbar if one is created.\n     * @private\n     */\n    function onAxisAfterRender() {\n        var axis = this,\n            _a = getExtremes(axis),\n            scrollMin = _a.scrollMin,\n            scrollMax = _a.scrollMax,\n            scrollbar = axis.scrollbar,\n            offset = (axis.axisTitleMargin + (axis.titleOffset || 0)),\n            scrollbarsOffsets = axis.chart.scrollbarsOffsets,\n            axisMargin = axis.options.margin || 0;\n        var offsetsIndex,\n            from,\n            to;\n        if (scrollbar && scrollbarsOffsets) {\n            if (axis.horiz) {\n                // Reserve space for labels/title\n                if (!axis.opposite) {\n                    scrollbarsOffsets[1] += offset;\n                }\n                scrollbar.position(axis.left, (axis.top +\n                    axis.height +\n                    2 +\n                    scrollbarsOffsets[1] -\n                    (axis.opposite ? axisMargin : 0)), axis.width, axis.height);\n                // Next scrollbar should reserve space for margin (if set)\n                if (!axis.opposite) {\n                    scrollbarsOffsets[1] += axisMargin;\n                }\n                offsetsIndex = 1;\n            }\n            else {\n                // Reserve space for labels/title\n                if (axis.opposite) {\n                    scrollbarsOffsets[0] += offset;\n                }\n                var xPosition = void 0;\n                if (!scrollbar.options.opposite) {\n                    xPosition = axis.opposite ? 0 : axisMargin;\n                }\n                else {\n                    xPosition = axis.left +\n                        axis.width +\n                        2 +\n                        scrollbarsOffsets[0] -\n                        (axis.opposite ? 0 : axisMargin);\n                }\n                scrollbar.position(xPosition, axis.top, axis.width, axis.height);\n                // Next scrollbar should reserve space for margin (if set)\n                if (axis.opposite) {\n                    scrollbarsOffsets[0] += axisMargin;\n                }\n                offsetsIndex = 0;\n            }\n            scrollbarsOffsets[offsetsIndex] += scrollbar.size +\n                (scrollbar.options.margin || 0);\n            if (isNaN(scrollMin) ||\n                isNaN(scrollMax) ||\n                !ScrollbarAxis_defined(axis.min) ||\n                !ScrollbarAxis_defined(axis.max) ||\n                axis.dataMin === axis.dataMax // #10733\n            ) {\n                // Default action: when data extremes are the same or there is\n                // not extremes on the axis, but scrollbar exists, make it\n                // full size\n                scrollbar.setRange(0, 1);\n            }\n            else if (axis.min === axis.max) { // #20359\n                // When the extremes are the same, set the scrollbar to a point\n                // within the extremes range. Utilize pointRange to perform the\n                // calculations. (#20359)\n                var interval = axis.pointRange / (axis.dataMax +\n                        1);\n                from = interval * axis.min;\n                to = interval * (axis.max + 1);\n                scrollbar.setRange(from, to);\n            }\n            else {\n                from = ((axis.min - scrollMin) /\n                    (scrollMax - scrollMin));\n                to = ((axis.max - scrollMin) /\n                    (scrollMax - scrollMin));\n                if ((axis.horiz && !axis.reversed) ||\n                    (!axis.horiz && axis.reversed)) {\n                    scrollbar.setRange(from, to);\n                }\n                else {\n                    // Inverse vertical axis\n                    scrollbar.setRange(1 - to, 1 - from);\n                }\n            }\n        }\n    }\n})(ScrollbarAxis || (ScrollbarAxis = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Axis_ScrollbarAxis = (ScrollbarAxis);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/ScrollbarDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constant\n *\n * */\n/**\n *\n * The scrollbar is a means of panning over the X axis of a stock chart.\n * Scrollbars can also be applied to other types of axes.\n *\n * Another approach to scrollable charts is the [chart.scrollablePlotArea](\n * https://api.highcharts.com/highcharts/chart.scrollablePlotArea) option that\n * is especially suitable for simpler cartesian charts on mobile.\n *\n * In styled mode, all the presentational options for the\n * scrollbar are replaced by the classes `.highcharts-scrollbar-thumb`,\n * `.highcharts-scrollbar-arrow`, `.highcharts-scrollbar-button`,\n * `.highcharts-scrollbar-rifles` and `.highcharts-scrollbar-track`.\n *\n * @sample stock/yaxis/inverted-bar-scrollbar/\n *         A scrollbar on a simple bar chart\n *\n * @product highstock gantt\n * @optionparent scrollbar\n *\n * @private\n */\nvar ScrollbarDefaults = {\n    /**\n     * The height of the scrollbar. If `buttonsEnabled` is true , the height\n     * also applies to the width of the scroll arrows so that they are always\n     * squares.\n     *\n     * @sample stock/scrollbar/style/\n     *         Non-default height\n     *\n     * @type    {number}\n     */\n    height: 10,\n    /**\n     * The border rounding radius of the bar.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    barBorderRadius: 5,\n    /**\n     * The corner radius of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    buttonBorderRadius: 0,\n    /**\n     * Enable or disable the buttons at the end of the scrollbar.\n     *\n     * @since 11.0.0\n     */\n    buttonsEnabled: false,\n    /**\n     * Enable or disable the scrollbar.\n     *\n     * @sample stock/scrollbar/enabled/\n     *         Disable the scrollbar, only use navigator\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption scrollbar.enabled\n     */\n    /**\n     * Whether to redraw the main chart as the scrollbar or the navigator\n     * zoomed window is moved. Defaults to `true` for modern browsers and\n     * `false` for legacy IE browsers as well as mobile devices.\n     *\n     * @sample stock/scrollbar/liveredraw\n     *         Setting live redraw to false\n     *\n     * @type  {boolean}\n     * @since 1.3\n     */\n    liveRedraw: void 0,\n    /**\n     * The margin between the scrollbar and its axis when the scrollbar is\n     * applied directly to an axis, or the navigator in case that is enabled.\n     * Defaults to 10 for axis, 0 for navigator.\n     *\n     * @type {number|undefined}\n     */\n    margin: void 0,\n    /**\n     * The minimum width of the scrollbar.\n     *\n     * @since 1.2.5\n     */\n    minWidth: 6,\n    /** @ignore-option */\n    opposite: true,\n    /**\n     * Whether to show or hide the scrollbar when the scrolled content is\n     * zoomed out to it full extent.\n     *\n     * @type      {boolean}\n     * @default   true\n     * @apioption scrollbar.showFull\n     */\n    step: 0.2,\n    /**\n     * The z index of the scrollbar group.\n     */\n    zIndex: 3,\n    /**\n     * The background color of the scrollbar itself.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    barBackgroundColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The width of the bar's border.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    barBorderWidth: 0,\n    /**\n     * The color of the scrollbar's border.\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    barBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The color of the small arrow inside the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonArrowColor: \"#333333\" /* Palette.neutralColor80 */,\n    /**\n     * The color of scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonBackgroundColor: \"#e6e6e6\" /* Palette.neutralColor10 */,\n    /**\n     * The color of the border of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    buttonBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The border width of the scrollbar buttons.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    buttonBorderWidth: 1,\n    /**\n     * The color of the small rifles in the middle of the scrollbar.\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    rifleColor: 'none',\n    /**\n     * The color of the track background.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    trackBackgroundColor: 'rgba(255, 255, 255, 0.001)', // #18922\n    /**\n     * The color of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     *\n     * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     */\n    trackBorderColor: \"#cccccc\" /* Palette.neutralColor20 */,\n    /**\n     * The corner radius of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    trackBorderRadius: 5,\n    /**\n     * The width of the border of the scrollbar track.\n     *\n     * @sample stock/scrollbar/style/\n     *         Scrollbar styling\n     */\n    trackBorderWidth: 1\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_ScrollbarDefaults = (ScrollbarDefaults);\n\n;// ./code/es5/es-modules/Stock/Scrollbar/Scrollbar.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\n\n\nvar Scrollbar_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Scrollbar_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, Scrollbar_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Scrollbar_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Scrollbar_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent;\n/* *\n *\n *  Constants\n *\n * */\n/* eslint-disable no-invalid-this, valid-jsdoc */\n/**\n * A reusable scrollbar, internally used in Highcharts Stock's\n * navigator and optionally on individual axes.\n *\n * @private\n * @class\n * @name Highcharts.Scrollbar\n * @param {Highcharts.SVGRenderer} renderer\n * @param {Highcharts.ScrollbarOptions} options\n * @param {Highcharts.Chart} chart\n */\nvar Scrollbar = /** @class */ (function () {\n    /* *\n     *\n     *  Constructors\n     *\n     * */\n    function Scrollbar(renderer, options, chart) {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this._events = [];\n        this.chartX = 0;\n        this.chartY = 0;\n        this.from = 0;\n        this.scrollbarButtons = [];\n        this.scrollbarLeft = 0;\n        this.scrollbarStrokeWidth = 1;\n        this.scrollbarTop = 0;\n        this.size = 0;\n        this.to = 0;\n        this.trackBorderWidth = 1;\n        this.x = 0;\n        this.y = 0;\n        this.init(renderer, options, chart);\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    Scrollbar.compose = function (AxisClass) {\n        Axis_ScrollbarAxis.compose(AxisClass, Scrollbar);\n    };\n    /**\n     * When we have vertical scrollbar, rifles and arrow in buttons should be\n     * rotated. The same method is used in Navigator's handles, to rotate them.\n     *\n     * @function Highcharts.swapXY\n     *\n     * @param {Highcharts.SVGPathArray} path\n     * Path to be rotated.\n     *\n     * @param {boolean} [vertical]\n     * If vertical scrollbar, swap x-y values.\n     *\n     * @return {Highcharts.SVGPathArray}\n     * Rotated path.\n     *\n     * @requires modules/stock\n     */\n    Scrollbar.swapXY = function (path, vertical) {\n        if (vertical) {\n            path.forEach(function (seg) {\n                var len = seg.length;\n                var temp;\n                for (var i = 0; i < len; i += 2) {\n                    temp = seg[i + 1];\n                    if (typeof temp === 'number') {\n                        seg[i + 1] = seg[i + 2];\n                        seg[i + 2] = temp;\n                    }\n                }\n            });\n        }\n        return path;\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Set up the mouse and touch events for the Scrollbar\n     *\n     * @private\n     * @function Highcharts.Scrollbar#addEvents\n     */\n    Scrollbar.prototype.addEvents = function () {\n        var buttonsOrder = this.options.inverted ? [1, 0] : [0, 1],\n            buttons = this.scrollbarButtons,\n            bar = this.scrollbarGroup.element,\n            track = this.track.element,\n            mouseDownHandler = this.mouseDownHandler.bind(this),\n            mouseMoveHandler = this.mouseMoveHandler.bind(this),\n            mouseUpHandler = this.mouseUpHandler.bind(this);\n        var _events = [\n                // Mouse events\n                [\n                    buttons[buttonsOrder[0]].element,\n                    'click',\n                    this.buttonToMinClick.bind(this)\n                ],\n                [\n                    buttons[buttonsOrder[1]].element,\n                    'click',\n                    this.buttonToMaxClick.bind(this)\n                ],\n                [track, 'click',\n            this.trackClick.bind(this)],\n                [bar, 'mousedown',\n            mouseDownHandler],\n                [bar.ownerDocument, 'mousemove',\n            mouseMoveHandler],\n                [bar.ownerDocument, 'mouseup',\n            mouseUpHandler],\n                // Touch events\n                [bar, 'touchstart',\n            mouseDownHandler],\n                [bar.ownerDocument, 'touchmove',\n            mouseMoveHandler],\n                [bar.ownerDocument, 'touchend',\n            mouseUpHandler]\n            ];\n        // Add them all\n        _events.forEach(function (args) {\n            Scrollbar_addEvent.apply(null, args);\n        });\n        this._events = _events;\n    };\n    Scrollbar.prototype.buttonToMaxClick = function (e) {\n        var scroller = this;\n        var range = ((scroller.to - scroller.from) *\n                Scrollbar_pick(scroller.options.step, 0.2));\n        scroller.updatePosition(scroller.from + range, scroller.to + range);\n        fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    Scrollbar.prototype.buttonToMinClick = function (e) {\n        var scroller = this;\n        var range = Scrollbar_correctFloat(scroller.to - scroller.from) *\n                Scrollbar_pick(scroller.options.step, 0.2);\n        scroller.updatePosition(Scrollbar_correctFloat(scroller.from - range), Scrollbar_correctFloat(scroller.to - range));\n        fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    /**\n     * Get normalized (0-1) cursor position over the scrollbar\n     *\n     * @private\n     * @function Highcharts.Scrollbar#cursorToScrollbarPosition\n     *\n     * @param  {*} normalizedEvent\n     *         normalized event, with chartX and chartY values\n     *\n     * @return {Highcharts.Dictionary<number>}\n     *         Local position {chartX, chartY}\n     */\n    Scrollbar.prototype.cursorToScrollbarPosition = function (normalizedEvent) {\n        var scroller = this,\n            options = scroller.options,\n            minWidthDifference = options.minWidth > scroller.calculatedWidth ?\n                options.minWidth :\n                0; // `minWidth` distorts translation\n            return {\n                chartX: (normalizedEvent.chartX - scroller.x -\n                    scroller.xOffset) /\n                    (scroller.barWidth - minWidthDifference),\n                chartY: (normalizedEvent.chartY - scroller.y -\n                    scroller.yOffset) /\n                    (scroller.barWidth - minWidthDifference)\n            };\n    };\n    /**\n     * Destroys allocated elements.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#destroy\n     */\n    Scrollbar.prototype.destroy = function () {\n        var scroller = this,\n            navigator = scroller.chart.scroller;\n        // Disconnect events added in addEvents\n        scroller.removeEvents();\n        // Destroy properties\n        [\n            'track',\n            'scrollbarRifles',\n            'scrollbar',\n            'scrollbarGroup',\n            'group'\n        ].forEach(function (prop) {\n            if (scroller[prop] && scroller[prop].destroy) {\n                scroller[prop] = scroller[prop].destroy();\n            }\n        });\n        // #6421, chart may have more scrollbars\n        if (navigator && scroller === navigator.scrollbar) {\n            navigator.scrollbar = null;\n            // Destroy elements in collection\n            destroyObjectProperties(navigator.scrollbarButtons);\n        }\n    };\n    /**\n     * Draw the scrollbar buttons with arrows\n     *\n     * @private\n     * @function Highcharts.Scrollbar#drawScrollbarButton\n     * @param {number} index\n     *        0 is left, 1 is right\n     */\n    Scrollbar.prototype.drawScrollbarButton = function (index) {\n        var scroller = this,\n            renderer = scroller.renderer,\n            scrollbarButtons = scroller.scrollbarButtons,\n            options = scroller.options,\n            size = scroller.size,\n            group = renderer.g().add(scroller.group);\n        scrollbarButtons.push(group);\n        if (options.buttonsEnabled) {\n            // Create a rectangle for the scrollbar button\n            var rect = renderer.rect()\n                    .addClass('highcharts-scrollbar-button')\n                    .add(group);\n            // Presentational attributes\n            if (!scroller.chart.styledMode) {\n                rect.attr({\n                    stroke: options.buttonBorderColor,\n                    'stroke-width': options.buttonBorderWidth,\n                    fill: options.buttonBackgroundColor\n                });\n            }\n            // Place the rectangle based on the rendered stroke width\n            rect.attr(rect.crisp({\n                x: -0.5,\n                y: -0.5,\n                width: size,\n                height: size,\n                r: options.buttonBorderRadius\n            }, rect.strokeWidth()));\n            // Button arrow\n            var arrow = renderer\n                    .path(Scrollbar.swapXY([[\n                        'M',\n                        size / 2 + (index ? -1 : 1),\n                        size / 2 - 3\n                    ],\n                [\n                        'L',\n                        size / 2 + (index ? -1 : 1),\n                        size / 2 + 3\n                    ],\n                [\n                        'L',\n                        size / 2 + (index ? 2 : -2),\n                        size / 2\n                    ]],\n                options.vertical))\n                    .addClass('highcharts-scrollbar-arrow')\n                    .add(scrollbarButtons[index]);\n            if (!scroller.chart.styledMode) {\n                arrow.attr({\n                    fill: options.buttonArrowColor\n                });\n            }\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.Scrollbar#init\n     * @param {Highcharts.SVGRenderer} renderer\n     * @param {Highcharts.ScrollbarOptions} options\n     * @param {Highcharts.Chart} chart\n     */\n    Scrollbar.prototype.init = function (renderer, options, chart) {\n        var scroller = this;\n        scroller.scrollbarButtons = [];\n        scroller.renderer = renderer;\n        scroller.userOptions = options;\n        scroller.options = Scrollbar_merge(Scrollbar_ScrollbarDefaults, defaultOptions.scrollbar, options);\n        scroller.options.margin = Scrollbar_pick(scroller.options.margin, 10);\n        scroller.chart = chart;\n        // Backward compatibility\n        scroller.size = Scrollbar_pick(scroller.options.size, scroller.options.height);\n        // Init\n        if (options.enabled) {\n            scroller.render();\n            scroller.addEvents();\n        }\n    };\n    Scrollbar.prototype.mouseDownHandler = function (e) {\n        var _a;\n        var scroller = this,\n            normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            mousePosition = scroller.cursorToScrollbarPosition(normalizedEvent);\n        scroller.chartX = mousePosition.chartX;\n        scroller.chartY = mousePosition.chartY;\n        scroller.initPositions = [scroller.from, scroller.to];\n        scroller.grabbedCenter = true;\n    };\n    /**\n     * Event handler for the mouse move event.\n     * @private\n     */\n    Scrollbar.prototype.mouseMoveHandler = function (e) {\n        var _a;\n        var scroller = this,\n            normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            options = scroller.options,\n            direction = options.vertical ?\n                'chartY' : 'chartX',\n            initPositions = scroller.initPositions || [];\n        var scrollPosition,\n            chartPosition,\n            change;\n        // In iOS, a mousemove event with e.pageX === 0 is fired when\n        // holding the finger down in the center of the scrollbar. This\n        // should be ignored.\n        if (scroller.grabbedCenter &&\n            // #4696, scrollbar failed on Android\n            (!e.touches || e.touches[0][direction] !== 0)) {\n            chartPosition = scroller.cursorToScrollbarPosition(normalizedEvent)[direction];\n            scrollPosition = scroller[direction];\n            change = chartPosition - scrollPosition;\n            scroller.hasDragged = true;\n            scroller.updatePosition(initPositions[0] + change, initPositions[1] + change);\n            if (scroller.hasDragged) {\n                fireEvent(scroller, 'changed', {\n                    from: scroller.from,\n                    to: scroller.to,\n                    trigger: 'scrollbar',\n                    DOMType: e.type,\n                    DOMEvent: e\n                });\n            }\n        }\n    };\n    /**\n     * Event handler for the mouse up event.\n     * @private\n     */\n    Scrollbar.prototype.mouseUpHandler = function (e) {\n        var scroller = this;\n        if (scroller.hasDragged) {\n            fireEvent(scroller, 'changed', {\n                from: scroller.from,\n                to: scroller.to,\n                trigger: 'scrollbar',\n                DOMType: e.type,\n                DOMEvent: e\n            });\n        }\n        scroller.grabbedCenter =\n            scroller.hasDragged =\n                scroller.chartX =\n                    scroller.chartY = null;\n    };\n    /**\n     * Position the scrollbar, method called from a parent with defined\n     * dimensions.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#position\n     * @param {number} x\n     *        x-position on the chart\n     * @param {number} y\n     *        y-position on the chart\n     * @param {number} width\n     *        width of the scrollbar\n     * @param {number} height\n     *        height of the scrollbar\n     */\n    Scrollbar.prototype.position = function (x, y, width, height) {\n        var scroller = this,\n            options = scroller.options,\n            buttonsEnabled = options.buttonsEnabled,\n            _a = options.margin,\n            margin = _a === void 0 ? 0 : _a,\n            vertical = options.vertical,\n            method = scroller.rendered ? 'animate' : 'attr';\n        var xOffset = height,\n            yOffset = 0;\n        // Make the scrollbar visible when it is repositioned, #15763.\n        scroller.group.show();\n        scroller.x = x;\n        scroller.y = y + this.trackBorderWidth;\n        scroller.width = width; // Width with buttons\n        scroller.height = height;\n        scroller.xOffset = xOffset;\n        scroller.yOffset = yOffset;\n        // If Scrollbar is a vertical type, swap options:\n        if (vertical) {\n            scroller.width = scroller.yOffset = width = yOffset = scroller.size;\n            scroller.xOffset = xOffset = 0;\n            scroller.yOffset = yOffset = buttonsEnabled ? scroller.size : 0;\n            // Width without buttons\n            scroller.barWidth = height - (buttonsEnabled ? width * 2 : 0);\n            scroller.x = x = x + margin;\n        }\n        else {\n            scroller.height = height = scroller.size;\n            scroller.xOffset = xOffset = buttonsEnabled ? scroller.size : 0;\n            // Width without buttons\n            scroller.barWidth = width - (buttonsEnabled ? height * 2 : 0);\n            scroller.y = scroller.y + margin;\n        }\n        // Set general position for a group:\n        scroller.group[method]({\n            translateX: x,\n            translateY: scroller.y\n        });\n        // Resize background/track:\n        scroller.track[method]({\n            width: width,\n            height: height\n        });\n        // Move right/bottom button to its place:\n        scroller.scrollbarButtons[1][method]({\n            translateX: vertical ? 0 : width - xOffset,\n            translateY: vertical ? height - yOffset : 0\n        });\n    };\n    /**\n     * Removes the event handlers attached previously with addEvents.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#removeEvents\n     */\n    Scrollbar.prototype.removeEvents = function () {\n        this._events.forEach(function (args) {\n            removeEvent.apply(null, args);\n        });\n        this._events.length = 0;\n    };\n    /**\n     * Render scrollbar with all required items.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#render\n     */\n    Scrollbar.prototype.render = function () {\n        var scroller = this,\n            renderer = scroller.renderer,\n            options = scroller.options,\n            size = scroller.size,\n            styledMode = scroller.chart.styledMode,\n            group = renderer.g('scrollbar')\n                .attr({\n                zIndex: options.zIndex\n            })\n                .hide() // Initially hide the scrollbar #15863\n                .add();\n        // Draw the scrollbar group\n        scroller.group = group;\n        // Draw the scrollbar track:\n        scroller.track = renderer.rect()\n            .addClass('highcharts-scrollbar-track')\n            .attr({\n            r: options.trackBorderRadius || 0,\n            height: size,\n            width: size\n        }).add(group);\n        if (!styledMode) {\n            scroller.track.attr({\n                fill: options.trackBackgroundColor,\n                stroke: options.trackBorderColor,\n                'stroke-width': options.trackBorderWidth\n            });\n        }\n        var trackBorderWidth = scroller.trackBorderWidth =\n                scroller.track.strokeWidth();\n        scroller.track.attr({\n            x: -crisp(0, trackBorderWidth),\n            y: -crisp(0, trackBorderWidth)\n        });\n        // Draw the scrollbar itself\n        scroller.scrollbarGroup = renderer.g().add(group);\n        scroller.scrollbar = renderer.rect()\n            .addClass('highcharts-scrollbar-thumb')\n            .attr({\n            height: size - trackBorderWidth,\n            width: size - trackBorderWidth,\n            r: options.barBorderRadius || 0\n        }).add(scroller.scrollbarGroup);\n        scroller.scrollbarRifles = renderer\n            .path(Scrollbar.swapXY([\n            ['M', -3, size / 4],\n            ['L', -3, 2 * size / 3],\n            ['M', 0, size / 4],\n            ['L', 0, 2 * size / 3],\n            ['M', 3, size / 4],\n            ['L', 3, 2 * size / 3]\n        ], options.vertical))\n            .addClass('highcharts-scrollbar-rifles')\n            .add(scroller.scrollbarGroup);\n        if (!styledMode) {\n            scroller.scrollbar.attr({\n                fill: options.barBackgroundColor,\n                stroke: options.barBorderColor,\n                'stroke-width': options.barBorderWidth\n            });\n            scroller.scrollbarRifles.attr({\n                stroke: options.rifleColor,\n                'stroke-width': 1\n            });\n        }\n        scroller.scrollbarStrokeWidth = scroller.scrollbar.strokeWidth();\n        scroller.scrollbarGroup.translate(-crisp(0, scroller.scrollbarStrokeWidth), -crisp(0, scroller.scrollbarStrokeWidth));\n        // Draw the buttons:\n        scroller.drawScrollbarButton(0);\n        scroller.drawScrollbarButton(1);\n    };\n    /**\n     * Set scrollbar size, with a given scale.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#setRange\n     * @param {number} from\n     *        scale (0-1) where bar should start\n     * @param {number} to\n     *        scale (0-1) where bar should end\n     */\n    Scrollbar.prototype.setRange = function (from, to) {\n        var scroller = this,\n            options = scroller.options,\n            vertical = options.vertical,\n            minWidth = options.minWidth,\n            fullWidth = scroller.barWidth,\n            method = (this.rendered &&\n                !this.hasDragged &&\n                !(this.chart.navigator && this.chart.navigator.hasDragged)) ? 'animate' : 'attr';\n        if (!Scrollbar_defined(fullWidth)) {\n            return;\n        }\n        var toPX = fullWidth * Math.min(to, 1);\n        var fromPX,\n            newSize;\n        from = Math.max(from, 0);\n        fromPX = Math.ceil(fullWidth * from);\n        scroller.calculatedWidth = newSize = Scrollbar_correctFloat(toPX - fromPX);\n        // We need to recalculate position, if minWidth is used\n        if (newSize < minWidth) {\n            fromPX = (fullWidth - minWidth + newSize) * from;\n            newSize = minWidth;\n        }\n        var newPos = Math.floor(fromPX + scroller.xOffset + scroller.yOffset);\n        var newRiflesPos = newSize / 2 - 0.5; // -0.5 -> rifle line width / 2\n            // Store current position:\n            scroller.from = from;\n        scroller.to = to;\n        if (!vertical) {\n            scroller.scrollbarGroup[method]({\n                translateX: newPos\n            });\n            scroller.scrollbar[method]({\n                width: newSize\n            });\n            scroller.scrollbarRifles[method]({\n                translateX: newRiflesPos\n            });\n            scroller.scrollbarLeft = newPos;\n            scroller.scrollbarTop = 0;\n        }\n        else {\n            scroller.scrollbarGroup[method]({\n                translateY: newPos\n            });\n            scroller.scrollbar[method]({\n                height: newSize\n            });\n            scroller.scrollbarRifles[method]({\n                translateY: newRiflesPos\n            });\n            scroller.scrollbarTop = newPos;\n            scroller.scrollbarLeft = 0;\n        }\n        if (newSize <= 12) {\n            scroller.scrollbarRifles.hide();\n        }\n        else {\n            scroller.scrollbarRifles.show();\n        }\n        // Show or hide the scrollbar based on the showFull setting\n        if (options.showFull === false) {\n            if (from <= 0 && to >= 1) {\n                scroller.group.hide();\n            }\n            else {\n                scroller.group.show();\n            }\n        }\n        scroller.rendered = true;\n    };\n    /**\n     * Checks if the extremes should be updated in response to a scrollbar\n     * change event.\n     *\n     * @private\n     * @function Highcharts.Scrollbar#shouldUpdateExtremes\n     */\n    Scrollbar.prototype.shouldUpdateExtremes = function (eventType) {\n        return (Scrollbar_pick(this.options.liveRedraw, (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).svg &&\n            !(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice &&\n            !this.chart.boosted) ||\n            // Mouseup always should change extremes\n            eventType === 'mouseup' ||\n            eventType === 'touchend' ||\n            // Internal events\n            !Scrollbar_defined(eventType));\n    };\n    Scrollbar.prototype.trackClick = function (e) {\n        var _a;\n        var scroller = this;\n        var normalizedEvent = ((_a = scroller.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e,\n            range = scroller.to - scroller.from,\n            top = scroller.y + scroller.scrollbarTop,\n            left = scroller.x + scroller.scrollbarLeft;\n        if ((scroller.options.vertical && normalizedEvent.chartY > top) ||\n            (!scroller.options.vertical && normalizedEvent.chartX > left)) {\n            // On the top or on the left side of the track:\n            scroller.updatePosition(scroller.from + range, scroller.to + range);\n        }\n        else {\n            // On the bottom or the right side of the track:\n            scroller.updatePosition(scroller.from - range, scroller.to - range);\n        }\n        fireEvent(scroller, 'changed', {\n            from: scroller.from,\n            to: scroller.to,\n            trigger: 'scrollbar',\n            DOMEvent: e\n        });\n    };\n    /**\n     * Update the scrollbar with new options\n     *\n     * @private\n     * @function Highcharts.Scrollbar#update\n     * @param  {Highcharts.ScrollbarOptions} options\n     */\n    Scrollbar.prototype.update = function (options) {\n        this.destroy();\n        this.init(this.chart.renderer, Scrollbar_merge(true, this.options, options), this.chart);\n    };\n    /**\n     * Update position option in the Scrollbar, with normalized 0-1 scale\n     *\n     * @private\n     * @function Highcharts.Scrollbar#updatePosition\n     * @param  {number} from\n     * @param  {number} to\n     */\n    Scrollbar.prototype.updatePosition = function (from, to) {\n        if (to > 1) {\n            from = Scrollbar_correctFloat(1 - Scrollbar_correctFloat(to - from));\n            to = 1;\n        }\n        if (from < 0) {\n            to = Scrollbar_correctFloat(to - from);\n            from = 0;\n        }\n        this.from = from;\n        this.to = to;\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    Scrollbar.defaultOptions = Scrollbar_ScrollbarDefaults;\n    return Scrollbar;\n}());\n/* *\n *\n *  Registry\n *\n * */\ndefaultOptions.scrollbar = Scrollbar_merge(true, Scrollbar.defaultOptions, defaultOptions.scrollbar);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Scrollbar_Scrollbar = (Scrollbar);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGRenderer\"],\"commonjs\":[\"highcharts\",\"SVGRenderer\"],\"commonjs2\":[\"highcharts\",\"SVGRenderer\"],\"root\":[\"Highcharts\",\"SVGRenderer\"]}\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_ = __webpack_require__(540);\nvar highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_);\n;// ./code/es5/es-modules/Stock/Navigator/Navigator.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __assign = (undefined && undefined.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n\n\n\nvar Navigator_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar Navigator_isTouchDevice = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isTouchDevice;\n\n\n\n\nvar symbols = (highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default()).prototype.symbols;\n\nvar Navigator_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, Navigator_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, Navigator_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, Navigator_destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, erase = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).erase, Navigator_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, Navigator_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, Navigator_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, Navigator_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, Navigator_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, Navigator_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, Navigator_removeEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).removeEvent, splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Finding the min or max of a set of variables where we don't know if they are\n * defined, is a pattern that is repeated several places in Highcharts. Consider\n * making this a global utility method.\n * @private\n */\nfunction numExt(extreme) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    var numbers = [].filter.call(args,\n        Navigator_isNumber);\n    if (numbers.length) {\n        return Math[extreme].apply(0, numbers);\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The Navigator class\n *\n * @private\n * @class\n * @name Highcharts.Navigator\n *\n * @param {Highcharts.Chart} chart\n *        Chart object\n */\nvar Navigator = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function Navigator(chart) {\n        this.isDirty = false;\n        this.scrollbarHeight = 0;\n        this.init(chart);\n    }\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    Navigator.compose = function (ChartClass, AxisClass, SeriesClass) {\n        Navigator_ChartNavigatorComposition.compose(ChartClass, Navigator);\n        Navigator_NavigatorComposition.compose(ChartClass, AxisClass, SeriesClass);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Draw one of the handles on the side of the zoomed range in the navigator.\n     *\n     * @private\n     * @function Highcharts.Navigator#drawHandle\n     *\n     * @param {number} x\n     *        The x center for the handle\n     *\n     * @param {number} index\n     *        0 for left and 1 for right\n     *\n     * @param {boolean|undefined} inverted\n     *        Flag for chart.inverted\n     *\n     * @param {string} verb\n     *        Use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawHandle = function (x, index, inverted, verb) {\n        var navigator = this,\n            height = navigator.navigatorOptions.handles.height;\n        // Place it\n        navigator.handles[index][verb](inverted ? {\n            translateX: Math.round(navigator.left + navigator.height / 2),\n            translateY: Math.round(navigator.top + parseInt(x, 10) + 0.5 - height)\n        } : {\n            translateX: Math.round(navigator.left + parseInt(x, 10)),\n            translateY: Math.round(navigator.top + navigator.height / 2 - height / 2 - 1)\n        });\n    };\n    /**\n     * Render outline around the zoomed range\n     *\n     * @private\n     * @function Highcharts.Navigator#drawOutline\n     *\n     * @param {number} zoomedMin\n     *        in pixels position where zoomed range starts\n     *\n     * @param {number} zoomedMax\n     *        in pixels position where zoomed range ends\n     *\n     * @param {boolean|undefined} inverted\n     *        flag if chart is inverted\n     *\n     * @param {string} verb\n     *        use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawOutline = function (zoomedMin, zoomedMax, inverted, verb) {\n        var navigator = this, maskInside = navigator.navigatorOptions.maskInside, outlineWidth = navigator.outline.strokeWidth(), halfOutline = outlineWidth / 2, outlineCorrection = (outlineWidth % 2) / 2, // #5800\n            scrollButtonSize = navigator.scrollButtonSize, navigatorSize = navigator.size, navigatorTop = navigator.top, height = navigator.height, lineTop = navigatorTop - halfOutline, lineBtm = navigatorTop + height;\n        var left = navigator.left,\n            verticalMin,\n            path;\n        if (inverted) {\n            verticalMin = navigatorTop + zoomedMax + outlineCorrection;\n            zoomedMax = navigatorTop + zoomedMin + outlineCorrection;\n            path = [\n                [\n                    'M',\n                    left + height,\n                    navigatorTop - scrollButtonSize - outlineCorrection\n                ],\n                // Top right of zoomed range\n                ['L', left + height, verticalMin],\n                ['L', left, verticalMin], // Top left of z.r.\n                ['M', left, zoomedMax], // Bottom left of z.r.\n                ['L', left + height, zoomedMax], // Bottom right of z.r.\n                [\n                    'L',\n                    left + height,\n                    navigatorTop + navigatorSize + scrollButtonSize\n                ]\n            ];\n            if (maskInside) {\n                path.push(\n                // Upper left of zoomed range\n                ['M', left + height, verticalMin - halfOutline], \n                // Upper right of z.r.\n                [\n                    'L',\n                    left + height,\n                    zoomedMax + halfOutline\n                ]);\n            }\n        }\n        else {\n            left -= scrollButtonSize;\n            zoomedMin += left + scrollButtonSize - outlineCorrection;\n            zoomedMax += left + scrollButtonSize - outlineCorrection;\n            path = [\n                // Left\n                ['M', left, lineTop],\n                // Upper left of zoomed range\n                ['L', zoomedMin, lineTop],\n                // Lower left of z.r.\n                ['L', zoomedMin, lineBtm],\n                // Lower right of z.r.\n                ['M', zoomedMax, lineBtm],\n                // Upper right of z.r.\n                ['L', zoomedMax, lineTop],\n                // Right\n                [\n                    'L',\n                    left + navigatorSize + scrollButtonSize * 2,\n                    lineTop\n                ]\n            ];\n            if (maskInside) {\n                path.push(\n                // Upper left of zoomed range\n                ['M', zoomedMin - halfOutline, lineTop], \n                // Upper right of z.r.\n                ['L', zoomedMax + halfOutline, lineTop]);\n            }\n        }\n        navigator.outline[verb]({\n            d: path\n        });\n    };\n    /**\n     * Render outline around the zoomed range\n     *\n     * @private\n     * @function Highcharts.Navigator#drawMasks\n     *\n     * @param {number} zoomedMin\n     *        in pixels position where zoomed range starts\n     *\n     * @param {number} zoomedMax\n     *        in pixels position where zoomed range ends\n     *\n     * @param {boolean|undefined} inverted\n     *        flag if chart is inverted\n     *\n     * @param {string} verb\n     *        use 'animate' or 'attr'\n     */\n    Navigator.prototype.drawMasks = function (zoomedMin, zoomedMax, inverted, verb) {\n        var navigator = this,\n            left = navigator.left,\n            top = navigator.top,\n            navigatorHeight = navigator.height;\n        var height,\n            width,\n            x,\n            y;\n        // Determine rectangle position & size\n        // According to (non)inverted position:\n        if (inverted) {\n            x = [left, left, left];\n            y = [top, top + zoomedMin, top + zoomedMax];\n            width = [navigatorHeight, navigatorHeight, navigatorHeight];\n            height = [\n                zoomedMin,\n                zoomedMax - zoomedMin,\n                navigator.size - zoomedMax\n            ];\n        }\n        else {\n            x = [left, left + zoomedMin, left + zoomedMax];\n            y = [top, top, top];\n            width = [\n                zoomedMin,\n                zoomedMax - zoomedMin,\n                navigator.size - zoomedMax\n            ];\n            height = [navigatorHeight, navigatorHeight, navigatorHeight];\n        }\n        navigator.shades.forEach(function (shade, i) {\n            shade[verb]({\n                x: x[i],\n                y: y[i],\n                width: width[i],\n                height: height[i]\n            });\n        });\n    };\n    /**\n     * Generate and update DOM elements for a navigator:\n     *\n     * - main navigator group\n     *\n     * - all shades\n     *\n     * - outline\n     *\n     * - handles\n     *\n     * @private\n     * @function Highcharts.Navigator#renderElements\n     */\n    Navigator.prototype.renderElements = function () {\n        var _a,\n            _b;\n        var navigator = this,\n            navigatorOptions = navigator.navigatorOptions,\n            maskInside = navigatorOptions.maskInside,\n            chart = navigator.chart,\n            inverted = chart.inverted,\n            renderer = chart.renderer,\n            mouseCursor = {\n                cursor: inverted ? 'ns-resize' : 'ew-resize'\n            }, \n            // Create the main navigator group\n            navigatorGroup = (_a = navigator.navigatorGroup) !== null && _a !== void 0 ? _a : (navigator.navigatorGroup = renderer\n                .g('navigator')\n                .attr({\n                zIndex: 8,\n                visibility: 'hidden'\n            })\n                .add());\n        // Create masks, each mask will get events and fill:\n        [\n            !maskInside,\n            maskInside,\n            !maskInside\n        ].forEach(function (hasMask, index) {\n            var _a;\n            var shade = (_a = navigator.shades[index]) !== null && _a !== void 0 ? _a : (navigator.shades[index] = renderer.rect()\n                    .addClass('highcharts-navigator-mask' +\n                    (index === 1 ? '-inside' : '-outside'))\n                    .add(navigatorGroup));\n            if (!chart.styledMode) {\n                shade.attr({\n                    fill: hasMask ? navigatorOptions.maskFill : 'rgba(0,0,0,0)'\n                });\n                if (index === 1) {\n                    shade.css(mouseCursor);\n                }\n            }\n        });\n        // Create the outline:\n        if (!navigator.outline) {\n            navigator.outline = renderer.path()\n                .addClass('highcharts-navigator-outline')\n                .add(navigatorGroup);\n        }\n        if (!chart.styledMode) {\n            navigator.outline.attr({\n                'stroke-width': navigatorOptions.outlineWidth,\n                stroke: navigatorOptions.outlineColor\n            });\n        }\n        // Create the handlers:\n        if ((_b = navigatorOptions.handles) === null || _b === void 0 ? void 0 : _b.enabled) {\n            var handlesOptions_1 = navigatorOptions.handles,\n                height_1 = handlesOptions_1.height,\n                width_1 = handlesOptions_1.width;\n            [0, 1].forEach(function (index) {\n                var _a;\n                var symbolName = handlesOptions_1.symbols[index];\n                if (!navigator.handles[index] ||\n                    navigator.handles[index].symbolUrl !== symbolName) {\n                    // Generate symbol from scratch if we're dealing with an URL\n                    (_a = navigator.handles[index]) === null || _a === void 0 ? void 0 : _a.destroy();\n                    navigator.handles[index] = renderer.symbol(symbolName, -width_1 / 2 - 1, 0, width_1, height_1, handlesOptions_1);\n                    // Z index is 6 for right handle, 7 for left. Can't be 10,\n                    // because of the tooltip in inverted chart (#2908).\n                    navigator.handles[index].attr({ zIndex: 7 - index })\n                        .addClass('highcharts-navigator-handle ' +\n                        'highcharts-navigator-handle-' +\n                        ['left', 'right'][index]).add(navigatorGroup);\n                    navigator.addMouseEvents();\n                    // If the navigator symbol changed, update its path and name\n                }\n                else if (!navigator.handles[index].isImg &&\n                    navigator.handles[index].symbolName !== symbolName) {\n                    var symbolFn = symbols[symbolName],\n                        path = symbolFn.call(symbols, -width_1 / 2 - 1, 0,\n                        width_1,\n                        height_1);\n                    navigator.handles[index].attr({\n                        d: path\n                    });\n                    navigator.handles[index].symbolName = symbolName;\n                }\n                if (chart.inverted) {\n                    navigator.handles[index].attr({\n                        rotation: 90,\n                        rotationOriginX: Math.floor(-width_1 / 2),\n                        rotationOriginY: (height_1 + width_1) / 2\n                    });\n                }\n                if (!chart.styledMode) {\n                    navigator.handles[index]\n                        .attr({\n                        fill: handlesOptions_1.backgroundColor,\n                        stroke: handlesOptions_1.borderColor,\n                        'stroke-width': handlesOptions_1.lineWidth,\n                        width: handlesOptions_1.width,\n                        height: handlesOptions_1.height,\n                        x: -width_1 / 2 - 1,\n                        y: 0\n                    })\n                        .css(mouseCursor);\n                }\n            });\n        }\n    };\n    /**\n     * Update navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#update\n     *\n     * @param {Highcharts.NavigatorOptions} options\n     *        Options to merge in when updating navigator\n     */\n    Navigator.prototype.update = function (options, redraw) {\n        var _a,\n            _b;\n        var _this = this;\n        var _c,\n            _d;\n        if (redraw === void 0) { redraw = false; }\n        var chart = this.chart,\n            invertedUpdate = chart.options.chart.inverted !==\n                ((_c = chart.scrollbar) === null || _c === void 0 ? void 0 : _c.options.vertical);\n        Navigator_merge(true, chart.options.navigator, options);\n        this.navigatorOptions = chart.options.navigator || {};\n        this.setOpposite();\n        // Revert to destroy/init for navigator/scrollbar enabled toggle\n        if (Navigator_defined(options.enabled) || invertedUpdate) {\n            this.destroy();\n            this.navigatorEnabled = options.enabled || this.navigatorEnabled;\n            return this.init(chart);\n        }\n        if (this.navigatorEnabled) {\n            this.isDirty = true;\n            if (options.adaptToUpdatedData === false) {\n                this.baseSeries.forEach(function (series) {\n                    Navigator_removeEvent(series, 'updatedData', _this.updatedDataHandler);\n                }, this);\n            }\n            if (options.adaptToUpdatedData) {\n                this.baseSeries.forEach(function (series) {\n                    series.eventsToUnbind.push(Navigator_addEvent(series, 'updatedData', _this.updatedDataHandler));\n                }, this);\n            }\n            // Update navigator series\n            if (options.series || options.baseSeries) {\n                this.setBaseSeries(void 0, false);\n            }\n            // Update navigator axis\n            if (options.height || options.xAxis || options.yAxis) {\n                this.height = (_d = options.height) !== null && _d !== void 0 ? _d : this.height;\n                var offsets = this.getXAxisOffsets();\n                this.xAxis.update(__assign(__assign({}, options.xAxis), (_a = { offsets: offsets }, _a[chart.inverted ? 'width' : 'height'] = this.height, _a[chart.inverted ? 'height' : 'width'] = void 0, _a)), false);\n                this.yAxis.update(__assign(__assign({}, options.yAxis), (_b = {}, _b[chart.inverted ? 'width' : 'height'] = this.height, _b)), false);\n            }\n        }\n        if (redraw) {\n            chart.redraw();\n        }\n    };\n    /**\n     * Render the navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#render\n     * @param {number} min\n     *        X axis value minimum\n     * @param {number} max\n     *        X axis value maximum\n     * @param {number} [pxMin]\n     *        Pixel value minimum\n     * @param {number} [pxMax]\n     *        Pixel value maximum\n     */\n    Navigator.prototype.render = function (min, max, pxMin, pxMax) {\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            pointRange = xAxis.pointRange || 0,\n            scrollbarXAxis = xAxis.navigatorAxis.fake ? chart.xAxis[0] : xAxis,\n            navigatorEnabled = navigator.navigatorEnabled,\n            rendered = navigator.rendered,\n            inverted = chart.inverted,\n            minRange = chart.xAxis[0].minRange,\n            maxRange = chart.xAxis[0].options.maxRange,\n            scrollButtonSize = navigator.scrollButtonSize;\n        var navigatorWidth,\n            scrollbarLeft,\n            scrollbarTop,\n            scrollbarHeight = navigator.scrollbarHeight,\n            navigatorSize,\n            verb;\n        // Don't redraw while moving the handles (#4703).\n        if (this.hasDragged && !Navigator_defined(pxMin)) {\n            return;\n        }\n        if (this.isDirty) {\n            // Update DOM navigator elements\n            this.renderElements();\n        }\n        min = Navigator_correctFloat(min - pointRange / 2);\n        max = Navigator_correctFloat(max + pointRange / 2);\n        // Don't render the navigator until we have data (#486, #4202, #5172).\n        if (!Navigator_isNumber(min) || !Navigator_isNumber(max)) {\n            // However, if navigator was already rendered, we may need to resize\n            // it. For example hidden series, but visible navigator (#6022).\n            if (rendered) {\n                pxMin = 0;\n                pxMax = Navigator_pick(xAxis.width, scrollbarXAxis.width);\n            }\n            else {\n                return;\n            }\n        }\n        navigator.left = Navigator_pick(xAxis.left, \n        // In case of scrollbar only, without navigator\n        chart.plotLeft + scrollButtonSize +\n            (inverted ? chart.plotWidth : 0));\n        var zoomedMax = navigator.size = navigatorSize = Navigator_pick(xAxis.len, (inverted ? chart.plotHeight : chart.plotWidth) -\n                2 * scrollButtonSize);\n        if (inverted) {\n            navigatorWidth = scrollbarHeight;\n        }\n        else {\n            navigatorWidth = navigatorSize + 2 * scrollButtonSize;\n        }\n        // Get the pixel position of the handles\n        pxMin = Navigator_pick(pxMin, xAxis.toPixels(min, true));\n        pxMax = Navigator_pick(pxMax, xAxis.toPixels(max, true));\n        // Verify (#1851, #2238)\n        if (!Navigator_isNumber(pxMin) || Math.abs(pxMin) === Infinity) {\n            pxMin = 0;\n            pxMax = navigatorWidth;\n        }\n        // Are we below the minRange? (#2618, #6191)\n        var newMin = xAxis.toValue(pxMin,\n            true),\n            newMax = xAxis.toValue(pxMax,\n            true),\n            currentRange = Math.abs(Navigator_correctFloat(newMax - newMin));\n        if (currentRange < minRange) {\n            if (this.grabbedLeft) {\n                pxMin = xAxis.toPixels(newMax - minRange - pointRange, true);\n            }\n            else if (this.grabbedRight) {\n                pxMax = xAxis.toPixels(newMin + minRange + pointRange, true);\n            }\n        }\n        else if (Navigator_defined(maxRange) &&\n            Navigator_correctFloat(currentRange - pointRange) > maxRange) {\n            if (this.grabbedLeft) {\n                pxMin = xAxis.toPixels(newMax - maxRange - pointRange, true);\n            }\n            else if (this.grabbedRight) {\n                pxMax = xAxis.toPixels(newMin + maxRange + pointRange, true);\n            }\n        }\n        // Handles are allowed to cross, but never exceed the plot area\n        navigator.zoomedMax = clamp(Math.max(pxMin, pxMax), 0, zoomedMax);\n        navigator.zoomedMin = clamp(navigator.fixedWidth ?\n            navigator.zoomedMax - navigator.fixedWidth :\n            Math.min(pxMin, pxMax), 0, zoomedMax);\n        navigator.range = navigator.zoomedMax - navigator.zoomedMin;\n        zoomedMax = Math.round(navigator.zoomedMax);\n        var zoomedMin = Math.round(navigator.zoomedMin);\n        if (navigatorEnabled) {\n            navigator.navigatorGroup.attr({\n                visibility: 'inherit'\n            });\n            // Place elements\n            verb = rendered && !navigator.hasDragged ? 'animate' : 'attr';\n            navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n            navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n            if (navigator.navigatorOptions.handles.enabled) {\n                navigator.drawHandle(zoomedMin, 0, inverted, verb);\n                navigator.drawHandle(zoomedMax, 1, inverted, verb);\n            }\n        }\n        if (navigator.scrollbar) {\n            if (inverted) {\n                scrollbarTop = navigator.top - scrollButtonSize;\n                scrollbarLeft = navigator.left - scrollbarHeight +\n                    (navigatorEnabled || !scrollbarXAxis.opposite ? 0 :\n                        // Multiple axes has offsets:\n                        (scrollbarXAxis.titleOffset || 0) +\n                            // Self margin from the axis.title\n                            scrollbarXAxis.axisTitleMargin);\n                scrollbarHeight = navigatorSize + 2 * scrollButtonSize;\n            }\n            else {\n                scrollbarTop = navigator.top + (navigatorEnabled ?\n                    navigator.height :\n                    -scrollbarHeight);\n                scrollbarLeft = navigator.left - scrollButtonSize;\n            }\n            // Reposition scrollbar\n            navigator.scrollbar.position(scrollbarLeft, scrollbarTop, navigatorWidth, scrollbarHeight);\n            // Keep scale 0-1\n            navigator.scrollbar.setRange(\n            // Use real value, not rounded because range can be very small\n            // (#1716)\n            navigator.zoomedMin / (navigatorSize || 1), navigator.zoomedMax / (navigatorSize || 1));\n        }\n        navigator.rendered = true;\n        this.isDirty = false;\n        Navigator_fireEvent(this, 'afterRender');\n    };\n    /**\n     * Set up the mouse and touch events for the navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#addMouseEvents\n     */\n    Navigator.prototype.addMouseEvents = function () {\n        var navigator = this,\n            chart = navigator.chart,\n            container = chart.container;\n        var eventsToUnbind = [],\n            mouseMoveHandler,\n            mouseUpHandler;\n        /**\n         * Create mouse events' handlers.\n         * Make them as separate functions to enable wrapping them:\n         */\n        navigator.mouseMoveHandler = mouseMoveHandler = function (e) {\n            navigator.onMouseMove(e);\n        };\n        navigator.mouseUpHandler = mouseUpHandler = function (e) {\n            navigator.onMouseUp(e);\n        };\n        // Add shades and handles mousedown events\n        eventsToUnbind = navigator.getPartsEvents('mousedown');\n        eventsToUnbind.push(\n        // Add mouse move and mouseup events. These are bind to doc/div,\n        // because Navigator.grabbedSomething flags are stored in mousedown\n        // events\n        Navigator_addEvent(chart.renderTo, 'mousemove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'mouseup', mouseUpHandler), \n        // Touch events\n        Navigator_addEvent(chart.renderTo, 'touchmove', mouseMoveHandler), Navigator_addEvent(container.ownerDocument, 'touchend', mouseUpHandler));\n        eventsToUnbind.concat(navigator.getPartsEvents('touchstart'));\n        navigator.eventsToUnbind = eventsToUnbind;\n        // Data events\n        if (navigator.series && navigator.series[0]) {\n            eventsToUnbind.push(Navigator_addEvent(navigator.series[0].xAxis, 'foundExtremes', function () {\n                chart.navigator.modifyNavigatorAxisExtremes();\n            }));\n        }\n    };\n    /**\n     * Generate events for handles and masks\n     *\n     * @private\n     * @function Highcharts.Navigator#getPartsEvents\n     *\n     * @param {string} eventName\n     *        Event name handler, 'mousedown' or 'touchstart'\n     *\n     * @return {Array<Function>}\n     *         An array of functions to remove navigator functions from the\n     *         events again.\n     */\n    Navigator.prototype.getPartsEvents = function (eventName) {\n        var navigator = this,\n            events = [];\n        ['shades', 'handles'].forEach(function (name) {\n            navigator[name].forEach(function (navigatorItem, index) {\n                events.push(Navigator_addEvent(navigatorItem.element, eventName, function (e) {\n                    navigator[name + 'Mousedown'](e, index);\n                }));\n            });\n        });\n        return events;\n    };\n    /**\n     * Mousedown on a shaded mask, either:\n     *\n     * - will be stored for future drag&drop\n     *\n     * - will directly shift to a new range\n     *\n     * @private\n     * @function Highcharts.Navigator#shadesMousedown\n     *\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     *\n     * @param {number} index\n     *        Index of a mask in Navigator.shades array\n     */\n    Navigator.prototype.shadesMousedown = function (e, index) {\n        var _a;\n        e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            zoomedMin = navigator.zoomedMin,\n            navigatorSize = navigator.size,\n            range = navigator.range;\n        var navigatorPosition = navigator.left,\n            chartX = e.chartX,\n            fixedMax,\n            fixedMin,\n            ext,\n            left;\n        // For inverted chart, swap some options:\n        if (chart.inverted) {\n            chartX = e.chartY;\n            navigatorPosition = navigator.top;\n        }\n        if (index === 1) {\n            // Store information for drag&drop\n            navigator.grabbedCenter = chartX;\n            navigator.fixedWidth = range;\n            navigator.dragOffset = chartX - zoomedMin;\n        }\n        else {\n            // Shift the range by clicking on shaded areas\n            left = chartX - navigatorPosition - range / 2;\n            if (index === 0) {\n                left = Math.max(0, left);\n            }\n            else if (index === 2 && left + range >= navigatorSize) {\n                left = navigatorSize - range;\n                if (navigator.reversedExtremes) {\n                    // #7713\n                    left -= range;\n                    fixedMin = navigator.getUnionExtremes().dataMin;\n                }\n                else {\n                    // #2293, #3543\n                    fixedMax = navigator.getUnionExtremes().dataMax;\n                }\n            }\n            if (left !== zoomedMin) { // It has actually moved\n                navigator.fixedWidth = range; // #1370\n                ext = xAxis.navigatorAxis.toFixedRange(left, left + range, fixedMin, fixedMax);\n                if (Navigator_defined(ext.min)) { // #7411\n                    Navigator_fireEvent(this, 'setRange', {\n                        min: Math.min(ext.min, ext.max),\n                        max: Math.max(ext.min, ext.max),\n                        redraw: true,\n                        eventArguments: {\n                            trigger: 'navigator'\n                        }\n                    });\n                }\n            }\n        }\n    };\n    /**\n     * Mousedown on a handle mask.\n     * Will store necessary information for drag&drop.\n     *\n     * @private\n     * @function Highcharts.Navigator#handlesMousedown\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     * @param {number} index\n     *        Index of a handle in Navigator.handles array\n     */\n    Navigator.prototype.handlesMousedown = function (e, index) {\n        var _a;\n        e = ((_a = this.chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n        var navigator = this,\n            chart = navigator.chart,\n            baseXAxis = chart.xAxis[0], \n            // For reversed axes, min and max are changed,\n            // so the other extreme should be stored\n            reverse = navigator.reversedExtremes;\n        if (index === 0) {\n            // Grab the left handle\n            navigator.grabbedLeft = true;\n            navigator.otherHandlePos = navigator.zoomedMax;\n            navigator.fixedExtreme = reverse ? baseXAxis.min : baseXAxis.max;\n        }\n        else {\n            // Grab the right handle\n            navigator.grabbedRight = true;\n            navigator.otherHandlePos = navigator.zoomedMin;\n            navigator.fixedExtreme = reverse ? baseXAxis.max : baseXAxis.min;\n        }\n        chart.setFixedRange(void 0);\n    };\n    /**\n     * Mouse move event based on x/y mouse position.\n     *\n     * @private\n     * @function Highcharts.Navigator#onMouseMove\n     *\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     */\n    Navigator.prototype.onMouseMove = function (e) {\n        var _a;\n        var navigator = this,\n            chart = navigator.chart,\n            navigatorSize = navigator.navigatorSize,\n            range = navigator.range,\n            dragOffset = navigator.dragOffset,\n            inverted = chart.inverted;\n        var left = navigator.left,\n            chartX;\n        // In iOS, a mousemove event with e.pageX === 0 is fired when holding\n        // the finger down in the center of the scrollbar. This should be\n        // ignored.\n        if (!e.touches || e.touches[0].pageX !== 0) { // #4696\n            e = ((_a = chart.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n            chartX = e.chartX;\n            // Swap some options for inverted chart\n            if (inverted) {\n                left = navigator.top;\n                chartX = e.chartY;\n            }\n            // Drag left handle or top handle\n            if (navigator.grabbedLeft) {\n                navigator.hasDragged = true;\n                navigator.render(0, 0, chartX - left, navigator.otherHandlePos);\n                // Drag right handle or bottom handle\n            }\n            else if (navigator.grabbedRight) {\n                navigator.hasDragged = true;\n                navigator.render(0, 0, navigator.otherHandlePos, chartX - left);\n                // Drag scrollbar or open area in navigator\n            }\n            else if (navigator.grabbedCenter) {\n                navigator.hasDragged = true;\n                if (chartX < dragOffset) { // Outside left\n                    chartX = dragOffset;\n                    // Outside right\n                }\n                else if (chartX >\n                    navigatorSize + dragOffset - range) {\n                    chartX = navigatorSize + dragOffset - range;\n                }\n                navigator.render(0, 0, chartX - dragOffset, chartX - dragOffset + range);\n            }\n            if (navigator.hasDragged &&\n                navigator.scrollbar &&\n                Navigator_pick(navigator.scrollbar.options.liveRedraw, \n                // By default, don't run live redraw on touch\n                // devices or if the chart is in boost.\n                !Navigator_isTouchDevice &&\n                    !this.chart.boosted)) {\n                e.DOMType = e.type;\n                setTimeout(function () {\n                    navigator.onMouseUp(e);\n                }, 0);\n            }\n        }\n    };\n    /**\n     * Mouse up event based on x/y mouse position.\n     *\n     * @private\n     * @function Highcharts.Navigator#onMouseUp\n     * @param {Highcharts.PointerEventObject} e\n     *        Mouse event\n     */\n    Navigator.prototype.onMouseUp = function (e) {\n        var navigator = this,\n            chart = navigator.chart,\n            xAxis = navigator.xAxis,\n            scrollbar = navigator.scrollbar,\n            DOMEvent = e.DOMEvent || e,\n            inverted = chart.inverted,\n            verb = navigator.rendered && !navigator.hasDragged ?\n                'animate' : 'attr';\n        var zoomedMax,\n            zoomedMin,\n            unionExtremes,\n            fixedMin,\n            fixedMax,\n            ext;\n        if (\n        // MouseUp is called for both, navigator and scrollbar (that order),\n        // which causes calling afterSetExtremes twice. Prevent first call\n        // by checking if scrollbar is going to set new extremes (#6334)\n        (navigator.hasDragged && (!scrollbar || !scrollbar.hasDragged)) ||\n            e.trigger === 'scrollbar') {\n            unionExtremes = navigator.getUnionExtremes();\n            // When dragging one handle, make sure the other one doesn't change\n            if (navigator.zoomedMin === navigator.otherHandlePos) {\n                fixedMin = navigator.fixedExtreme;\n            }\n            else if (navigator.zoomedMax === navigator.otherHandlePos) {\n                fixedMax = navigator.fixedExtreme;\n            }\n            // Snap to right edge (#4076)\n            if (navigator.zoomedMax === navigator.size) {\n                fixedMax = navigator.reversedExtremes ?\n                    unionExtremes.dataMin :\n                    unionExtremes.dataMax;\n            }\n            // Snap to left edge (#7576)\n            if (navigator.zoomedMin === 0) {\n                fixedMin = navigator.reversedExtremes ?\n                    unionExtremes.dataMax :\n                    unionExtremes.dataMin;\n            }\n            ext = xAxis.navigatorAxis.toFixedRange(navigator.zoomedMin, navigator.zoomedMax, fixedMin, fixedMax);\n            if (Navigator_defined(ext.min)) {\n                Navigator_fireEvent(this, 'setRange', {\n                    min: Math.min(ext.min, ext.max),\n                    max: Math.max(ext.min, ext.max),\n                    redraw: true,\n                    animation: navigator.hasDragged ? false : null,\n                    eventArguments: {\n                        trigger: 'navigator',\n                        triggerOp: 'navigator-drag',\n                        DOMEvent: DOMEvent // #1838\n                    }\n                });\n            }\n        }\n        if (e.DOMType !== 'mousemove' &&\n            e.DOMType !== 'touchmove') {\n            navigator.grabbedLeft = navigator.grabbedRight =\n                navigator.grabbedCenter = navigator.fixedWidth =\n                    navigator.fixedExtreme = navigator.otherHandlePos =\n                        navigator.hasDragged = navigator.dragOffset = null;\n        }\n        // Update position of navigator shades, outline and handles (#12573)\n        if (navigator.navigatorEnabled &&\n            Navigator_isNumber(navigator.zoomedMin) &&\n            Navigator_isNumber(navigator.zoomedMax)) {\n            zoomedMin = Math.round(navigator.zoomedMin);\n            zoomedMax = Math.round(navigator.zoomedMax);\n            if (navigator.shades) {\n                navigator.drawMasks(zoomedMin, zoomedMax, inverted, verb);\n            }\n            if (navigator.outline) {\n                navigator.drawOutline(zoomedMin, zoomedMax, inverted, verb);\n            }\n            if (navigator.navigatorOptions.handles.enabled &&\n                Object.keys(navigator.handles).length ===\n                    navigator.handles.length) {\n                navigator.drawHandle(zoomedMin, 0, inverted, verb);\n                navigator.drawHandle(zoomedMax, 1, inverted, verb);\n            }\n        }\n    };\n    /**\n     * Removes the event handlers attached previously with addEvents.\n     *\n     * @private\n     * @function Highcharts.Navigator#removeEvents\n     */\n    Navigator.prototype.removeEvents = function () {\n        if (this.eventsToUnbind) {\n            this.eventsToUnbind.forEach(function (unbind) {\n                unbind();\n            });\n            this.eventsToUnbind = void 0;\n        }\n        this.removeBaseSeriesEvents();\n    };\n    /**\n     * Remove data events.\n     *\n     * @private\n     * @function Highcharts.Navigator#removeBaseSeriesEvents\n     */\n    Navigator.prototype.removeBaseSeriesEvents = function () {\n        var baseSeries = this.baseSeries || [];\n        if (this.navigatorEnabled && baseSeries[0]) {\n            if (this.navigatorOptions.adaptToUpdatedData !== false) {\n                baseSeries.forEach(function (series) {\n                    Navigator_removeEvent(series, 'updatedData', this.updatedDataHandler);\n                }, this);\n            }\n            // We only listen for extremes-events on the first baseSeries\n            if (baseSeries[0].xAxis) {\n                Navigator_removeEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes);\n            }\n        }\n    };\n    /**\n     * Calculate the navigator xAxis offsets\n     *\n     * @private\n     */\n    Navigator.prototype.getXAxisOffsets = function () {\n        return (this.chart.inverted ?\n            [this.scrollButtonSize, 0, -this.scrollButtonSize, 0] :\n            [0, -this.scrollButtonSize, 0, this.scrollButtonSize]);\n    };\n    /**\n     * Initialize the Navigator object\n     *\n     * @private\n     * @function Highcharts.Navigator#init\n     */\n    Navigator.prototype.init = function (chart) {\n        var _a;\n        var chartOptions = chart.options,\n            navigatorOptions = chartOptions.navigator || {},\n            navigatorEnabled = navigatorOptions.enabled,\n            scrollbarOptions = chartOptions.scrollbar || {},\n            scrollbarEnabled = scrollbarOptions.enabled,\n            height = navigatorEnabled && navigatorOptions.height || 0,\n            scrollbarHeight = scrollbarEnabled && scrollbarOptions.height || 0,\n            scrollButtonSize = scrollbarOptions.buttonsEnabled && scrollbarHeight || 0;\n        this.handles = [];\n        this.shades = [];\n        this.chart = chart;\n        this.setBaseSeries();\n        this.height = height;\n        this.scrollbarHeight = scrollbarHeight;\n        this.scrollButtonSize = scrollButtonSize;\n        this.scrollbarEnabled = scrollbarEnabled;\n        this.navigatorEnabled = navigatorEnabled;\n        this.navigatorOptions = navigatorOptions;\n        this.scrollbarOptions = scrollbarOptions;\n        this.setOpposite();\n        var navigator = this,\n            baseSeries = navigator.baseSeries,\n            xAxisIndex = chart.xAxis.length,\n            yAxisIndex = chart.yAxis.length,\n            baseXaxis = baseSeries && baseSeries[0] && baseSeries[0].xAxis ||\n                chart.xAxis[0] || { options: {} };\n        chart.isDirtyBox = true;\n        if (navigator.navigatorEnabled) {\n            var offsets = this.getXAxisOffsets();\n            // An x axis is required for scrollbar also\n            navigator.xAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge({\n                // Inherit base xAxis' break, ordinal options and overscroll\n                breaks: baseXaxis.options.breaks,\n                ordinal: baseXaxis.options.ordinal,\n                overscroll: baseXaxis.options.overscroll\n            }, navigatorOptions.xAxis, {\n                type: 'datetime',\n                yAxis: (_a = navigatorOptions.yAxis) === null || _a === void 0 ? void 0 : _a.id,\n                index: xAxisIndex,\n                isInternal: true,\n                offset: 0,\n                keepOrdinalPadding: true, // #2436\n                startOnTick: false,\n                endOnTick: false,\n                // Inherit base xAxis' padding when ordinal is false (#16915).\n                minPadding: baseXaxis.options.ordinal ? 0 :\n                    baseXaxis.options.minPadding,\n                maxPadding: baseXaxis.options.ordinal ? 0 :\n                    baseXaxis.options.maxPadding,\n                zoomEnabled: false\n            }, chart.inverted ? {\n                offsets: offsets,\n                width: height\n            } : {\n                offsets: offsets,\n                height: height\n            }), 'xAxis');\n            navigator.yAxis = new (highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default())(chart, Navigator_merge(navigatorOptions.yAxis, {\n                alignTicks: false,\n                offset: 0,\n                index: yAxisIndex,\n                isInternal: true,\n                reversed: Navigator_pick((navigatorOptions.yAxis &&\n                    navigatorOptions.yAxis.reversed), (chart.yAxis[0] && chart.yAxis[0].reversed), false), // #14060\n                zoomEnabled: false\n            }, chart.inverted ? {\n                width: height\n            } : {\n                height: height\n            }), 'yAxis');\n            // If we have a base series, initialize the navigator series\n            if (baseSeries || navigatorOptions.series.data) {\n                navigator.updateNavigatorSeries(false);\n                // If not, set up an event to listen for added series\n            }\n            else if (chart.series.length === 0) {\n                navigator.unbindRedraw = Navigator_addEvent(chart, 'beforeRedraw', function () {\n                    // We've got one, now add it as base\n                    if (chart.series.length > 0 && !navigator.series) {\n                        navigator.setBaseSeries();\n                        navigator.unbindRedraw(); // Reset\n                    }\n                });\n            }\n            navigator.reversedExtremes = (chart.inverted && !navigator.xAxis.reversed) || (!chart.inverted && navigator.xAxis.reversed);\n            // Render items, so we can bind events to them:\n            navigator.renderElements();\n            // Add mouse events\n            navigator.addMouseEvents();\n            // In case of scrollbar only, fake an x axis to get translation\n        }\n        else {\n            navigator.xAxis = {\n                chart: chart,\n                navigatorAxis: {\n                    fake: true\n                },\n                translate: function (value, reverse) {\n                    var axis = chart.xAxis[0], ext = axis.getExtremes(), scrollTrackWidth = axis.len - 2 * scrollButtonSize, min = numExt('min', axis.options.min, ext.dataMin), valueRange = numExt('max', axis.options.max, ext.dataMax) - min;\n                    return reverse ?\n                        // From pixel to value\n                        (value * valueRange / scrollTrackWidth) + min :\n                        // From value to pixel\n                        scrollTrackWidth * (value - min) / valueRange;\n                },\n                toPixels: function (value) {\n                    return this.translate(value);\n                },\n                toValue: function (value) {\n                    return this.translate(value, true);\n                }\n            };\n            navigator.xAxis.navigatorAxis.axis = navigator.xAxis;\n            navigator.xAxis.navigatorAxis.toFixedRange = (NavigatorAxisComposition.prototype.toFixedRange.bind(navigator.xAxis.navigatorAxis));\n        }\n        // Initialize the scrollbar\n        if (chart.options.scrollbar.enabled) {\n            var options = Navigator_merge(chart.options.scrollbar, { vertical: chart.inverted });\n            if (!Navigator_isNumber(options.margin) && navigator.navigatorEnabled) {\n                options.margin = chart.inverted ? -3 : 3;\n            }\n            chart.scrollbar = navigator.scrollbar = new Scrollbar_Scrollbar(chart.renderer, options, chart);\n            Navigator_addEvent(navigator.scrollbar, 'changed', function (e) {\n                var range = navigator.size,\n                    to = range * this.to,\n                    from = range * this.from;\n                navigator.hasDragged = navigator.scrollbar.hasDragged;\n                navigator.render(0, 0, from, to);\n                if (this.shouldUpdateExtremes(e.DOMType)) {\n                    setTimeout(function () {\n                        navigator.onMouseUp(e);\n                    });\n                }\n            });\n        }\n        // Add data events\n        navigator.addBaseSeriesEvents();\n        // Add redraw events\n        navigator.addChartEvents();\n    };\n    /**\n     * Set the opposite property on navigator\n     *\n     * @private\n     */\n    Navigator.prototype.setOpposite = function () {\n        var navigatorOptions = this.navigatorOptions,\n            navigatorEnabled = this.navigatorEnabled,\n            chart = this.chart;\n        this.opposite = Navigator_pick(navigatorOptions.opposite, Boolean(!navigatorEnabled && chart.inverted)); // #6262\n    };\n    /**\n     * Get the union data extremes of the chart - the outer data extremes of the\n     * base X axis and the navigator axis.\n     *\n     * @private\n     * @function Highcharts.Navigator#getUnionExtremes\n     */\n    Navigator.prototype.getUnionExtremes = function (returnFalseOnNoBaseSeries) {\n        var baseAxis = this.chart.xAxis[0],\n            time = this.chart.time,\n            navAxis = this.xAxis,\n            navAxisOptions = navAxis.options,\n            baseAxisOptions = baseAxis.options;\n        var ret;\n        if (!returnFalseOnNoBaseSeries || baseAxis.dataMin !== null) {\n            ret = {\n                dataMin: Navigator_pick(// #4053\n                time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.min), numExt('min', time.parse(baseAxisOptions.min), baseAxis.dataMin, navAxis.dataMin, navAxis.min)),\n                dataMax: Navigator_pick(time.parse(navAxisOptions === null || navAxisOptions === void 0 ? void 0 : navAxisOptions.max), numExt('max', time.parse(baseAxisOptions.max), baseAxis.dataMax, navAxis.dataMax, navAxis.max))\n            };\n        }\n        return ret;\n    };\n    /**\n     * Set the base series and update the navigator series from this. With a bit\n     * of modification we should be able to make this an API method to be called\n     * from the outside\n     *\n     * @private\n     * @function Highcharts.Navigator#setBaseSeries\n     * @param {Highcharts.SeriesOptionsType} [baseSeriesOptions]\n     *        Additional series options for a navigator\n     * @param {boolean} [redraw]\n     *        Whether to redraw after update.\n     */\n    Navigator.prototype.setBaseSeries = function (baseSeriesOptions, redraw) {\n        var chart = this.chart,\n            baseSeries = this.baseSeries = [];\n        baseSeriesOptions = (baseSeriesOptions ||\n            chart.options && chart.options.navigator.baseSeries ||\n            (chart.series.length ?\n                // Find the first non-navigator series (#8430)\n                find(chart.series, function (s) { return (!s.options.isInternal); }).index :\n                0));\n        // Iterate through series and add the ones that should be shown in\n        // navigator.\n        (chart.series || []).forEach(function (series, i) {\n            if (\n            // Don't include existing nav series\n            !series.options.isInternal &&\n                (series.options.showInNavigator ||\n                    (i === baseSeriesOptions ||\n                        series.options.id === baseSeriesOptions) &&\n                        series.options.showInNavigator !== false)) {\n                baseSeries.push(series);\n            }\n        });\n        // When run after render, this.xAxis already exists\n        if (this.xAxis && !this.xAxis.navigatorAxis.fake) {\n            this.updateNavigatorSeries(true, redraw);\n        }\n    };\n    /**\n     * Update series in the navigator from baseSeries, adding new if does not\n     * exist.\n     *\n     * @private\n     * @function Highcharts.Navigator.updateNavigatorSeries\n     */\n    Navigator.prototype.updateNavigatorSeries = function (addEvents, redraw) {\n        var _a,\n            _b;\n        var navigator = this,\n            chart = navigator.chart,\n            baseSeries = navigator.baseSeries,\n            navSeriesMixin = {\n                enableMouseTracking: false,\n                index: null, // #6162\n                linkedTo: null, // #6734\n                group: 'nav', // For columns\n                padXAxis: false,\n                xAxis: (_a = this.navigatorOptions.xAxis) === null || _a === void 0 ? void 0 : _a.id,\n                yAxis: (_b = this.navigatorOptions.yAxis) === null || _b === void 0 ? void 0 : _b.id,\n                showInLegend: false,\n                stacking: void 0, // #4823\n                isInternal: true,\n                states: {\n                    inactive: {\n                        opacity: 1\n                    }\n                }\n            }, \n            // Remove navigator series that are no longer in the baseSeries\n            navigatorSeries = navigator.series =\n                (navigator.series || []).filter(function (navSeries) {\n                    var base = navSeries.baseSeries;\n                if (baseSeries.indexOf(base) < 0) { // Not in array\n                    // If there is still a base series connected to this\n                    // series, remove event handler and reference.\n                    if (base) {\n                        Navigator_removeEvent(base, 'updatedData', navigator.updatedDataHandler);\n                        delete base.navigatorSeries;\n                    }\n                    // Kill the nav series. It may already have been\n                    // destroyed (#8715).\n                    if (navSeries.chart) {\n                        navSeries.destroy();\n                    }\n                    return false;\n                }\n                return true;\n            });\n        var baseOptions,\n            mergedNavSeriesOptions,\n            chartNavigatorSeriesOptions = navigator.navigatorOptions.series,\n            baseNavigatorOptions;\n        // Go through each base series and merge the options to create new\n        // series\n        if (baseSeries && baseSeries.length) {\n            baseSeries.forEach(function (base) {\n                var _a;\n                var linkedNavSeries = base.navigatorSeries,\n                    userNavOptions = Navigator_extend(\n                    // Grab color and visibility from base as default\n                    {\n                        color: base.color,\n                        visible: base.visible\n                    }, !Navigator_isArray(chartNavigatorSeriesOptions) ?\n                        chartNavigatorSeriesOptions :\n                        Navigator_defaultOptions.navigator.series);\n                // Don't update if the series exists in nav and we have disabled\n                // adaptToUpdatedData.\n                if (linkedNavSeries &&\n                    navigator.navigatorOptions.adaptToUpdatedData === false) {\n                    return;\n                }\n                navSeriesMixin.name = 'Navigator ' + baseSeries.length;\n                baseOptions = base.options || {};\n                baseNavigatorOptions = baseOptions.navigatorOptions || {};\n                // The dataLabels options are not merged correctly\n                // if the settings are an array, #13847.\n                userNavOptions.dataLabels = splat(userNavOptions.dataLabels);\n                mergedNavSeriesOptions = Navigator_merge(baseOptions, navSeriesMixin, userNavOptions, baseNavigatorOptions);\n                // Once nav series type is resolved, pick correct pointRange\n                mergedNavSeriesOptions.pointRange = Navigator_pick(\n                // Stricte set pointRange in options\n                userNavOptions.pointRange, baseNavigatorOptions.pointRange, \n                // Fallback to default values, e.g. `null` for column\n                Navigator_defaultOptions.plotOptions[mergedNavSeriesOptions.type || 'line'].pointRange);\n                // Merge data separately. Do a slice to avoid mutating the\n                // navigator options from base series (#4923).\n                var navigatorSeriesData = baseNavigatorOptions.data || userNavOptions.data;\n                navigator.hasNavigatorData =\n                    navigator.hasNavigatorData || !!navigatorSeriesData;\n                mergedNavSeriesOptions.data = (navigatorSeriesData ||\n                    ((_a = baseOptions.data) === null || _a === void 0 ? void 0 : _a.slice(0)));\n                // Update or add the series\n                if (linkedNavSeries && linkedNavSeries.options) {\n                    linkedNavSeries.update(mergedNavSeriesOptions, redraw);\n                }\n                else {\n                    base.navigatorSeries = chart.initSeries(mergedNavSeriesOptions);\n                    // Set data on initial run with dataSorting enabled (#20318)\n                    chart.setSortedData();\n                    base.navigatorSeries.baseSeries = base; // Store ref\n                    navigatorSeries.push(base.navigatorSeries);\n                }\n            });\n        }\n        // If user has defined data (and no base series) or explicitly defined\n        // navigator.series as an array, we create these series on top of any\n        // base series.\n        if (chartNavigatorSeriesOptions.data &&\n            !(baseSeries && baseSeries.length) ||\n            Navigator_isArray(chartNavigatorSeriesOptions)) {\n            navigator.hasNavigatorData = false;\n            // Allow navigator.series to be an array\n            chartNavigatorSeriesOptions =\n                splat(chartNavigatorSeriesOptions);\n            chartNavigatorSeriesOptions.forEach(function (userSeriesOptions, i) {\n                navSeriesMixin.name =\n                    'Navigator ' + (navigatorSeries.length + 1);\n                mergedNavSeriesOptions = Navigator_merge(Navigator_defaultOptions.navigator.series, {\n                    // Since we don't have a base series to pull color from,\n                    // try to fake it by using color from series with same\n                    // index. Otherwise pull from the colors array. We need\n                    // an explicit color as otherwise updates will increment\n                    // color counter and we'll get a new color for each\n                    // update of the nav series.\n                    color: chart.series[i] &&\n                        !chart.series[i].options.isInternal &&\n                        chart.series[i].color ||\n                        chart.options.colors[i] ||\n                        chart.options.colors[0]\n                }, navSeriesMixin, userSeriesOptions);\n                mergedNavSeriesOptions.data = userSeriesOptions.data;\n                if (mergedNavSeriesOptions.data) {\n                    navigator.hasNavigatorData = true;\n                    navigatorSeries.push(chart.initSeries(mergedNavSeriesOptions));\n                }\n            });\n        }\n        if (addEvents) {\n            this.addBaseSeriesEvents();\n        }\n    };\n    /**\n     * Add data events.\n     * For example when main series is updated we need to recalculate extremes\n     *\n     * @private\n     * @function Highcharts.Navigator#addBaseSeriesEvent\n     */\n    Navigator.prototype.addBaseSeriesEvents = function () {\n        var _this = this;\n        var navigator = this,\n            baseSeries = navigator.baseSeries || [];\n        // Bind modified extremes event to first base's xAxis only.\n        // In event of > 1 base-xAxes, the navigator will ignore those.\n        // Adding this multiple times to the same axis is no problem, as\n        // duplicates should be discarded by the browser.\n        if (baseSeries[0] && baseSeries[0].xAxis) {\n            baseSeries[0].eventsToUnbind.push(Navigator_addEvent(baseSeries[0].xAxis, 'foundExtremes', this.modifyBaseAxisExtremes));\n        }\n        baseSeries.forEach(function (base) {\n            // Link base series show/hide to navigator series visibility\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'show', function () {\n                if (this.navigatorSeries) {\n                    this.navigatorSeries.setVisible(true, false);\n                }\n            }));\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'hide', function () {\n                if (this.navigatorSeries) {\n                    this.navigatorSeries.setVisible(false, false);\n                }\n            }));\n            // Respond to updated data in the base series, unless explicitly\n            // not adapting to data changes.\n            if (_this.navigatorOptions.adaptToUpdatedData !== false) {\n                if (base.xAxis) {\n                    base.eventsToUnbind.push(Navigator_addEvent(base, 'updatedData', _this.updatedDataHandler));\n                }\n            }\n            // Handle series removal\n            base.eventsToUnbind.push(Navigator_addEvent(base, 'remove', function () {\n                if (baseSeries) {\n                    erase(baseSeries, base); // #21043\n                }\n                if (this.navigatorSeries && navigator.series) {\n                    erase(navigator.series, this.navigatorSeries);\n                    if (Navigator_defined(this.navigatorSeries.options)) {\n                        this.navigatorSeries.remove(false);\n                    }\n                    delete this.navigatorSeries;\n                }\n            }));\n        });\n    };\n    /**\n     * Get minimum from all base series connected to the navigator\n     * @private\n     * @param {number} currentSeriesMin\n     *        Minium from the current series\n     * @return {number}\n     *         Minimum from all series\n     */\n    Navigator.prototype.getBaseSeriesMin = function (currentSeriesMin) {\n        return this.baseSeries.reduce(function (min, series) {\n            var _a;\n            // #10193\n            return Math.min(min, (_a = series.getColumn('x')[0]) !== null && _a !== void 0 ? _a : min);\n        }, currentSeriesMin);\n    };\n    /**\n     * Set the navigator x axis extremes to reflect the total. The navigator\n     * extremes should always be the extremes of the union of all series in the\n     * chart as well as the navigator series.\n     *\n     * @private\n     * @function Highcharts.Navigator#modifyNavigatorAxisExtremes\n     */\n    Navigator.prototype.modifyNavigatorAxisExtremes = function () {\n        var xAxis = this.xAxis;\n        if (typeof xAxis.getExtremes !== 'undefined') {\n            var unionExtremes = this.getUnionExtremes(true);\n            if (unionExtremes &&\n                (unionExtremes.dataMin !== xAxis.min ||\n                    unionExtremes.dataMax !== xAxis.max)) {\n                xAxis.min = unionExtremes.dataMin;\n                xAxis.max = unionExtremes.dataMax;\n            }\n        }\n    };\n    /**\n     * Hook to modify the base axis extremes with information from the Navigator\n     *\n     * @private\n     * @function Highcharts.Navigator#modifyBaseAxisExtremes\n     */\n    Navigator.prototype.modifyBaseAxisExtremes = function () {\n        var _a;\n        var baseXAxis = this,\n            navigator = baseXAxis.chart.navigator,\n            baseExtremes = baseXAxis.getExtremes(),\n            baseMin = baseExtremes.min,\n            baseMax = baseExtremes.max,\n            baseDataMin = baseExtremes.dataMin,\n            baseDataMax = baseExtremes.dataMax,\n            range = baseMax - baseMin,\n            stickToMin = navigator.stickToMin,\n            stickToMax = navigator.stickToMax,\n            overscroll = Navigator_pick((_a = baseXAxis.ordinal) === null || _a === void 0 ? void 0 : _a.convertOverscroll(baseXAxis.options.overscroll), 0),\n            navigatorSeries = navigator.series && navigator.series[0],\n            hasSetExtremes = !!baseXAxis.setExtremes, \n            // When the extremes have been set by range selector button, don't\n            // stick to min or max. The range selector buttons will handle the\n            // extremes. (#5489)\n            unmutable = baseXAxis.eventArgs &&\n                baseXAxis.eventArgs.trigger === 'rangeSelectorButton';\n        var newMax,\n            newMin;\n        if (!unmutable) {\n            // If the zoomed range is already at the min, move it to the right\n            // as new data comes in\n            if (stickToMin) {\n                newMin = baseDataMin;\n                newMax = newMin + range;\n            }\n            // If the zoomed range is already at the max, move it to the right\n            // as new data comes in\n            if (stickToMax) {\n                newMax = baseDataMax + overscroll;\n                // If stickToMin is true, the new min value is set above\n                if (!stickToMin) {\n                    newMin = Math.max(baseDataMin, // Don't go below data extremes (#13184)\n                    newMax - range, navigator.getBaseSeriesMin(navigatorSeries && navigatorSeries.xData ?\n                        navigatorSeries.xData[0] :\n                        -Number.MAX_VALUE));\n                }\n            }\n            // Update the extremes\n            if (hasSetExtremes && (stickToMin || stickToMax)) {\n                if (Navigator_isNumber(newMin)) {\n                    baseXAxis.min = baseXAxis.userMin = newMin;\n                    baseXAxis.max = baseXAxis.userMax = newMax;\n                }\n            }\n        }\n        // Reset\n        navigator.stickToMin =\n            navigator.stickToMax = null;\n    };\n    /**\n     * Handler for updated data on the base series. When data is modified, the\n     * navigator series must reflect it. This is called from the Chart.redraw\n     * function before axis and series extremes are computed.\n     *\n     * @private\n     * @function Highcharts.Navigator#updateDataHandler\n     */\n    Navigator.prototype.updatedDataHandler = function () {\n        var navigator = this.chart.navigator,\n            baseSeries = this,\n            navigatorSeries = this.navigatorSeries,\n            shouldStickToMax = navigator.reversedExtremes ?\n                Math.round(navigator.zoomedMin) === 0 :\n                Math.round(navigator.zoomedMax) >= Math.round(navigator.size);\n        // If the scrollbar is scrolled all the way to the right, keep right as\n        // new data comes in, unless user set navigator.stickToMax to false.\n        navigator.stickToMax = Navigator_pick(this.chart.options.navigator &&\n            this.chart.options.navigator.stickToMax, shouldStickToMax);\n        navigator.stickToMin = navigator.shouldStickToMin(baseSeries, navigator);\n        // Set the navigator series data to the new data of the base series\n        if (navigatorSeries && !navigator.hasNavigatorData) {\n            navigatorSeries.options.pointStart = baseSeries.getColumn('x')[0];\n            navigatorSeries.setData(baseSeries.options.data, false, null, false); // #5414\n        }\n    };\n    /**\n     * Detect if the zoomed area should stick to the minimum, #14742.\n     *\n     * @private\n     * @function Highcharts.Navigator#shouldStickToMin\n     */\n    Navigator.prototype.shouldStickToMin = function (baseSeries, navigator) {\n        var xDataMin = navigator.getBaseSeriesMin(baseSeries.getColumn('x')[0]),\n            xAxis = baseSeries.xAxis,\n            max = xAxis.max,\n            min = xAxis.min,\n            range = xAxis.options.range;\n        var stickToMin = true;\n        if (Navigator_isNumber(max) && Navigator_isNumber(min)) {\n            // If range declared, stick to the minimum only if the range\n            // is smaller than the data set range.\n            if (range && max - xDataMin > 0) {\n                stickToMin = max - xDataMin < range;\n            }\n            else {\n                // If the current axis minimum falls outside the new\n                // updated dataset, we must adjust.\n                stickToMin = min <= xDataMin;\n            }\n        }\n        else {\n            stickToMin = false; // #15864\n        }\n        return stickToMin;\n    };\n    /**\n     * Add chart events, like redrawing navigator, when chart requires that.\n     *\n     * @private\n     * @function Highcharts.Navigator#addChartEvents\n     */\n    Navigator.prototype.addChartEvents = function () {\n        if (!this.eventsToUnbind) {\n            this.eventsToUnbind = [];\n        }\n        this.eventsToUnbind.push(\n        // Move the scrollbar after redraw, like after data updata even if\n        // axes don't redraw\n        Navigator_addEvent(this.chart, 'redraw', function () {\n            var navigator = this.navigator,\n                xAxis = navigator && (navigator.baseSeries &&\n                    navigator.baseSeries[0] &&\n                    navigator.baseSeries[0].xAxis ||\n                    this.xAxis[0]); // #5709, #13114\n                if (xAxis) {\n                    navigator.render(xAxis.min,\n                xAxis.max);\n            }\n        }), \n        // Make room for the navigator, can be placed around the chart:\n        Navigator_addEvent(this.chart, 'getMargins', function () {\n            var chart = this,\n                navigator = chart.navigator;\n            var marginName = navigator.opposite ?\n                    'plotTop' : 'marginBottom';\n            if (chart.inverted) {\n                marginName = navigator.opposite ?\n                    'marginRight' : 'plotLeft';\n            }\n            chart[marginName] =\n                (chart[marginName] || 0) + (navigator.navigatorEnabled || !chart.inverted ?\n                    navigator.height + navigator.scrollbarHeight :\n                    0) + navigator.navigatorOptions.margin;\n        }), Navigator_addEvent(Navigator, 'setRange', function (e) {\n            this.chart.xAxis[0].setExtremes(e.min, e.max, e.redraw, e.animation, e.eventArguments);\n        }));\n    };\n    /**\n     * Destroys allocated elements.\n     *\n     * @private\n     * @function Highcharts.Navigator#destroy\n     */\n    Navigator.prototype.destroy = function () {\n        var _this = this;\n        // Disconnect events added in addEvents\n        this.removeEvents();\n        if (this.xAxis) {\n            erase(this.chart.xAxis, this.xAxis);\n            erase(this.chart.axes, this.xAxis);\n        }\n        if (this.yAxis) {\n            erase(this.chart.yAxis, this.yAxis);\n            erase(this.chart.axes, this.yAxis);\n        }\n        // Destroy series\n        (this.series || []).forEach(function (s) {\n            if (s.destroy) {\n                s.destroy();\n            }\n        });\n        // Destroy properties\n        [\n            'series', 'xAxis', 'yAxis', 'shades', 'outline', 'scrollbarTrack',\n            'scrollbarRifles', 'scrollbarGroup', 'scrollbar', 'navigatorGroup',\n            'rendered'\n        ].forEach(function (prop) {\n            if (_this[prop] && _this[prop].destroy) {\n                _this[prop].destroy();\n            }\n            _this[prop] = null;\n        });\n        // Destroy elements in collection\n        [this.handles].forEach(function (coll) {\n            Navigator_destroyObjectProperties(coll);\n        });\n        this.navigatorEnabled = false;\n    };\n    return Navigator;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Navigator_Navigator = (Navigator);\n\n;// ./code/es5/es-modules/Data/DataTableCore.js\n/* *\n *\n *  (c) 2009-2024 Highsoft AS\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n *  Authors:\n *  - Sophie Bremer\n *  - Gøran Slettemark\n *  - Torstein Hønsi\n *\n * */\n\n\nvar DataTableCore_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, DataTableCore_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, uniqueKey = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).uniqueKey;\n/* *\n *\n *  Class\n *\n * */\n/**\n * Class to manage columns and rows in a table structure. It provides methods\n * to add, remove, and manipulate columns and rows, as well as to retrieve data\n * from specific cells.\n *\n * @class\n * @name Highcharts.DataTable\n *\n * @param {Highcharts.DataTableOptions} [options]\n * Options to initialize the new DataTable instance.\n */\nvar DataTableCore = /** @class */ (function () {\n    /**\n     * Constructs an instance of the DataTable class.\n     *\n     * @example\n     * const dataTable = new Highcharts.DataTableCore({\n     *   columns: {\n     *     year: [2020, 2021, 2022, 2023],\n     *     cost: [11, 13, 12, 14],\n     *     revenue: [12, 15, 14, 18]\n     *   }\n     * });\n\n     *\n     * @param {Highcharts.DataTableOptions} [options]\n     * Options to initialize the new DataTable instance.\n     */\n    function DataTableCore(options) {\n        if (options === void 0) { options = {}; }\n        var _this = this;\n        /**\n         * Whether the ID was automatic generated or given in the constructor.\n         *\n         * @name Highcharts.DataTable#autoId\n         * @type {boolean}\n         */\n        this.autoId = !options.id;\n        this.columns = {};\n        /**\n         * ID of the table for indentification purposes.\n         *\n         * @name Highcharts.DataTable#id\n         * @type {string}\n         */\n        this.id = (options.id || uniqueKey());\n        this.modified = this;\n        this.rowCount = 0;\n        this.versionTag = uniqueKey();\n        var rowCount = 0;\n        objectEach(options.columns || {}, function (column, columnName) {\n            _this.columns[columnName] = column.slice();\n            rowCount = Math.max(rowCount, column.length);\n        });\n        this.applyRowCount(rowCount);\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Applies a row count to the table by setting the `rowCount` property and\n     * adjusting the length of all columns.\n     *\n     * @private\n     * @param {number} rowCount The new row count.\n     */\n    DataTableCore.prototype.applyRowCount = function (rowCount) {\n        this.rowCount = rowCount;\n        objectEach(this.columns, function (column) {\n            if (DataTableCore_isArray(column)) { // Not on typed array\n                column.length = rowCount;\n            }\n        });\n    };\n    /**\n     * Fetches the given column by the canonical column name. Simplified version\n     * of the full `DataTable.getRow` method, always returning by reference.\n     *\n     * @param {string} columnName\n     * Name of the column to get.\n     *\n     * @return {Highcharts.DataTableColumn|undefined}\n     * A copy of the column, or `undefined` if not found.\n     */\n    DataTableCore.prototype.getColumn = function (columnName, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    asReference) {\n        return this.columns[columnName];\n    };\n    /**\n     * Retrieves all or the given columns. Simplified version of the full\n     * `DataTable.getColumns` method, always returning by reference.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names to retrieve.\n     *\n     * @return {Highcharts.DataTableColumnCollection}\n     * Collection of columns. If a requested column was not found, it is\n     * `undefined`.\n     */\n    DataTableCore.prototype.getColumns = function (columnNames, \n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    asReference) {\n        var _this = this;\n        return (columnNames || Object.keys(this.columns)).reduce(function (columns, columnName) {\n            columns[columnName] = _this.columns[columnName];\n            return columns;\n        }, {});\n    };\n    /**\n     * Retrieves the row at a given index.\n     *\n     * @param {number} rowIndex\n     * Row index to retrieve. First row has index 0.\n     *\n     * @param {Array<string>} [columnNames]\n     * Column names to retrieve.\n     *\n     * @return {Record<string, number|string|undefined>|undefined}\n     * Returns the row values, or `undefined` if not found.\n     */\n    DataTableCore.prototype.getRow = function (rowIndex, columnNames) {\n        var _this = this;\n        return (columnNames || Object.keys(this.columns)).map(function (key) { var _a; return (_a = _this.columns[key]) === null || _a === void 0 ? void 0 : _a[rowIndex]; });\n    };\n    /**\n     * Sets cell values for a column. Will insert a new column, if not found.\n     *\n     * @param {string} columnName\n     * Column name to set.\n     *\n     * @param {Highcharts.DataTableColumn} [column]\n     * Values to set in the column.\n     *\n     * @param {number} [rowIndex=0]\n     * Index of the first row to change. (Default: 0)\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setColumns\n     * @emits #afterSetColumns\n     */\n    DataTableCore.prototype.setColumn = function (columnName, column, rowIndex, eventDetail) {\n        var _a;\n        if (column === void 0) { column = []; }\n        if (rowIndex === void 0) { rowIndex = 0; }\n        this.setColumns((_a = {}, _a[columnName] = column, _a), rowIndex, eventDetail);\n    };\n    /**\n     * * Sets cell values for multiple columns. Will insert new columns, if not\n     * found. Simplified version of the full `DataTable.setColumns`, limited to\n     * full replacement of the columns (undefined `rowIndex`).\n     *\n     * @param {Highcharts.DataTableColumnCollection} columns\n     * Columns as a collection, where the keys are the column names.\n     *\n     * @param {number} [rowIndex]\n     * Index of the first row to change. Keep undefined to reset.\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #setColumns\n     * @emits #afterSetColumns\n     */\n    DataTableCore.prototype.setColumns = function (columns, rowIndex, eventDetail) {\n        var _this = this;\n        var rowCount = this.rowCount;\n        objectEach(columns, function (column, columnName) {\n            _this.columns[columnName] = column.slice();\n            rowCount = column.length;\n        });\n        this.applyRowCount(rowCount);\n        if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n            DataTableCore_fireEvent(this, 'afterSetColumns');\n            this.versionTag = uniqueKey();\n        }\n    };\n    /**\n     * Sets cell values of a row. Will insert a new row if no index was\n     * provided, or if the index is higher than the total number of table rows.\n     * A simplified version of the full `DateTable.setRow`, limited to objects.\n     *\n     * @param {Record<string, number|string|undefined>} row\n     * Cell values to set.\n     *\n     * @param {number} [rowIndex]\n     * Index of the row to set. Leave `undefind` to add as a new row.\n     *\n     * @param {boolean} [insert]\n     * Whether to insert the row at the given index, or to overwrite the row.\n     *\n     * @param {Record<string, (boolean|number|string|null|undefined)>} [eventDetail]\n     * Custom information for pending events.\n     *\n     * @emits #afterSetRows\n     */\n    DataTableCore.prototype.setRow = function (row, rowIndex, insert, eventDetail) {\n        if (rowIndex === void 0) { rowIndex = this.rowCount; }\n        var columns = this.columns,\n            indexRowCount = insert ? this.rowCount + 1 : rowIndex + 1;\n        objectEach(row, function (cellValue, columnName) {\n            var column = columns[columnName] ||\n                    (eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.addColumns) !== false && new Array(indexRowCount);\n            if (column) {\n                if (insert) {\n                    column.splice(rowIndex, 0, cellValue);\n                }\n                else {\n                    column[rowIndex] = cellValue;\n                }\n                columns[columnName] = column;\n            }\n        });\n        if (indexRowCount > this.rowCount) {\n            this.applyRowCount(indexRowCount);\n        }\n        if (!(eventDetail === null || eventDetail === void 0 ? void 0 : eventDetail.silent)) {\n            DataTableCore_fireEvent(this, 'afterSetRows');\n            this.versionTag = uniqueKey();\n        }\n    };\n    return DataTableCore;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Data_DataTableCore = (DataTableCore);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * A column of values in a data table.\n * @typedef {Array<boolean|null|number|string|undefined>} Highcharts.DataTableColumn\n */ /**\n* A collection of data table columns defined by a object where the key is the\n* column name and the value is an array of the column values.\n* @typedef {Record<string, Highcharts.DataTableColumn>} Highcharts.DataTableColumnCollection\n*/\n/**\n * Options for the `DataTable` or `DataTableCore` classes.\n * @interface Highcharts.DataTableOptions\n */ /**\n* The column options for the data table. The columns are defined by an object\n* where the key is the column ID and the value is an array of the column\n* values.\n*\n* @name Highcharts.DataTableOptions.columns\n* @type {Highcharts.DataTableColumnCollection|undefined}\n*/ /**\n* Custom ID to identify the new DataTable instance.\n*\n* @name Highcharts.DataTableOptions.id\n* @type {string|undefined}\n*/\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/Core/Axis/OrdinalAxis.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar OrdinalAxis_assign = (undefined && undefined.__assign) || function () {\n    OrdinalAxis_assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return OrdinalAxis_assign.apply(this, arguments);\n};\n\n\n\n\nvar OrdinalAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, OrdinalAxis_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, OrdinalAxis_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, OrdinalAxis_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, OrdinalAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, timeUnits = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).timeUnits, OrdinalAxis_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString;\n/* *\n *\n *  Composition\n *\n * */\n/**\n * Extends the axis with ordinal support.\n * @private\n */\nvar OrdinalAxis;\n(function (OrdinalAxis) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Extends the axis with ordinal support.\n     *\n     * @private\n     *\n     * @param AxisClass\n     * Axis class to extend.\n     *\n     * @param ChartClass\n     * Chart class to use.\n     *\n     * @param SeriesClass\n     * Series class to use.\n     */\n    function compose(AxisClass, SeriesClass, ChartClass) {\n        var axisProto = AxisClass.prototype;\n        if (!axisProto.ordinal2lin) {\n            axisProto.getTimeTicks = getTimeTicks;\n            axisProto.index2val = index2val;\n            axisProto.lin2val = lin2val;\n            axisProto.val2lin = val2lin;\n            // Record this to prevent overwriting by broken-axis module (#5979)\n            axisProto.ordinal2lin = axisProto.val2lin;\n            OrdinalAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n            OrdinalAxis_addEvent(AxisClass, 'foundExtremes', onAxisFoundExtremes);\n            OrdinalAxis_addEvent(AxisClass, 'afterSetScale', onAxisAfterSetScale);\n            OrdinalAxis_addEvent(AxisClass, 'initialAxisTranslation', onAxisInitialAxisTranslation);\n            OrdinalAxis_addEvent(ChartClass, 'pan', onChartPan);\n            OrdinalAxis_addEvent(ChartClass, 'touchpan', onChartPan);\n            OrdinalAxis_addEvent(SeriesClass, 'updatedData', onSeriesUpdatedData);\n        }\n        return AxisClass;\n    }\n    OrdinalAxis.compose = compose;\n    /**\n     * In an ordinal axis, there might be areas with dense concentrations of\n     * points, then large gaps between some. Creating equally distributed\n     * ticks over this entire range may lead to a huge number of ticks that\n     * will later be removed. So instead, break the positions up in\n     * segments, find the tick positions for each segment then concatenize\n     * them. This method is used from both data grouping logic and X axis\n     * tick position logic.\n     * @private\n     */\n    function getTimeTicks(normalizedInterval, min, max, startOfWeek, positions, closestDistance, findHigherRanks) {\n        if (positions === void 0) { positions = []; }\n        if (closestDistance === void 0) { closestDistance = 0; }\n        var higherRanks = {},\n            tickPixelIntervalOption = this.options.tickPixelInterval,\n            time = this.chart.time, \n            // Record all the start positions of a segment, to use when\n            // deciding what's a gap in the data.\n            segmentStarts = [];\n        var end,\n            segmentPositions,\n            hasCrossedHigherRank,\n            info,\n            outsideMax,\n            start = 0,\n            groupPositions = [],\n            lastGroupPosition = -Number.MAX_VALUE;\n        // The positions are not always defined, for example for ordinal\n        // positions when data has regular interval (#1557, #2090)\n        if ((!this.options.ordinal && !this.options.breaks) ||\n            !positions ||\n            positions.length < 3 ||\n            typeof min === 'undefined') {\n            return time.getTimeTicks.apply(time, arguments);\n        }\n        // Analyze the positions array to split it into segments on gaps\n        // larger than 5 times the closest distance. The closest distance is\n        // already found at this point, so we reuse that instead of\n        // computing it again.\n        var posLength = positions.length;\n        for (end = 0; end < posLength; end++) {\n            outsideMax = end && positions[end - 1] > max;\n            if (positions[end] < min) { // Set the last position before min\n                start = end;\n            }\n            if (end === posLength - 1 ||\n                positions[end + 1] - positions[end] > closestDistance * 5 ||\n                outsideMax) {\n                // For each segment, calculate the tick positions from the\n                // getTimeTicks utility function. The interval will be the\n                // same regardless of how long the segment is.\n                if (positions[end] > lastGroupPosition) { // #1475\n                    segmentPositions = time.getTimeTicks(normalizedInterval, positions[start], positions[end], startOfWeek);\n                    // Prevent duplicate groups, for example for multiple\n                    // segments within one larger time frame (#1475)\n                    while (segmentPositions.length &&\n                        segmentPositions[0] <= lastGroupPosition) {\n                        segmentPositions.shift();\n                    }\n                    if (segmentPositions.length) {\n                        lastGroupPosition =\n                            segmentPositions[segmentPositions.length - 1];\n                    }\n                    segmentStarts.push(groupPositions.length);\n                    groupPositions = groupPositions.concat(segmentPositions);\n                }\n                // Set start of next segment\n                start = end + 1;\n            }\n            if (outsideMax) {\n                break;\n            }\n        }\n        // Get the grouping info from the last of the segments. The info is\n        // the same for all segments.\n        if (segmentPositions) {\n            info = segmentPositions.info;\n            // Optionally identify ticks with higher rank, for example\n            // when the ticks have crossed midnight.\n            if (findHigherRanks && info.unitRange <= timeUnits.hour) {\n                end = groupPositions.length - 1;\n                // Compare points two by two\n                for (start = 1; start < end; start++) {\n                    if (time.dateFormat('%d', groupPositions[start]) !==\n                        time.dateFormat('%d', groupPositions[start - 1])) {\n                        higherRanks[groupPositions[start]] = 'day';\n                        hasCrossedHigherRank = true;\n                    }\n                }\n                // If the complete array has crossed midnight, we want\n                // to mark the first positions also as higher rank\n                if (hasCrossedHigherRank) {\n                    higherRanks[groupPositions[0]] = 'day';\n                }\n                info.higherRanks = higherRanks;\n            }\n            // Save the info\n            info.segmentStarts = segmentStarts;\n            groupPositions.info = info;\n        }\n        else {\n            error(12, false, this.chart);\n        }\n        // Don't show ticks within a gap in the ordinal axis, where the\n        // space between two points is greater than a portion of the tick\n        // pixel interval\n        if (findHigherRanks && OrdinalAxis_defined(tickPixelIntervalOption)) {\n            var length_1 = groupPositions.length,\n                translatedArr = [],\n                distances = [];\n            var itemToRemove = void 0,\n                translated = void 0,\n                lastTranslated = void 0,\n                medianDistance = void 0,\n                distance = void 0,\n                i = length_1;\n            // Find median pixel distance in order to keep a reasonably even\n            // distance between ticks (#748)\n            while (i--) {\n                translated = this.translate(groupPositions[i]);\n                if (lastTranslated) {\n                    distances[i] = lastTranslated - translated;\n                }\n                translatedArr[i] = lastTranslated = translated;\n            }\n            distances.sort(function (a, b) { return a - b; });\n            medianDistance = distances[Math.floor(distances.length / 2)];\n            if (medianDistance < tickPixelIntervalOption * 0.6) {\n                medianDistance = null;\n            }\n            // Now loop over again and remove ticks where needed\n            i = groupPositions[length_1 - 1] > max ? length_1 - 1 : length_1; // #817\n            lastTranslated = void 0;\n            while (i--) {\n                translated = translatedArr[i];\n                distance = Math.abs(lastTranslated - translated);\n                // #4175 - when axis is reversed, the distance, is negative but\n                // tickPixelIntervalOption positive, so we need to compare the\n                // same values\n                // Remove ticks that are closer than 0.6 times the pixel\n                // interval from the one to the right, but not if it is close to\n                // the median distance (#748).\n                if (lastTranslated &&\n                    distance < tickPixelIntervalOption * 0.8 &&\n                    (medianDistance === null || distance < medianDistance * 0.8)) {\n                    // Is this a higher ranked position with a normal\n                    // position to the right?\n                    if (higherRanks[groupPositions[i]] &&\n                        !higherRanks[groupPositions[i + 1]]) {\n                        // Yes: remove the lower ranked neighbour to the\n                        // right\n                        itemToRemove = i + 1;\n                        lastTranslated = translated; // #709\n                    }\n                    else {\n                        // No: remove this one\n                        itemToRemove = i;\n                    }\n                    groupPositions.splice(itemToRemove, 1);\n                }\n                else {\n                    lastTranslated = translated;\n                }\n            }\n        }\n        return groupPositions;\n    }\n    /**\n     * Get axis position of given index of the extended ordinal positions.\n     * Used only when panning an ordinal axis.\n     *\n     * @private\n     * @function Highcharts.Axis#index2val\n     * @param {number} index\n     * The index value of searched point\n     */\n    function index2val(index) {\n        var axis = this,\n            ordinal = axis.ordinal, \n            // Context could be changed to extendedOrdinalPositions.\n            ordinalPositions = ordinal.positions;\n        // The visible range contains only equally spaced values.\n        if (!ordinalPositions) {\n            return index;\n        }\n        var i = ordinalPositions.length - 1,\n            distance;\n        if (index < 0) { // Out of range, in effect panning to the left\n            index = ordinalPositions[0];\n        }\n        else if (index > i) { // Out of range, panning to the right\n            index = ordinalPositions[i];\n        }\n        else { // Split it up\n            i = Math.floor(index);\n            distance = index - i; // The decimal\n        }\n        if (typeof distance !== 'undefined' &&\n            typeof ordinalPositions[i] !== 'undefined') {\n            return ordinalPositions[i] + (distance ?\n                distance *\n                    (ordinalPositions[i + 1] - ordinalPositions[i]) :\n                0);\n        }\n        return index;\n    }\n    /**\n     * Translate from linear (internal) to axis value.\n     *\n     * @private\n     * @function Highcharts.Axis#lin2val\n     * @param {number} val\n     * The linear abstracted value.\n     */\n    function lin2val(val) {\n        var axis = this,\n            ordinal = axis.ordinal,\n            localMin = axis.old ? axis.old.min : axis.min,\n            localA = axis.old ? axis.old.transA : axis.transA;\n        // Always use extendedPositions (#19816)\n        var positions = ordinal.getExtendedPositions();\n        // In some cases (especially in early stages of the chart creation) the\n        // getExtendedPositions might return undefined.\n        if (positions === null || positions === void 0 ? void 0 : positions.length) {\n            // Convert back from modivied value to pixels. // #15970\n            var pixelVal = OrdinalAxis_correctFloat((val - localMin) * localA +\n                    axis.minPixelPadding),\n                index = OrdinalAxis_correctFloat(ordinal.getIndexOfPoint(pixelVal,\n                positions)),\n                mantissa = OrdinalAxis_correctFloat(index % 1);\n            // Check if the index is inside position array. If true,\n            // read/approximate value for that exact index.\n            if (index >= 0 && index <= positions.length - 1) {\n                var leftNeighbour = positions[Math.floor(index)],\n                    rightNeighbour = positions[Math.ceil(index)],\n                    distance = rightNeighbour - leftNeighbour;\n                return positions[Math.floor(index)] + mantissa * distance;\n            }\n        }\n        // If the value is outside positions array, return initial value\n        return val; // #16784\n    }\n    /**\n     * Internal function to calculate the precise index in ordinalPositions\n     * array.\n     * @private\n     */\n    function getIndexInArray(ordinalPositions, val) {\n        var index = OrdinalAxis.Additions.findIndexOf(ordinalPositions,\n            val,\n            true);\n        if (ordinalPositions[index] === val) {\n            return index;\n        }\n        var percent = (val - ordinalPositions[index]) /\n                (ordinalPositions[index + 1] - ordinalPositions[index]);\n        return index + percent;\n    }\n    /**\n    * @private\n    */\n    function onAxisAfterInit() {\n        var axis = this;\n        if (!axis.ordinal) {\n            axis.ordinal = new OrdinalAxis.Additions(axis);\n        }\n    }\n    /**\n     * @private\n     */\n    function onAxisFoundExtremes() {\n        var axis = this,\n            eventArgs = axis.eventArgs,\n            options = axis.options;\n        if (axis.isXAxis &&\n            OrdinalAxis_defined(options.overscroll) &&\n            options.overscroll !== 0 &&\n            OrdinalAxis_isNumber(axis.max) &&\n            OrdinalAxis_isNumber(axis.min)) {\n            if (axis.options.ordinal && !axis.ordinal.originalOrdinalRange) {\n                // Calculate the original ordinal range\n                axis.ordinal.getExtendedPositions(false);\n            }\n            if (axis.max === axis.dataMax &&\n                (\n                // Panning is an exception. We don't want to apply\n                // overscroll when panning over the dataMax\n                (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'pan' ||\n                    axis.isInternal) &&\n                // Scrollbar buttons are the other execption\n                (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'navigator') {\n                var overscroll = axis.ordinal.convertOverscroll(options.overscroll);\n                axis.max += overscroll;\n                // Live data and buttons require translation for the min:\n                if (!axis.isInternal &&\n                    OrdinalAxis_defined(axis.userMin) &&\n                    (eventArgs === null || eventArgs === void 0 ? void 0 : eventArgs.trigger) !== 'mousewheel') {\n                    axis.min += overscroll;\n                }\n            }\n        }\n    }\n    /**\n     * For ordinal axis, that loads data async, redraw axis after data is\n     * loaded. If we don't do that, axis will have the same extremes as\n     * previously, but ordinal positions won't be calculated. See #10290\n     * @private\n     */\n    function onAxisAfterSetScale() {\n        var axis = this;\n        if (axis.horiz && !axis.isDirty) {\n            axis.isDirty = axis.isOrdinal &&\n                axis.chart.navigator &&\n                !axis.chart.navigator.adaptToUpdatedData;\n        }\n    }\n    /**\n     * @private\n     */\n    function onAxisInitialAxisTranslation() {\n        var axis = this;\n        if (axis.ordinal) {\n            axis.ordinal.beforeSetTickPositions();\n            axis.tickInterval = axis.ordinal.postProcessTickInterval(axis.tickInterval);\n        }\n    }\n    /**\n     * Extending the Chart.pan method for ordinal axes\n     * @private\n     */\n    function onChartPan(e) {\n        var chart = this,\n            xAxis = chart.xAxis[0],\n            overscroll = xAxis.ordinal.convertOverscroll(xAxis.options.overscroll),\n            chartX = e.originalEvent.chartX,\n            panning = chart.options.chart.panning;\n        var runBase = false;\n        if (panning &&\n            panning.type !== 'y' &&\n            xAxis.options.ordinal &&\n            xAxis.series.length &&\n            // On touch devices, let default function handle the pinching\n            (!e.touches || e.touches.length <= 1)) {\n            var mouseDownX = chart.mouseDownX,\n                extremes = xAxis.getExtremes(),\n                dataMin = extremes.dataMin,\n                dataMax = extremes.dataMax,\n                min = extremes.min,\n                max = extremes.max,\n                hoverPoints = chart.hoverPoints,\n                closestPointRange = (xAxis.closestPointRange ||\n                    (xAxis.ordinal && xAxis.ordinal.overscrollPointsRange)),\n                pointPixelWidth = (xAxis.translationSlope *\n                    (xAxis.ordinal.slope || closestPointRange)), \n                // How many ordinal units did we move?\n                movedUnits = Math.round((mouseDownX - chartX) / pointPixelWidth), \n                // Get index of all the chart's points\n                extendedOrdinalPositions = xAxis.ordinal.getExtendedPositions(),\n                extendedAxis = {\n                    ordinal: {\n                        positions: extendedOrdinalPositions,\n                        extendedOrdinalPositions: extendedOrdinalPositions\n                    }\n                },\n                index2val_1 = xAxis.index2val,\n                val2lin_1 = xAxis.val2lin;\n            var trimmedRange = void 0,\n                ordinalPositions = void 0;\n            // Make sure panning to the edges does not decrease the zoomed range\n            if ((min <= dataMin && movedUnits < 0) ||\n                (max + overscroll >= dataMax && movedUnits > 0)) {\n                return;\n            }\n            // We have an ordinal axis, but the data is equally spaced\n            if (!extendedAxis.ordinal.positions) {\n                runBase = true;\n            }\n            else if (Math.abs(movedUnits) > 1) {\n                // Remove active points for shared tooltip\n                if (hoverPoints) {\n                    hoverPoints.forEach(function (point) {\n                        point.setState();\n                    });\n                }\n                // In grouped data series, the last ordinal position represents\n                // the grouped data, which is to the left of the real data max.\n                // If we don't compensate for this, we will be allowed to pan\n                // grouped data series passed the right of the plot area.\n                ordinalPositions = extendedAxis.ordinal.positions;\n                if (dataMax >\n                    ordinalPositions[ordinalPositions.length - 1]) {\n                    ordinalPositions.push(dataMax);\n                }\n                // Get the new min and max values by getting the ordinal index\n                // for the current extreme, then add the moved units and\n                // translate back to values. This happens on the extended\n                // ordinal positions if the new position is out of range, else\n                // it happens on the current x axis which is smaller and faster.\n                chart.setFixedRange(max - min);\n                trimmedRange = xAxis.navigatorAxis\n                    .toFixedRange(void 0, void 0, index2val_1.apply(extendedAxis, [\n                    val2lin_1.apply(extendedAxis, [min, true]) +\n                        movedUnits\n                ]), index2val_1.apply(extendedAxis, [\n                    val2lin_1.apply(extendedAxis, [max, true]) +\n                        movedUnits\n                ]));\n                // Apply it if it is within the available data range\n                if (trimmedRange.min >= Math.min(ordinalPositions[0], min) &&\n                    trimmedRange.max <= Math.max(ordinalPositions[ordinalPositions.length - 1], max) + overscroll) {\n                    xAxis.setExtremes(trimmedRange.min, trimmedRange.max, true, false, { trigger: 'pan' });\n                }\n                chart.mouseDownX = chartX; // Set new reference for next run\n                css(chart.container, { cursor: 'move' });\n            }\n        }\n        else {\n            runBase = true;\n        }\n        // Revert to the linear chart.pan version\n        if (runBase || (panning && /y/.test(panning.type))) {\n            if (overscroll) {\n                xAxis.max = xAxis.dataMax + overscroll;\n            }\n        }\n        else {\n            e.preventDefault();\n        }\n    }\n    /**\n     * @private\n     */\n    function onSeriesUpdatedData() {\n        var xAxis = this.xAxis;\n        // Destroy the extended ordinal index on updated data\n        // and destroy extendedOrdinalPositions, #16055.\n        if (xAxis && xAxis.options.ordinal) {\n            delete xAxis.ordinal.index;\n            delete xAxis.ordinal.originalOrdinalRange;\n        }\n    }\n    /**\n     * Translate from a linear axis value to the corresponding ordinal axis\n     * position. If there are no gaps in the ordinal axis this will be the\n     * same. The translated value is the value that the point would have if\n     * the axis was linear, using the same min and max.\n     *\n     * @private\n     * @function Highcharts.Axis#val2lin\n     * @param {number} val\n     * The axis value.\n     * @param {boolean} [toIndex]\n     * Whether to return the index in the ordinalPositions or the new value.\n     */\n    function val2lin(val, toIndex) {\n        var axis = this,\n            ordinal = axis.ordinal,\n            ordinalPositions = ordinal.positions;\n        var slope = ordinal.slope,\n            extendedOrdinalPositions;\n        if (!ordinalPositions) {\n            return val;\n        }\n        var ordinalLength = ordinalPositions.length;\n        var ordinalIndex;\n        // If the searched value is inside visible plotArea, ivastigate the\n        // value basing on ordinalPositions.\n        if (ordinalPositions[0] <= val &&\n            ordinalPositions[ordinalLength - 1] >= val) {\n            ordinalIndex = getIndexInArray(ordinalPositions, val);\n            // Final return value is based on ordinalIndex\n        }\n        else {\n            extendedOrdinalPositions =\n                ordinal.getExtendedPositions &&\n                    ordinal.getExtendedPositions();\n            if (!(extendedOrdinalPositions && extendedOrdinalPositions.length)) {\n                return val;\n            }\n            var length_2 = extendedOrdinalPositions.length;\n            if (!slope) {\n                slope =\n                    (extendedOrdinalPositions[length_2 - 1] -\n                        extendedOrdinalPositions[0]) /\n                        length_2;\n            }\n            // `originalPointReference` is equal to the index of first point of\n            // ordinalPositions in extendedOrdinalPositions.\n            var originalPositionsReference = getIndexInArray(extendedOrdinalPositions,\n                ordinalPositions[0]);\n            // If the searched value is outside the visiblePlotArea,\n            // check if it is inside extendedOrdinalPositions.\n            if (val >= extendedOrdinalPositions[0] &&\n                val <=\n                    extendedOrdinalPositions[length_2 - 1]) {\n                // Return Value\n                ordinalIndex = getIndexInArray(extendedOrdinalPositions, val) -\n                    originalPositionsReference;\n            }\n            else {\n                if (!toIndex) {\n                    // If the value is outside positions array,\n                    // return initial value, #16784\n                    return val;\n                }\n                // Since ordinal.slope is the average distance between 2\n                // points on visible plotArea, this can be used to calculate\n                // the approximate position of the point, which is outside\n                // the extendedOrdinalPositions.\n                if (val < extendedOrdinalPositions[0]) {\n                    var diff = extendedOrdinalPositions[0] - val,\n                        approximateIndexOffset = diff / slope;\n                    ordinalIndex =\n                        -originalPositionsReference -\n                            approximateIndexOffset;\n                }\n                else {\n                    var diff = val -\n                            extendedOrdinalPositions[length_2 - 1],\n                        approximateIndexOffset = diff / slope;\n                    ordinalIndex =\n                        approximateIndexOffset +\n                            length_2 -\n                            originalPositionsReference;\n                }\n            }\n        }\n        return toIndex ? ordinalIndex : slope * (ordinalIndex || 0) +\n            ordinal.offset;\n    }\n    /* *\n     *\n     *  Classes\n     *\n     * */\n    /**\n     * @private\n     */\n    var Additions = /** @class */ (function () {\n            /* *\n             *\n             *  Constructors\n             *\n             * */\n            /**\n             * @private\n             */\n            function Additions(axis) {\n                this.index = {};\n            this.axis = axis;\n        }\n        /* *\n        *\n        *  Functions\n        *\n        * */\n        /**\n         * Calculate the ordinal positions before tick positions are calculated.\n         * @private\n         */\n        Additions.prototype.beforeSetTickPositions = function () {\n            var _a;\n            var axis = this.axis,\n                ordinal = axis.ordinal,\n                extremes = axis.getExtremes(),\n                min = extremes.min,\n                max = extremes.max,\n                hasBreaks = (_a = axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks,\n                isOrdinal = axis.options.ordinal;\n            var len,\n                uniqueOrdinalPositions,\n                dist,\n                minIndex,\n                maxIndex,\n                slope,\n                i,\n                ordinalPositions = [],\n                overscrollPointsRange = Number.MAX_VALUE,\n                useOrdinal = false,\n                adjustOrdinalExtremesPoints = false,\n                isBoosted = false;\n            // Apply the ordinal logic\n            if (isOrdinal || hasBreaks) { // #4167 YAxis is never ordinal ?\n                var distanceBetweenPoint_1 = 0;\n                axis.series.forEach(function (series, i) {\n                    var xData = series.getColumn('x',\n                        true);\n                    uniqueOrdinalPositions = [];\n                    // For an axis with multiple series, check if the distance\n                    // between points is identical throughout all series.\n                    if (i > 0 &&\n                        series.options.id !== 'highcharts-navigator-series' &&\n                        xData.length > 1) {\n                        adjustOrdinalExtremesPoints = (distanceBetweenPoint_1 !== xData[1] - xData[0]);\n                    }\n                    distanceBetweenPoint_1 = xData[1] - xData[0];\n                    if (series.boosted) {\n                        isBoosted = series.boosted;\n                    }\n                    if (series.reserveSpace() &&\n                        (series\n                            .takeOrdinalPosition !== false || hasBreaks)) {\n                        // Concatenate the processed X data into the existing\n                        // positions, or the empty array\n                        ordinalPositions = ordinalPositions.concat(xData);\n                        len = ordinalPositions.length;\n                        // Remove duplicates (#1588)\n                        ordinalPositions.sort(function (a, b) {\n                            // Without a custom function it is sorted as strings\n                            return a - b;\n                        });\n                        overscrollPointsRange = Math.min(overscrollPointsRange, OrdinalAxis_pick(\n                        // Check for a single-point series:\n                        series.closestPointRange, overscrollPointsRange));\n                        if (len) {\n                            i = 0;\n                            while (i < len - 1) {\n                                if (ordinalPositions[i] !==\n                                    ordinalPositions[i + 1]) {\n                                    uniqueOrdinalPositions.push(ordinalPositions[i + 1]);\n                                }\n                                i++;\n                            }\n                            // Check first item:\n                            if (uniqueOrdinalPositions[0] !==\n                                ordinalPositions[0]) {\n                                uniqueOrdinalPositions.unshift(ordinalPositions[0]);\n                            }\n                            ordinalPositions = uniqueOrdinalPositions;\n                        }\n                    }\n                });\n                if (!axis.ordinal.originalOrdinalRange) {\n                    // Calculate current originalOrdinalRange\n                    axis.ordinal.originalOrdinalRange =\n                        (ordinalPositions.length - 1) * overscrollPointsRange;\n                }\n                // If the distance between points is not identical throughout\n                // all series, remove the first and last ordinal position to\n                // avoid enabling ordinal logic when it is not needed, #17405.\n                // Only for boosted series because changes are negligible.\n                if (adjustOrdinalExtremesPoints && isBoosted) {\n                    ordinalPositions.pop();\n                    ordinalPositions.shift();\n                }\n                // Cache the length\n                len = ordinalPositions.length;\n                // Check if we really need the overhead of mapping axis data\n                // against the ordinal positions. If the series consist of\n                // evenly spaced data any way, we don't need any ordinal logic.\n                if (len > 2) { // Two points have equal distance by default\n                    dist = ordinalPositions[1] - ordinalPositions[0];\n                    i = len - 1;\n                    while (i-- && !useOrdinal) {\n                        if (ordinalPositions[i + 1] - ordinalPositions[i] !==\n                            dist) {\n                            useOrdinal = true;\n                        }\n                    }\n                    // When zooming in on a week, prevent axis padding for\n                    // weekends even though the data within the week is evenly\n                    // spaced.\n                    if (!axis.options.keepOrdinalPadding &&\n                        (ordinalPositions[0] - min > dist ||\n                            (max -\n                                ordinalPositions[ordinalPositions.length - 1]) > dist)) {\n                        useOrdinal = true;\n                    }\n                }\n                else if (axis.options.overscroll) {\n                    if (len === 2) {\n                        // Exactly two points, distance for overscroll is fixed:\n                        overscrollPointsRange =\n                            ordinalPositions[1] - ordinalPositions[0];\n                    }\n                    else if (len === 1) {\n                        // We have just one point, closest distance is unknown.\n                        // Assume then it is last point and overscrolled range:\n                        overscrollPointsRange = axis.ordinal.convertOverscroll(axis.options.overscroll);\n                        ordinalPositions = [\n                            ordinalPositions[0],\n                            ordinalPositions[0] + overscrollPointsRange\n                        ];\n                    }\n                    else {\n                        // In case of zooming in on overscrolled range, stick to\n                        // the old range:\n                        overscrollPointsRange = ordinal.overscrollPointsRange;\n                    }\n                }\n                // Record the slope and offset to compute the linear values from\n                // the array index. Since the ordinal positions may exceed the\n                // current range, get the start and end positions within it\n                // (#719, #665b)\n                if (useOrdinal || axis.forceOrdinal) {\n                    if (axis.options.overscroll) {\n                        ordinal.overscrollPointsRange = overscrollPointsRange;\n                        ordinalPositions = ordinalPositions.concat(ordinal.getOverscrollPositions());\n                    }\n                    // Register\n                    ordinal.positions = ordinalPositions;\n                    // This relies on the ordinalPositions being set. Use\n                    // Math.max and Math.min to prevent padding on either sides\n                    // of the data.\n                    minIndex = axis.ordinal2lin(// #5979\n                    Math.max(min, ordinalPositions[0]), true);\n                    maxIndex = Math.max(axis.ordinal2lin(Math.min(max, ordinalPositions[ordinalPositions.length - 1]), true), 1); // #3339\n                    // Set the slope and offset of the values compared to the\n                    // indices in the ordinal positions.\n                    ordinal.slope = slope =\n                        (max - min) / (maxIndex - minIndex);\n                    ordinal.offset = min - (minIndex * slope);\n                }\n                else {\n                    ordinal.overscrollPointsRange = OrdinalAxis_pick(axis.closestPointRange, ordinal.overscrollPointsRange);\n                    ordinal.positions = axis.ordinal.slope = ordinal.offset =\n                        void 0;\n                }\n            }\n            axis.isOrdinal = isOrdinal && useOrdinal; // #3818, #4196, #4926\n            ordinal.groupIntervalFactor = null; // Reset for next run\n        };\n        /**\n         * Faster way of using the Array.indexOf method.\n         * Works for sorted arrays only with unique values.\n         *\n         * @param {Array} sortedArray\n         *        The sorted array inside which we are looking for.\n         * @param {number} key\n         *        The key to being found.\n         * @param {boolean} indirectSearch\n         *        In case of lack of the point in the array, should return\n         *        value be equal to -1 or the closest smaller index.\n         *  @private\n         */\n        Additions.findIndexOf = function (sortedArray, key, indirectSearch) {\n            var start = 0,\n                end = sortedArray.length - 1,\n                middle;\n            while (start < end) {\n                middle = Math.ceil((start + end) / 2);\n                // Key found as the middle element.\n                if (sortedArray[middle] <= key) {\n                    // Continue searching to the right.\n                    start = middle;\n                }\n                else {\n                    // Continue searching to the left.\n                    end = middle - 1;\n                }\n            }\n            if (sortedArray[start] === key) {\n                return start;\n            }\n            // Key could not be found.\n            return !indirectSearch ? -1 : start;\n        };\n        /**\n         * Get the ordinal positions for the entire data set. This is necessary\n         * in chart panning because we need to find out what points or data\n         * groups are available outside the visible range. When a panning\n         * operation starts, if an index for the given grouping does not exists,\n         * it is created and cached. This index is deleted on updated data, so\n         * it will be regenerated the next time a panning operation starts.\n         * @private\n         */\n        Additions.prototype.getExtendedPositions = function (withOverscroll) {\n            if (withOverscroll === void 0) { withOverscroll = true; }\n            var ordinal = this,\n                axis = ordinal.axis,\n                axisProto = axis.constructor.prototype,\n                chart = axis.chart,\n                key = axis.series.reduce(function (k,\n                series) {\n                    var grouping = series.currentDataGrouping;\n                return (k +\n                    (grouping ? grouping.count + grouping.unitName : 'raw'));\n            }, ''), overscroll = withOverscroll ?\n                axis.ordinal.convertOverscroll(axis.options.overscroll) : 0, extremes = axis.getExtremes();\n            var fakeAxis,\n                fakeSeries = void 0,\n                ordinalIndex = ordinal.index;\n            // If this is the first time, or the ordinal index is deleted by\n            // updatedData,\n            // create it.\n            if (!ordinalIndex) {\n                ordinalIndex = ordinal.index = {};\n            }\n            if (!ordinalIndex[key]) {\n                // Create a fake axis object where the extended ordinal\n                // positions are emulated\n                fakeAxis = {\n                    series: [],\n                    chart: chart,\n                    forceOrdinal: false,\n                    getExtremes: function () {\n                        return {\n                            min: extremes.dataMin,\n                            max: extremes.dataMax + overscroll\n                        };\n                    },\n                    applyGrouping: axisProto.applyGrouping,\n                    getGroupPixelWidth: axisProto.getGroupPixelWidth,\n                    getTimeTicks: axisProto.getTimeTicks,\n                    options: {\n                        ordinal: true\n                    },\n                    ordinal: {\n                        getGroupIntervalFactor: this.getGroupIntervalFactor\n                    },\n                    ordinal2lin: axisProto.ordinal2lin, // #6276\n                    getIndexOfPoint: axisProto.getIndexOfPoint,\n                    val2lin: axisProto.val2lin // #2590\n                };\n                fakeAxis.ordinal.axis = fakeAxis;\n                // Add the fake series to hold the full data, then apply\n                // processData to it\n                axis.series.forEach(function (series) {\n                    var _a,\n                        _b,\n                        _c;\n                    fakeSeries = {\n                        xAxis: fakeAxis,\n                        chart: chart,\n                        groupPixelWidth: series.groupPixelWidth,\n                        destroyGroupedData: (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop,\n                        getColumn: series.getColumn,\n                        applyGrouping: series.applyGrouping,\n                        getProcessedData: series.getProcessedData,\n                        reserveSpace: series.reserveSpace,\n                        visible: series.visible\n                    };\n                    var xData = series.getColumn('x').concat(withOverscroll ?\n                            ordinal.getOverscrollPositions() :\n                            []);\n                    fakeSeries.dataTable = new Data_DataTableCore({\n                        columns: {\n                            x: xData\n                        }\n                    });\n                    fakeSeries.options = OrdinalAxis_assign(OrdinalAxis_assign({}, series.options), { dataGrouping: series.currentDataGrouping ? {\n                            firstAnchor: (_a = series.options.dataGrouping) === null || _a === void 0 ? void 0 : _a.firstAnchor,\n                            anchor: (_b = series.options.dataGrouping) === null || _b === void 0 ? void 0 : _b.anchor,\n                            lastAnchor: (_c = series.options.dataGrouping) === null || _c === void 0 ? void 0 : _c.firstAnchor,\n                            enabled: true,\n                            forced: true,\n                            approximation: 'open',\n                            units: [[\n                                    series.currentDataGrouping.unitName,\n                                    [series.currentDataGrouping.count]\n                                ]]\n                        } : {\n                            enabled: false\n                        } });\n                    fakeAxis.series.push(fakeSeries);\n                    series.processData.apply(fakeSeries);\n                });\n                fakeAxis.applyGrouping({ hasExtremesChanged: true });\n                // Force to use the ordinal when points are evenly spaced (e.g.\n                // weeks), #3825.\n                if (((fakeSeries === null || fakeSeries === void 0 ? void 0 : fakeSeries.closestPointRange) !==\n                    (fakeSeries === null || fakeSeries === void 0 ? void 0 : fakeSeries.basePointRange)) &&\n                    fakeSeries.currentDataGrouping) {\n                    fakeAxis.forceOrdinal = true;\n                }\n                // Run beforeSetTickPositions to compute the ordinalPositions\n                axis.ordinal.beforeSetTickPositions.apply({ axis: fakeAxis });\n                if (!axis.ordinal.originalOrdinalRange &&\n                    fakeAxis.ordinal.originalOrdinalRange) {\n                    axis.ordinal.originalOrdinalRange =\n                        fakeAxis.ordinal.originalOrdinalRange;\n                }\n                // Cache it\n                if (fakeAxis.ordinal.positions) {\n                    ordinalIndex[key] = fakeAxis.ordinal.positions;\n                }\n            }\n            return ordinalIndex[key];\n        };\n        /**\n         * Find the factor to estimate how wide the plot area would have been if\n         * ordinal gaps were included. This value is used to compute an imagined\n         * plot width in order to establish the data grouping interval.\n         *\n         * A real world case is the intraday-candlestick example. Without this\n         * logic, it would show the correct data grouping when viewing a range\n         * within each day, but once moving the range to include the gap between\n         * two days, the interval would include the cut-away night hours and the\n         * data grouping would be wrong. So the below method tries to compensate\n         * by identifying the most common point interval, in this case days.\n         *\n         * An opposite case is presented in issue #718. We have a long array of\n         * daily data, then one point is appended one hour after the last point.\n         * We expect the data grouping not to change.\n         *\n         * In the future, if we find cases where this estimation doesn't work\n         * optimally, we might need to add a second pass to the data grouping\n         * logic, where we do another run with a greater interval if the number\n         * of data groups is more than a certain fraction of the desired group\n         * count.\n         * @private\n         */\n        Additions.prototype.getGroupIntervalFactor = function (xMin, xMax, series) {\n            var ordinal = this,\n                processedXData = series.getColumn('x',\n                true),\n                len = processedXData.length,\n                distances = [];\n            var median,\n                i,\n                groupIntervalFactor = ordinal.groupIntervalFactor;\n            // Only do this computation for the first series, let the other\n            // inherit it (#2416)\n            if (!groupIntervalFactor) {\n                // Register all the distances in an array\n                for (i = 0; i < len - 1; i++) {\n                    distances[i] = (processedXData[i + 1] -\n                        processedXData[i]);\n                }\n                // Sort them and find the median\n                distances.sort(function (a, b) {\n                    return a - b;\n                });\n                median = distances[Math.floor(len / 2)];\n                // Compensate for series that don't extend through the entire\n                // axis extent. #1675.\n                xMin = Math.max(xMin, processedXData[0]);\n                xMax = Math.min(xMax, processedXData[len - 1]);\n                ordinal.groupIntervalFactor = groupIntervalFactor =\n                    (len * median) / (xMax - xMin);\n            }\n            // Return the factor needed for data grouping\n            return groupIntervalFactor;\n        };\n        /**\n         * Get index of point inside the ordinal positions array.\n         *\n         * @private\n         * @param {number} pixelVal\n         * The pixel value of a point.\n         *\n         * @param {Array<number>} [ordinalArray]\n         * An array of all points available on the axis for the given data set.\n         * Either ordinalPositions if the value is inside the plotArea or\n         * extendedOrdinalPositions if not.\n         */\n        Additions.prototype.getIndexOfPoint = function (pixelVal, ordinalArray) {\n            var ordinal = this,\n                axis = ordinal.axis,\n                min = axis.min,\n                minX = axis.minPixelPadding,\n                indexOfMin = getIndexInArray(ordinalArray,\n                min);\n            var ordinalPointPixelInterval = axis.translationSlope *\n                    (ordinal.slope ||\n                        axis.closestPointRange ||\n                        ordinal.overscrollPointsRange);\n            var shiftIndex = OrdinalAxis_correctFloat((pixelVal - minX) / ordinalPointPixelInterval);\n            return indexOfMin + shiftIndex;\n        };\n        /**\n         * Get ticks for an ordinal axis within a range where points don't\n         * exist. It is required when overscroll is enabled. We can't base on\n         * points, because we may not have any, so we use approximated\n         * pointRange and generate these ticks between Axis.dataMax,\n         * Axis.dataMax + Axis.overscroll evenly spaced. Used in panning and\n         * navigator scrolling.\n         * @private\n         */\n        Additions.prototype.getOverscrollPositions = function () {\n            var ordinal = this,\n                axis = ordinal.axis,\n                extraRange = ordinal.convertOverscroll(axis.options.overscroll),\n                distance = ordinal.overscrollPointsRange,\n                positions = [];\n            var max = axis.dataMax;\n            if (OrdinalAxis_defined(distance)) {\n                // Max + pointRange because we need to scroll to the last\n                while (max < axis.dataMax + extraRange) {\n                    max += distance;\n                    positions.push(max);\n                }\n            }\n            return positions;\n        };\n        /**\n         * Make the tick intervals closer because the ordinal gaps make the\n         * ticks spread out or cluster.\n         * @private\n         */\n        Additions.prototype.postProcessTickInterval = function (tickInterval) {\n            // Problem: https://jsfiddle.net/highcharts/FQm4E/1/. This is a case\n            // where this algorithm doesn't work optimally. In this case, the\n            // tick labels are spread out per week, but all the gaps reside\n            // within weeks. So we have a situation where the labels are courser\n            // than the ordinal gaps, and thus the tick interval should not be\n            // altered.\n            var ordinal = this,\n                axis = ordinal.axis,\n                ordinalSlope = ordinal.slope,\n                closestPointRange = axis.closestPointRange;\n            var ret;\n            if (ordinalSlope && closestPointRange) {\n                if (!axis.options.breaks) {\n                    ret = (tickInterval /\n                        (ordinalSlope / closestPointRange));\n                }\n                else {\n                    ret = closestPointRange || tickInterval; // #7275\n                }\n            }\n            else {\n                ret = tickInterval;\n            }\n            return ret;\n        };\n        /**\n         * If overscroll is pixel or pecentage value, convert it to axis range.\n         *\n         * @private\n         * @param {number | string} overscroll\n         * Overscroll value in axis range, pixels or percentage value.\n         * @return {number}\n         * Overscroll value in axis range.\n         */\n        Additions.prototype.convertOverscroll = function (overscroll) {\n            if (overscroll === void 0) { overscroll = 0; }\n            var ordinal = this,\n                axis = ordinal.axis,\n                calculateOverscroll = function (overscrollPercentage) {\n                    return OrdinalAxis_pick(ordinal.originalOrdinalRange,\n                OrdinalAxis_defined(axis.dataMax) && OrdinalAxis_defined(axis.dataMin) ?\n                        axis.dataMax - axis.dataMin : 0) * overscrollPercentage;\n            };\n            if (OrdinalAxis_isString(overscroll)) {\n                var overscrollValue = parseInt(overscroll, 10);\n                if (/%$/.test(overscroll)) {\n                    // If overscroll is percentage\n                    return calculateOverscroll(overscrollValue / 100);\n                }\n                if (/px/.test(overscroll)) {\n                    // If overscroll is pixels, it is limited to 90% of the axis\n                    // length to prevent division by zero\n                    var limitedOverscrollValue = Math.min(overscrollValue,\n                        axis.len * 0.9),\n                        pixelToPercent = limitedOverscrollValue / axis.len;\n                    return calculateOverscroll(pixelToPercent / (1 - pixelToPercent));\n                }\n                // If overscroll is a string but not pixels or percentage,\n                // return 0 as no overscroll\n                return 0;\n            }\n            return overscroll;\n        };\n        return Additions;\n    }());\n    OrdinalAxis.Additions = Additions;\n})(OrdinalAxis || (OrdinalAxis = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Axis_OrdinalAxis = (OrdinalAxis);\n\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelectorDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Declarations\n *\n * */\n/**\n * An object containing language-related strings and settings. A typical setup\n * uses `Highcharts.setOptions` to make the options apply to all charts in the\n * same page.\n *\n * ```js\n * Highcharts.setOptions({\n *     lang: {\n *         locale: 'fr'\n *     }\n * });\n * ```\n *\n * @optionparent lang\n */\nvar lang = {\n    /**\n     * The text for the label for the range selector buttons.\n     *\n     * @product highstock gantt\n     */\n    rangeSelectorZoom: 'Zoom',\n    /**\n     * The text for the label for the \"from\" input box in the range\n     * selector. Since v9.0, this string is empty as the label is not\n     * rendered by default.\n     *\n     * @product highstock gantt\n     */\n    rangeSelectorFrom: '',\n    /**\n     * The text for the label for the \"to\" input box in the range selector.\n     *\n     * @product highstock gantt\n     */\n    rangeSelectorTo: '→'\n};\n/**\n * The range selector is a tool for selecting ranges to display within\n * the chart. It provides buttons to select preconfigured ranges in\n * the chart, like 1 day, 1 week, 1 month etc. It also provides input\n * boxes where min and max dates can be manually input.\n *\n * @product      highstock gantt\n * @optionparent rangeSelector\n */\nvar rangeSelector = {\n    /**\n     * Whether to enable all buttons from the start. By default buttons are\n     * only enabled if the corresponding time range exists on the X axis,\n     * but enabling all buttons allows for dynamically loading different\n     * time ranges.\n     *\n     * @sample {highstock} stock/rangeselector/allbuttonsenabled-true/\n     *         All buttons enabled\n     *\n     * @since     2.0.3\n     */\n    allButtonsEnabled: false,\n    /**\n     * An array of configuration objects for the buttons.\n     *\n     * Defaults to:\n     * ```js\n     * buttons: [{\n     *     type: 'month',\n     *     count: 1,\n     *     text: '1m',\n     *     title: 'View 1 month'\n     * }, {\n     *     type: 'month',\n     *     count: 3,\n     *     text: '3m',\n     *     title: 'View 3 months'\n     * }, {\n     *     type: 'month',\n     *     count: 6,\n     *     text: '6m',\n     *     title: 'View 6 months'\n     * }, {\n     *     type: 'ytd',\n     *     text: 'YTD',\n     *     title: 'View year to date'\n     * }, {\n     *     type: 'year',\n     *     count: 1,\n     *     text: '1y',\n     *     title: 'View 1 year'\n     * }, {\n     *     type: 'all',\n     *     text: 'All',\n     *     title: 'View all'\n     * }]\n     * ```\n     *\n     * @sample {highstock} stock/demo/rangeselector-datagrouping/\n     *         Data grouping by buttons\n     *\n     * @type      {Array<*>}\n     */\n    buttons: [{\n            type: 'month',\n            count: 1,\n            text: '1m',\n            title: 'View 1 month'\n        }, {\n            type: 'month',\n            count: 3,\n            text: '3m',\n            title: 'View 3 months'\n        }, {\n            type: 'month',\n            count: 6,\n            text: '6m',\n            title: 'View 6 months'\n        }, {\n            type: 'ytd',\n            text: 'YTD',\n            title: 'View year to date'\n        }, {\n            type: 'year',\n            count: 1,\n            text: '1y',\n            title: 'View 1 year'\n        }, {\n            type: 'all',\n            text: 'All',\n            title: 'View all'\n        }],\n    /**\n     * How many units of the defined type the button should span. If `type`\n     * is \"month\" and `count` is 3, the button spans three months.\n     *\n     * @type      {number}\n     * @default   1\n     * @apioption rangeSelector.buttons.count\n     */\n    /**\n     * Fires when clicking on the rangeSelector button. One parameter,\n     * event, is passed to the function, containing common event\n     * information.\n     *\n     * ```js\n     * click: function(e) {\n     *   console.log(this);\n     * }\n     * ```\n     *\n     * Return false to stop default button's click action.\n     *\n     * @sample {highstock} stock/rangeselector/button-click/\n     *         Click event on the button\n     *\n     * @type      {Highcharts.RangeSelectorClickCallbackFunction}\n     * @apioption rangeSelector.buttons.events.click\n     */\n    /**\n     * Additional range (in milliseconds) added to the end of the calculated\n     * time span.\n     *\n     * @sample {highstock} stock/rangeselector/min-max-offsets/\n     *         Button offsets\n     *\n     * @type      {number}\n     * @default   0\n     * @since     6.0.0\n     * @apioption rangeSelector.buttons.offsetMax\n     */\n    /**\n     * Additional range (in milliseconds) added to the start of the\n     * calculated time span.\n     *\n     * @sample {highstock} stock/rangeselector/min-max-offsets/\n     *         Button offsets\n     *\n     * @type      {number}\n     * @default   0\n     * @since     6.0.0\n     * @apioption rangeSelector.buttons.offsetMin\n     */\n    /**\n     * When buttons apply dataGrouping on a series, by default zooming\n     * in/out will deselect buttons and unset dataGrouping. Enable this\n     * option to keep buttons selected when extremes change.\n     *\n     * @sample {highstock} stock/rangeselector/preserve-datagrouping/\n     *         Different preserveDataGrouping settings\n     *\n     * @type      {boolean}\n     * @default   false\n     * @since     6.1.2\n     * @apioption rangeSelector.buttons.preserveDataGrouping\n     */\n    /**\n     * A custom data grouping object for each button.\n     *\n     * @see [series.dataGrouping](#plotOptions.series.dataGrouping)\n     *\n     * @sample {highstock} stock/demo/rangeselector-datagrouping/\n     *         Data grouping by range selector buttons\n     *\n     * @type      {*}\n     * @extends   plotOptions.series.dataGrouping\n     * @apioption rangeSelector.buttons.dataGrouping\n     */\n    /**\n     * The text for the button itself.\n     *\n     * @type      {string}\n     * @apioption rangeSelector.buttons.text\n     */\n    /**\n     * Explanation for the button, shown as a tooltip on hover, and used by\n     * assistive technology.\n     *\n     * @type      {string}\n     * @apioption rangeSelector.buttons.title\n     */\n    /**\n     * Defined the time span for the button. Can be one of `millisecond`,\n     * `second`, `minute`, `hour`, `day`, `week`, `month`, `year`, `ytd`,\n     * and `all`.\n     *\n     * @type       {Highcharts.RangeSelectorButtonTypeValue}\n     * @apioption  rangeSelector.buttons.type\n     */\n    /**\n     * The space in pixels between the buttons in the range selector.\n     */\n    buttonSpacing: 5,\n    /**\n     * Whether to collapse the range selector buttons into a dropdown when\n     * there is not enough room to show everything in a single row, instead\n     * of dividing the range selector into multiple rows.\n     * Can be one of the following:\n     *  - `always`: Always collapse\n     *  - `responsive`: Only collapse when there is not enough room\n     *  - `never`: Never collapse\n     *\n     * @sample {highstock} stock/rangeselector/dropdown/\n     *         Dropdown option\n     *\n     * @validvalue [\"always\", \"responsive\", \"never\"]\n     * @since 9.0.0\n     */\n    dropdown: 'responsive',\n    /**\n     * Enable or disable the range selector. Default to `true` for stock\n     * charts, using the `stockChart` factory.\n     *\n     * @sample {highstock} stock/rangeselector/enabled/\n     *         Disable the range selector\n     *\n     * @type {boolean|undefined}\n     * @default {highstock} true\n     */\n    enabled: void 0,\n    /**\n     * The vertical alignment of the rangeselector box. Allowed properties\n     * are `top`, `middle`, `bottom`.\n     *\n     * @sample {highstock} stock/rangeselector/vertical-align-middle/\n     *         Middle\n     * @sample {highstock} stock/rangeselector/vertical-align-bottom/\n     *         Bottom\n     *\n     * @type  {Highcharts.VerticalAlignValue}\n     * @since 6.0.0\n     */\n    verticalAlign: 'top',\n    /**\n     * A collection of attributes for the buttons. The object takes SVG\n     * attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,\n     * a collection of CSS properties for the text.\n     *\n     * The object can also be extended with states, so you can set\n     * presentational options for `hover`, `select` or `disabled` button\n     * states.\n     *\n     * CSS styles for the text label.\n     *\n     * In styled mode, the buttons are styled by the\n     * `.highcharts-range-selector-buttons .highcharts-button` rule with its\n     * different states.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @type {Highcharts.SVGAttributes}\n     */\n    buttonTheme: {\n        /** @ignore */\n        width: 28,\n        /** @ignore */\n        height: 18,\n        /** @ignore */\n        padding: 2,\n        /** @ignore */\n        zIndex: 7 // #484, #852\n    },\n    /**\n     * When the rangeselector is floating, the plot area does not reserve\n     * space for it. This opens for positioning anywhere on the chart.\n     *\n     * @sample {highstock} stock/rangeselector/floating/\n     *         Placing the range selector between the plot area and the\n     *         navigator\n     *\n     * @since 6.0.0\n     */\n    floating: false,\n    /**\n     * The x offset of the range selector relative to its horizontal\n     * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n     *\n     * @since 6.0.0\n     */\n    x: 0,\n    /**\n     * The y offset of the range selector relative to its horizontal\n     * alignment within `chart.spacingLeft` and `chart.spacingRight`.\n     *\n     * @since 6.0.0\n     */\n    y: 0,\n    /**\n     * Deprecated. The height of the range selector. Currently it is\n     * calculated dynamically.\n     *\n     * @deprecated\n     * @type  {number|undefined}\n     * @since 2.1.9\n     */\n    height: void 0, // Reserved space for buttons and input\n    /**\n     * The border color of the date input boxes.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @type      {Highcharts.ColorString}\n     * @since     1.3.7\n     */\n    inputBoxBorderColor: 'none',\n    /**\n     * The pixel height of the date input boxes.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @since     1.3.7\n     */\n    inputBoxHeight: 17,\n    /**\n     * The pixel width of the date input boxes. When `undefined`, the width\n     * is fitted to the rendered content.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @type   {number|undefined}\n     * @since  1.3.7\n     */\n    inputBoxWidth: void 0,\n    /**\n     * The date format in the input boxes when not selected for editing.\n     * Defaults to `%e %b %Y`.\n     *\n     * This is used to determine which type of input to show,\n     * `datetime-local`, `date` or `time` and falling back to `text` when\n     * the browser does not support the input type or the format contains\n     * milliseconds.\n     *\n     * @sample {highstock} stock/rangeselector/input-type/\n     *         Input types\n     * @sample {highstock} stock/rangeselector/input-format/\n     *         Milliseconds in the range selector\n     *\n     */\n    inputDateFormat: '%[ebY]',\n    /**\n     * A custom callback function to parse values entered in the input boxes and\n     * return a valid JavaScript time as milliseconds since 1970. The first\n     * argument passed is the value to parse, second is a boolean indicating use\n     * of UTC time. The third is a reference to the `time` object. Time zone can\n     * be read from `time.timezone`.\n     *\n     * This will only get called for inputs of type `text`. Since v8.2.3, the\n     * input type is dynamically determined based on the granularity of the\n     * `inputDateFormat` and the browser support.\n     *\n     * @sample {highstock} stock/rangeselector/input-format/\n     *         Milliseconds in the range selector\n     *\n     * @type      {Highcharts.RangeSelectorParseCallbackFunction}\n     * @since     1.3.3\n     */\n    inputDateParser: void 0,\n    /**\n     * The date format in the input boxes when they are selected for\n     * editing. This must be a format that is recognized by JavaScript\n     * Date.parse.\n     *\n     * This will only be used for inputs of type `text`. Since v8.2.3,\n     * the input type is dynamically determined based on the granularity\n     * of the `inputDateFormat` and the browser support.\n     *\n     * @sample {highstock} stock/rangeselector/input-format/\n     *         Milliseconds in the range selector\n     *\n     */\n    inputEditDateFormat: '%Y-%m-%d',\n    /**\n     * Enable or disable the date input boxes.\n     */\n    inputEnabled: true,\n    /**\n     * Positioning for the input boxes. Allowed properties are `align`,\n     *  `x` and `y`.\n     *\n     * @since 1.2.4\n     */\n    inputPosition: {\n        /**\n         * The alignment of the input box. Allowed properties are `left`,\n         * `center`, `right`.\n         *\n         * @sample {highstock} stock/rangeselector/input-button-opposite-alignment/\n         *         Opposite alignment\n         *\n         * @sample {highstock} stock/rangeselector/input-button-same-alignment/\n         *         Same alignment for buttons and input\n         *\n         * @type  {Highcharts.AlignValue}\n         * @since 6.0.0\n         */\n        align: 'right',\n        /**\n         * X offset of the input row.\n         */\n        x: 0,\n        /**\n         * Y offset of the input row.\n         */\n        y: 0\n    },\n    /**\n     * The space in pixels between the labels and the date input boxes in\n     * the range selector.\n     *\n     * @since 9.0.0\n     */\n    inputSpacing: 5,\n    /**\n     * The index of the button to appear pre-selected. If the selected range\n     * exceeds the total data range and the 'all' option is available,\n     * the 'all' option, showing the full range, is automatically selected.\n     *\n     * @type      {number}\n     */\n    selected: void 0,\n    /**\n     * Positioning for the button row.\n     *\n     * @since 1.2.4\n     */\n    buttonPosition: {\n        /**\n         * The alignment of the input box. Allowed properties are `left`,\n         * `center`, `right`.\n         *\n         * @sample {highstock} stock/rangeselector/input-button-opposite-alignment/\n         *         Opposite alignment\n         *\n         * @sample {highstock} stock/rangeselector/input-button-same-alignment/\n         *         Same alignment for buttons and input\n         *\n         * @type  {Highcharts.AlignValue}\n         * @since 6.0.0\n         */\n        align: 'left',\n        /**\n         * X offset of the button row.\n         */\n        x: 0,\n        /**\n         * Y offset of the button row.\n         */\n        y: 0\n    },\n    /**\n     * CSS for the HTML inputs in the range selector.\n     *\n     * In styled mode, the inputs are styled by the\n     * `.highcharts-range-input text` rule in SVG mode, and\n     * `input.highcharts-range-selector` when active.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @type      {Highcharts.CSSObject}\n     * @apioption rangeSelector.inputStyle\n     */\n    inputStyle: {\n        /** @ignore */\n        color: \"#334eff\" /* Palette.highlightColor80 */,\n        /** @ignore */\n        cursor: 'pointer',\n        /** @ignore */\n        fontSize: '0.8em'\n    },\n    /**\n     * CSS styles for the labels - the Zoom, From and To texts.\n     *\n     * In styled mode, the labels are styled by the\n     * `.highcharts-range-label` class.\n     *\n     * @sample {highstock} stock/rangeselector/styling/\n     *         Styling the buttons and inputs\n     *\n     * @type {Highcharts.CSSObject}\n     */\n    labelStyle: {\n        /** @ignore */\n        color: \"#666666\" /* Palette.neutralColor60 */,\n        /** @ignore */\n        fontSize: '0.8em'\n    }\n};\n/* *\n *\n *  Default Export\n *\n * */\nvar RangeSelectorDefaults = {\n    lang: lang,\n    rangeSelector: rangeSelector\n};\n/* harmony default export */ var RangeSelector_RangeSelectorDefaults = (RangeSelectorDefaults);\n\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelectorComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar RangeSelectorComposition_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\nvar RangeSelectorComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\nvar RangeSelectorComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, RangeSelectorComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, RangeSelectorComposition_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, RangeSelectorComposition_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, RangeSelectorComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, RangeSelectorComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, RangeSelectorComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Constants\n *\n * */\nvar chartDestroyEvents = [];\n/* *\n *\n *  Variables\n *\n * */\nvar RangeSelectorConstructor;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get the axis min value based on the range option and the current max. For\n * stock charts this is extended via the {@link RangeSelector} so that if the\n * selected range is a multiple of months or years, it is compensated for\n * various month lengths.\n *\n * @private\n * @function Highcharts.Axis#minFromRange\n * @return {number|undefined}\n *         The new minimum value.\n */\nfunction axisMinFromRange() {\n    var rangeOptions = this.range,\n        type = rangeOptions.type,\n        max = this.max,\n        time = this.chart.time, \n        // Get the true range from a start date\n        getTrueRange = function (base,\n        count) {\n            var original = time.toParts(base),\n        modified = original.slice();\n        if (type === 'year') {\n            modified[0] += count;\n        }\n        else {\n            modified[1] += count;\n        }\n        var d = time.makeTime.apply(time,\n            modified);\n        var numbers = time.toParts(d);\n        // When subtracting a month still places us in the same month, like\n        // subtracting one month from March 31 places us on February 31,\n        // which translates to March 3 (#6537)\n        if (type === 'month' &&\n            original[1] === numbers[1] &&\n            Math.abs(count) === 1) {\n            modified[0] = original[0];\n            modified[1] = original[1];\n            // 0 is the last day of the previous month\n            modified[2] = 0;\n        }\n        d = time.makeTime.apply(time, modified);\n        return d - base;\n    };\n    var min,\n        range;\n    if (RangeSelectorComposition_isNumber(rangeOptions)) {\n        min = max - rangeOptions;\n        range = rangeOptions;\n    }\n    else if (rangeOptions) {\n        min = max + getTrueRange(max, -(rangeOptions.count || 1));\n        // Let the fixedRange reflect initial settings (#5930)\n        if (this.chart) {\n            this.chart.setFixedRange(max - min);\n        }\n    }\n    var dataMin = RangeSelectorComposition_pick(this.dataMin,\n        Number.MIN_VALUE);\n    if (!RangeSelectorComposition_isNumber(min)) {\n        min = dataMin;\n    }\n    if (min <= dataMin) {\n        min = dataMin;\n        if (typeof range === 'undefined') { // #4501\n            range = getTrueRange(min, rangeOptions.count);\n        }\n        this.newMax = Math.min(min + range, RangeSelectorComposition_pick(this.dataMax, Number.MAX_VALUE));\n    }\n    if (!RangeSelectorComposition_isNumber(max)) {\n        min = void 0;\n    }\n    else if (!RangeSelectorComposition_isNumber(rangeOptions) &&\n        rangeOptions &&\n        rangeOptions._offsetMin) {\n        min += rangeOptions._offsetMin;\n    }\n    return min;\n}\n/**\n * @private\n */\nfunction updateRangeSelectorButtons() {\n    var _a;\n    (_a = this.rangeSelector) === null || _a === void 0 ? void 0 : _a.redrawElements();\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_compose(AxisClass, ChartClass, RangeSelectorClass) {\n    RangeSelectorConstructor = RangeSelectorClass;\n    if (RangeSelectorComposition_pushUnique(RangeSelectorComposition_composed, 'RangeSelector')) {\n        var chartProto = ChartClass.prototype;\n        AxisClass.prototype.minFromRange = axisMinFromRange;\n        RangeSelectorComposition_addEvent(ChartClass, 'afterGetContainer', createRangeSelector);\n        RangeSelectorComposition_addEvent(ChartClass, 'beforeRender', RangeSelectorComposition_onChartBeforeRender);\n        RangeSelectorComposition_addEvent(ChartClass, 'destroy', onChartDestroy);\n        RangeSelectorComposition_addEvent(ChartClass, 'getMargins', onChartGetMargins);\n        RangeSelectorComposition_addEvent(ChartClass, 'redraw', redrawRangeSelector);\n        RangeSelectorComposition_addEvent(ChartClass, 'update', RangeSelectorComposition_onChartUpdate);\n        RangeSelectorComposition_addEvent(ChartClass, 'beforeRedraw', updateRangeSelectorButtons);\n        chartProto.callbacks.push(redrawRangeSelector);\n        RangeSelectorComposition_extend(RangeSelectorComposition_defaultOptions, { rangeSelector: RangeSelector_RangeSelectorDefaults.rangeSelector });\n        RangeSelectorComposition_extend(RangeSelectorComposition_defaultOptions.lang, RangeSelector_RangeSelectorDefaults.lang);\n    }\n}\n/**\n * Initialize rangeselector for stock charts\n * @private\n */\nfunction createRangeSelector() {\n    if (this.options.rangeSelector &&\n        this.options.rangeSelector.enabled) {\n        this.rangeSelector = new RangeSelectorConstructor(this);\n    }\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_onChartBeforeRender() {\n    var chart = this,\n        rangeSelector = chart.rangeSelector;\n    if (rangeSelector) {\n        if (RangeSelectorComposition_isNumber(rangeSelector.deferredYTDClick)) {\n            rangeSelector.clickButton(rangeSelector.deferredYTDClick);\n            delete rangeSelector.deferredYTDClick;\n        }\n        var verticalAlign = rangeSelector.options.verticalAlign;\n        if (!rangeSelector.options.floating) {\n            if (verticalAlign === 'bottom') {\n                this.extraBottomMargin = true;\n            }\n            else if (verticalAlign === 'top') {\n                this.extraTopMargin = true;\n            }\n        }\n    }\n}\nfunction redrawRangeSelector() {\n    var chart = this;\n    var rangeSelector = this.rangeSelector;\n    if (!rangeSelector) {\n        return;\n    }\n    var alignTo;\n    var extremes = chart.xAxis[0].getExtremes();\n    var legend = chart.legend;\n    var verticalAlign = (rangeSelector &&\n            rangeSelector.options.verticalAlign);\n    if (RangeSelectorComposition_isNumber(extremes.min)) {\n        rangeSelector.render(extremes.min, extremes.max);\n    }\n    // Re-align the legend so that it's below the rangeselector\n    if (legend.display &&\n        verticalAlign === 'top' &&\n        verticalAlign === legend.options.verticalAlign) {\n        // Create a new alignment box for the legend.\n        alignTo = RangeSelectorComposition_merge(chart.spacingBox);\n        if (legend.options.layout === 'vertical') {\n            alignTo.y = chart.plotTop;\n        }\n        else {\n            alignTo.y += rangeSelector.getHeight();\n        }\n        legend.group.placed = false; // Don't animate the alignment.\n        legend.align(alignTo);\n    }\n}\n/**\n * Remove resize/afterSetExtremes at chart destroy.\n * @private\n */\nfunction onChartDestroy() {\n    for (var i = 0, iEnd = chartDestroyEvents.length; i < iEnd; ++i) {\n        var events = chartDestroyEvents[i];\n        if (events[0] === this) {\n            events[1].forEach(function (unbind) { return unbind(); });\n            chartDestroyEvents.splice(i, 1);\n            return;\n        }\n    }\n}\n/**\n *\n */\nfunction onChartGetMargins() {\n    var _a;\n    var rangeSelector = this.rangeSelector;\n    if ((_a = rangeSelector === null || rangeSelector === void 0 ? void 0 : rangeSelector.options) === null || _a === void 0 ? void 0 : _a.enabled) {\n        var rangeSelectorHeight = rangeSelector.getHeight();\n        var verticalAlign = rangeSelector.options.verticalAlign;\n        if (!rangeSelector.options.floating) {\n            if (verticalAlign === 'bottom') {\n                this.marginBottom += rangeSelectorHeight;\n            }\n            else if (verticalAlign !== 'middle') {\n                this.plotTop += rangeSelectorHeight;\n            }\n        }\n    }\n}\n/**\n * @private\n */\nfunction RangeSelectorComposition_onChartUpdate(e) {\n    var chart = this,\n        options = e.options,\n        optionsRangeSelector = options.rangeSelector,\n        extraBottomMarginWas = this.extraBottomMargin,\n        extraTopMarginWas = this.extraTopMargin;\n    var rangeSelector = chart.rangeSelector;\n    if (optionsRangeSelector &&\n        optionsRangeSelector.enabled &&\n        !RangeSelectorComposition_defined(rangeSelector) &&\n        this.options.rangeSelector) {\n        this.options.rangeSelector.enabled = true;\n        this.rangeSelector = rangeSelector = new RangeSelectorConstructor(this);\n    }\n    this.extraBottomMargin = false;\n    this.extraTopMargin = false;\n    if (rangeSelector) {\n        var verticalAlign = (optionsRangeSelector &&\n                optionsRangeSelector.verticalAlign) || (rangeSelector.options && rangeSelector.options.verticalAlign);\n        if (!rangeSelector.options.floating) {\n            if (verticalAlign === 'bottom') {\n                this.extraBottomMargin = true;\n            }\n            else if (verticalAlign !== 'middle') {\n                this.extraTopMargin = true;\n            }\n        }\n        if (this.extraBottomMargin !== extraBottomMarginWas ||\n            this.extraTopMargin !== extraTopMarginWas) {\n            this.isDirtyBox = true;\n        }\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar RangeSelectorComposition = {\n    compose: RangeSelectorComposition_compose\n};\n/* harmony default export */ var RangeSelector_RangeSelectorComposition = (RangeSelectorComposition);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"SVGElement\"],\"commonjs\":[\"highcharts\",\"SVGElement\"],\"commonjs2\":[\"highcharts\",\"SVGElement\"],\"root\":[\"Highcharts\",\"SVGElement\"]}\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_ = __webpack_require__(28);\nvar highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default = /*#__PURE__*/__webpack_require__.n(highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_);\n;// ./code/es5/es-modules/Stock/RangeSelector/RangeSelector.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar RangeSelector_defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions;\n\n\n\n\n\nvar RangeSelector_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, createElement = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).createElement, RangeSelector_css = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).css, RangeSelector_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, RangeSelector_destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, diffObjects = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).diffObjects, discardElement = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).discardElement, RangeSelector_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, RangeSelector_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, RangeSelector_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, RangeSelector_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, RangeSelector_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, RangeSelector_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, RangeSelector_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, RangeSelector_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get the preferred input type based on a date format string.\n *\n * @private\n * @function preferredInputType\n */\nfunction preferredInputType(format) {\n    var hasTimeKey = function (char) {\n            return new RegExp(\"%[[a-zA-Z]*\".concat(char)).test(format);\n    };\n    var ms = RangeSelector_isString(format) ?\n            format.indexOf('%L') !== -1 :\n            // Implemented but not typed as of 2024\n            format.fractionalSecondDigits;\n    if (ms) {\n        return 'text';\n    }\n    var date = RangeSelector_isString(format) ?\n            ['a', 'A', 'd', 'e', 'w', 'b', 'B', 'm', 'o', 'y', 'Y']\n                .some(hasTimeKey) :\n            format.dateStyle || format.day || format.month || format.year;\n    var time = RangeSelector_isString(format) ?\n            ['H', 'k', 'I', 'l', 'M', 'S'].some(hasTimeKey) :\n            format.timeStyle || format.hour || format.minute || format.second;\n    if (date && time) {\n        return 'datetime-local';\n    }\n    if (date) {\n        return 'date';\n    }\n    if (time) {\n        return 'time';\n    }\n    return 'text';\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The range selector.\n *\n * @private\n * @class\n * @name Highcharts.RangeSelector\n * @param {Highcharts.Chart} chart\n */\nvar RangeSelector = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function RangeSelector(chart) {\n        var _this = this;\n        this.isDirty = false;\n        this.buttonOptions = RangeSelector.prototype.defaultButtons;\n        this.initialButtonGroupWidth = 0;\n        this.maxButtonWidth = function () {\n            var buttonWidth = 0;\n            _this.buttons.forEach(function (button) {\n                var bBox = button.getBBox();\n                if (bBox.width > buttonWidth) {\n                    buttonWidth = bBox.width;\n                }\n            });\n            return buttonWidth;\n        };\n        this.init(chart);\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    RangeSelector.compose = function (AxisClass, ChartClass) {\n        RangeSelector_RangeSelectorComposition.compose(AxisClass, ChartClass, RangeSelector);\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * The method to run when one of the buttons in the range selectors is\n     * clicked\n     *\n     * @private\n     * @function Highcharts.RangeSelector#clickButton\n     * @param {number} i\n     *        The index of the button\n     * @param {boolean} [redraw]\n     */\n    RangeSelector.prototype.clickButton = function (i, redraw) {\n        var rangeSelector = this,\n            chart = rangeSelector.chart,\n            rangeOptions = rangeSelector.buttonOptions[i],\n            baseAxis = chart.xAxis[0],\n            unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {},\n            type = rangeOptions.type,\n            dataGrouping = rangeOptions.dataGrouping;\n        var dataMin = unionExtremes.dataMin,\n            dataMax = unionExtremes.dataMax,\n            newMin,\n            newMax = RangeSelector_isNumber(baseAxis === null || baseAxis === void 0 ? void 0 : baseAxis.max) ? Math.round(Math.min(baseAxis.max,\n            dataMax !== null && dataMax !== void 0 ? dataMax : baseAxis.max)) : void 0, // #1568\n            baseXAxisOptions,\n            range = rangeOptions._range,\n            rangeMin,\n            ctx,\n            ytdExtremes,\n            addOffsetMin = true;\n        // Chart has no data, base series is removed\n        if (dataMin === null || dataMax === null) {\n            return;\n        }\n        rangeSelector.setSelected(i);\n        // Apply dataGrouping associated to button\n        if (dataGrouping) {\n            this.forcedDataGrouping = true;\n            highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default().prototype.setDataGrouping.call(baseAxis || { chart: this.chart }, dataGrouping, false);\n            this.frozenStates = rangeOptions.preserveDataGrouping;\n        }\n        // Apply range\n        if (type === 'month' || type === 'year') {\n            if (!baseAxis) {\n                // This is set to the user options and picked up later when the\n                // axis is instantiated so that we know the min and max.\n                range = rangeOptions;\n            }\n            else {\n                ctx = {\n                    range: rangeOptions,\n                    max: newMax,\n                    chart: chart,\n                    dataMin: dataMin,\n                    dataMax: dataMax\n                };\n                newMin = baseAxis.minFromRange.call(ctx);\n                if (RangeSelector_isNumber(ctx.newMax)) {\n                    newMax = ctx.newMax;\n                }\n                // #15799: offsetMin is added in minFromRange so that it works\n                // with pre-selected buttons as well\n                addOffsetMin = false;\n            }\n            // Fixed times like minutes, hours, days\n        }\n        else if (range) {\n            if (RangeSelector_isNumber(newMax)) {\n                newMin = Math.max(newMax - range, dataMin);\n                newMax = Math.min(newMin + range, dataMax);\n                addOffsetMin = false;\n            }\n        }\n        else if (type === 'ytd') {\n            // On user clicks on the buttons, or a delayed action running from\n            // the beforeRender event (below), the baseAxis is defined.\n            if (baseAxis) {\n                // When \"ytd\" is the pre-selected button for the initial view,\n                // its calculation is delayed and rerun in the beforeRender\n                // event (below). When the series are initialized, but before\n                // the chart is rendered, we have access to the xData array\n                // (#942).\n                if (baseAxis.hasData() && (!RangeSelector_isNumber(dataMax) ||\n                    !RangeSelector_isNumber(dataMin))) {\n                    dataMin = Number.MAX_VALUE;\n                    dataMax = -Number.MAX_VALUE;\n                    chart.series.forEach(function (series) {\n                        // Reassign it to the last item\n                        var xData = series.getColumn('x');\n                        if (xData.length) {\n                            dataMin = Math.min(xData[0], dataMin);\n                            dataMax = Math.max(xData[xData.length - 1], dataMax);\n                        }\n                    });\n                    redraw = false;\n                }\n                if (RangeSelector_isNumber(dataMax) && RangeSelector_isNumber(dataMin)) {\n                    ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin);\n                    newMin = rangeMin = ytdExtremes.min;\n                    newMax = ytdExtremes.max;\n                }\n                // \"ytd\" is pre-selected. We don't yet have access to processed\n                // point and extremes data (things like pointStart and pointInterval\n                // are missing), so we delay the process (#942)\n            }\n            else {\n                rangeSelector.deferredYTDClick = i;\n                return;\n            }\n        }\n        else if (type === 'all' && baseAxis) {\n            // If the navigator exist and the axis range is declared reset that\n            // range and from now on only use the range set by a user, #14742.\n            if (chart.navigator && chart.navigator.baseSeries[0]) {\n                chart.navigator.baseSeries[0].xAxis.options.range = void 0;\n            }\n            newMin = dataMin;\n            newMax = dataMax;\n        }\n        if (addOffsetMin && rangeOptions._offsetMin && RangeSelector_defined(newMin)) {\n            newMin += rangeOptions._offsetMin;\n        }\n        if (rangeOptions._offsetMax && RangeSelector_defined(newMax)) {\n            newMax += rangeOptions._offsetMax;\n        }\n        if (this.dropdown) {\n            this.dropdown.selectedIndex = i + 1;\n        }\n        // Update the chart\n        if (!baseAxis) {\n            // Axis not yet instantiated. Temporarily set min and range\n            // options and axes once defined and remove them on\n            // chart load (#4317 & #20529).\n            baseXAxisOptions = RangeSelector_splat(chart.options.xAxis || {})[0];\n            var axisRangeUpdateEvent_1 = RangeSelector_addEvent(chart, 'afterCreateAxes',\n                function () {\n                    var xAxis = chart.xAxis[0];\n                xAxis.range = xAxis.options.range = range;\n                xAxis.min = xAxis.options.min = rangeMin;\n            });\n            RangeSelector_addEvent(chart, 'load', function resetMinAndRange() {\n                var xAxis = chart.xAxis[0];\n                chart.setFixedRange(rangeOptions._range);\n                xAxis.options.range = baseXAxisOptions.range;\n                xAxis.options.min = baseXAxisOptions.min;\n                axisRangeUpdateEvent_1(); // Remove event\n            });\n        }\n        else if (RangeSelector_isNumber(newMin) && RangeSelector_isNumber(newMax)) {\n            // Existing axis object. Set extremes after render time.\n            baseAxis.setExtremes(newMin, newMax, RangeSelector_pick(redraw, true), void 0, // Auto animation\n            {\n                trigger: 'rangeSelectorButton',\n                rangeSelectorButton: rangeOptions\n            });\n            chart.setFixedRange(rangeOptions._range);\n        }\n        RangeSelector_fireEvent(this, 'afterBtnClick');\n    };\n    /**\n     * Set the selected option. This method only sets the internal flag, it\n     * doesn't update the buttons or the actual zoomed range.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#setSelected\n     * @param {number} [selected]\n     */\n    RangeSelector.prototype.setSelected = function (selected) {\n        this.selected = this.options.selected = selected;\n    };\n    /**\n     * Initialize the range selector\n     *\n     * @private\n     * @function Highcharts.RangeSelector#init\n     * @param {Highcharts.Chart} chart\n     */\n    RangeSelector.prototype.init = function (chart) {\n        var rangeSelector = this,\n            options = chart.options.rangeSelector,\n            buttonOptions = options.buttons,\n            selectedOption = options.selected,\n            blurInputs = function () {\n                var minInput = rangeSelector.minInput,\n            maxInput = rangeSelector.maxInput;\n            // #3274 in some case blur is not defined\n            if (minInput && !!minInput.blur) {\n                RangeSelector_fireEvent(minInput, 'blur');\n            }\n            if (maxInput && !!maxInput.blur) {\n                RangeSelector_fireEvent(maxInput, 'blur');\n            }\n        };\n        rangeSelector.chart = chart;\n        rangeSelector.options = options;\n        rangeSelector.buttons = [];\n        rangeSelector.buttonOptions = buttonOptions;\n        this.eventsToUnbind = [];\n        this.eventsToUnbind.push(RangeSelector_addEvent(chart.container, 'mousedown', blurInputs));\n        this.eventsToUnbind.push(RangeSelector_addEvent(chart, 'resize', blurInputs));\n        // Extend the buttonOptions with actual range\n        buttonOptions.forEach(rangeSelector.computeButtonRange);\n        // Zoomed range based on a pre-selected button index\n        if (typeof selectedOption !== 'undefined' &&\n            buttonOptions[selectedOption]) {\n            this.clickButton(selectedOption, false);\n        }\n        this.eventsToUnbind.push(RangeSelector_addEvent(chart, 'load', function () {\n            // If a data grouping is applied to the current button, release it\n            // when extremes change\n            if (chart.xAxis && chart.xAxis[0]) {\n                RangeSelector_addEvent(chart.xAxis[0], 'setExtremes', function (e) {\n                    if (RangeSelector_isNumber(this.max) &&\n                        RangeSelector_isNumber(this.min) &&\n                        this.max - this.min !== chart.fixedRange &&\n                        e.trigger !== 'rangeSelectorButton' &&\n                        e.trigger !== 'updatedData' &&\n                        rangeSelector.forcedDataGrouping &&\n                        !rangeSelector.frozenStates) {\n                        this.setDataGrouping(false, false);\n                    }\n                });\n            }\n        }));\n        this.createElements();\n    };\n    /**\n     * Dynamically update the range selector buttons after a new range has been\n     * set\n     *\n     * @private\n     * @function Highcharts.RangeSelector#updateButtonStates\n     */\n    RangeSelector.prototype.updateButtonStates = function () {\n        var rangeSelector = this,\n            chart = this.chart,\n            dropdown = this.dropdown,\n            dropdownLabel = this.dropdownLabel,\n            baseAxis = chart.xAxis[0],\n            actualRange = Math.round(baseAxis.max - baseAxis.min),\n            hasNoData = !baseAxis.hasVisibleSeries,\n            day = 24 * 36e5, // A single day in milliseconds\n            unionExtremes = (chart.scroller &&\n                chart.scroller.getUnionExtremes()) || baseAxis,\n            dataMin = unionExtremes.dataMin,\n            dataMax = unionExtremes.dataMax,\n            ytdExtremes = rangeSelector.getYTDExtremes(dataMax,\n            dataMin),\n            ytdMin = ytdExtremes.min,\n            ytdMax = ytdExtremes.max,\n            selected = rangeSelector.selected,\n            allButtonsEnabled = rangeSelector.options.allButtonsEnabled,\n            buttonStates = new Array(rangeSelector.buttonOptions.length)\n                .fill(0),\n            selectedExists = RangeSelector_isNumber(selected),\n            buttons = rangeSelector.buttons;\n        var isSelectedTooGreat = false,\n            selectedIndex = null;\n        rangeSelector.buttonOptions.forEach(function (rangeOptions, i) {\n            var _a;\n            var range = rangeOptions._range,\n                type = rangeOptions.type,\n                count = rangeOptions.count || 1,\n                offsetRange = rangeOptions._offsetMax -\n                    rangeOptions._offsetMin,\n                isSelected = i === selected, \n                // Disable buttons where the range exceeds what is allowed i;\n            // the current view\n            isTooGreatRange = range >\n                dataMax - dataMin, \n            // Disable buttons where the range is smaller than the minimum\n            // range\n            isTooSmallRange = range < baseAxis.minRange;\n            // Do not select the YTD button if not explicitly told so\n            var isYTDButNotSelected = false, \n                // Disable the All button if we're already showing all\n                isSameRange = range === actualRange;\n            if (isSelected && isTooGreatRange) {\n                isSelectedTooGreat = true;\n            }\n            if (baseAxis.isOrdinal &&\n                ((_a = baseAxis.ordinal) === null || _a === void 0 ? void 0 : _a.positions) &&\n                range &&\n                actualRange < range) {\n                // Handle ordinal ranges\n                var positions = baseAxis.ordinal.positions,\n                    prevOrdinalPosition = Axis_OrdinalAxis.Additions.findIndexOf(positions,\n                    baseAxis.min,\n                    true),\n                    nextOrdinalPosition = Math.min(Axis_OrdinalAxis.Additions.findIndexOf(positions,\n                    baseAxis.max,\n                    true) + 1,\n                    positions.length - 1);\n                if (positions[nextOrdinalPosition] -\n                    positions[prevOrdinalPosition] > range) {\n                    isSameRange = true;\n                }\n            }\n            else if (\n            // Months and years have variable range so we check the extremes\n            (type === 'month' || type === 'year') &&\n                (actualRange + 36e5 >=\n                    { month: 28, year: 365 }[type] * day * count - offsetRange) &&\n                (actualRange - 36e5 <=\n                    { month: 31, year: 366 }[type] * day * count + offsetRange)) {\n                isSameRange = true;\n            }\n            else if (type === 'ytd') {\n                isSameRange = (ytdMax - ytdMin + offsetRange) === actualRange;\n                isYTDButNotSelected = !isSelected;\n            }\n            else if (type === 'all') {\n                isSameRange = (baseAxis.max - baseAxis.min >=\n                    dataMax - dataMin);\n            }\n            // The new zoom area happens to match the range for a button - mark\n            // it selected. This happens when scrolling across an ordinal gap.\n            // It can be seen in the intraday demos when selecting 1h and scroll\n            // across the night gap.\n            var disable = (!allButtonsEnabled &&\n                    !(isSelectedTooGreat && type === 'all') &&\n                    (isTooGreatRange ||\n                        isTooSmallRange ||\n                        hasNoData));\n            var select = ((isSelectedTooGreat && type === 'all') ||\n                    (isYTDButNotSelected ? false : isSameRange) ||\n                    (isSelected && rangeSelector.frozenStates));\n            if (disable) {\n                buttonStates[i] = 3;\n            }\n            else if (select) {\n                if (!selectedExists || i === selected) {\n                    selectedIndex = i;\n                }\n            }\n        });\n        if (selectedIndex !== null) {\n            buttonStates[selectedIndex] = 2;\n            rangeSelector.setSelected(selectedIndex);\n            if (this.dropdown) {\n                this.dropdown.selectedIndex = selectedIndex + 1;\n            }\n        }\n        else {\n            rangeSelector.setSelected();\n            if (this.dropdown) {\n                this.dropdown.selectedIndex = -1;\n            }\n            if (dropdownLabel) {\n                dropdownLabel.setState(0);\n                dropdownLabel.attr({\n                    text: (RangeSelector_defaultOptions.lang.rangeSelectorZoom || '') + ' ▾'\n                });\n            }\n        }\n        for (var i = 0; i < buttonStates.length; i++) {\n            var state = buttonStates[i];\n            var button = buttons[i];\n            if (button.state !== state) {\n                button.setState(state);\n                if (dropdown) {\n                    dropdown.options[i + 1].disabled = (state === 3);\n                    if (state === 2) {\n                        if (dropdownLabel) {\n                            dropdownLabel.setState(2);\n                            dropdownLabel.attr({\n                                text: rangeSelector.buttonOptions[i].text + ' ▾'\n                            });\n                        }\n                        dropdown.selectedIndex = i + 1;\n                    }\n                    var bbox = dropdownLabel.getBBox();\n                    RangeSelector_css(dropdown, {\n                        width: \"\" + bbox.width + \"px\",\n                        height: \"\" + bbox.height + \"px\"\n                    });\n                }\n            }\n        }\n    };\n    /**\n     * Compute and cache the range for an individual button\n     *\n     * @private\n     * @function Highcharts.RangeSelector#computeButtonRange\n     * @param {Highcharts.RangeSelectorButtonsOptions} rangeOptions\n     */\n    RangeSelector.prototype.computeButtonRange = function (rangeOptions) {\n        var type = rangeOptions.type,\n            count = rangeOptions.count || 1, \n            // These time intervals have a fixed number of milliseconds, as\n            // opposed to month, ytd and year\n            fixedTimes = {\n                millisecond: 1,\n                second: 1000,\n                minute: 60 * 1000,\n                hour: 3600 * 1000,\n                day: 24 * 3600 * 1000,\n                week: 7 * 24 * 3600 * 1000\n            };\n        // Store the range on the button object\n        if (fixedTimes[type]) {\n            rangeOptions._range = fixedTimes[type] * count;\n        }\n        else if (type === 'month' || type === 'year') {\n            rangeOptions._range = {\n                month: 30,\n                year: 365\n            }[type] * 24 * 36e5 * count;\n        }\n        rangeOptions._offsetMin = RangeSelector_pick(rangeOptions.offsetMin, 0);\n        rangeOptions._offsetMax = RangeSelector_pick(rangeOptions.offsetMax, 0);\n        rangeOptions._range +=\n            rangeOptions._offsetMax - rangeOptions._offsetMin;\n    };\n    /**\n     * Get the unix timestamp of a HTML input for the dates\n     *\n     * @private\n     * @function Highcharts.RangeSelector#getInputValue\n     */\n    RangeSelector.prototype.getInputValue = function (name) {\n        var input = name === 'min' ? this.minInput : this.maxInput;\n        var options = this.chart.options\n                .rangeSelector;\n        var time = this.chart.time;\n        if (input) {\n            return ((input.type === 'text' && options.inputDateParser) ||\n                this.defaultInputDateParser)(input.value, time.timezone === 'UTC', time);\n        }\n        return 0;\n    };\n    /**\n     * Set the internal and displayed value of a HTML input for the dates\n     *\n     * @private\n     * @function Highcharts.RangeSelector#setInputValue\n     */\n    RangeSelector.prototype.setInputValue = function (name, inputTime) {\n        var options = this.options, time = this.chart.time, input = name === 'min' ? this.minInput : this.maxInput, dateBox = name === 'min' ? this.minDateBox : this.maxDateBox;\n        if (input) {\n            input.setAttribute('type', preferredInputType(options.inputDateFormat || '%e %b %Y'));\n            var hcTimeAttr = input.getAttribute('data-hc-time');\n            var updatedTime = RangeSelector_defined(hcTimeAttr) ? Number(hcTimeAttr) : void 0;\n            if (RangeSelector_defined(inputTime)) {\n                var previousTime = updatedTime;\n                if (RangeSelector_defined(previousTime)) {\n                    input.setAttribute('data-hc-time-previous', previousTime);\n                }\n                input.setAttribute('data-hc-time', inputTime);\n                updatedTime = inputTime;\n            }\n            input.value = time.dateFormat((this.inputTypeFormats[input.type] ||\n                options.inputEditDateFormat), updatedTime);\n            if (dateBox) {\n                dateBox.attr({\n                    text: time.dateFormat(options.inputDateFormat, updatedTime)\n                });\n            }\n        }\n    };\n    /**\n     * Set the min and max value of a HTML input for the dates\n     *\n     * @private\n     * @function Highcharts.RangeSelector#setInputExtremes\n     */\n    RangeSelector.prototype.setInputExtremes = function (name, min, max) {\n        var input = name === 'min' ? this.minInput : this.maxInput;\n        if (input) {\n            var format = this.inputTypeFormats[input.type];\n            var time = this.chart.time;\n            if (format) {\n                var newMin = time.dateFormat(format,\n                    min);\n                if (input.min !== newMin) {\n                    input.min = newMin;\n                }\n                var newMax = time.dateFormat(format,\n                    max);\n                if (input.max !== newMax) {\n                    input.max = newMax;\n                }\n            }\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.RangeSelector#showInput\n     * @param {string} name\n     */\n    RangeSelector.prototype.showInput = function (name) {\n        var dateBox = name === 'min' ? this.minDateBox : this.maxDateBox, input = name === 'min' ? this.minInput : this.maxInput;\n        if (input && dateBox && this.inputGroup) {\n            var isTextInput = input.type === 'text',\n                _a = this.inputGroup,\n                _b = _a.translateX,\n                translateX = _b === void 0 ? 0 : _b,\n                _c = _a.translateY,\n                translateY = _c === void 0 ? 0 : _c,\n                _d = dateBox.x,\n                x = _d === void 0 ? 0 : _d,\n                _e = dateBox.width,\n                width = _e === void 0 ? 0 : _e,\n                _f = dateBox.height,\n                height = _f === void 0 ? 0 : _f,\n                inputBoxWidth = this.options.inputBoxWidth;\n            RangeSelector_css(input, {\n                width: isTextInput ?\n                    ((width + (inputBoxWidth ? -2 : 20)) + 'px') :\n                    'auto',\n                height: (height - 2) + 'px',\n                border: '2px solid silver'\n            });\n            if (isTextInput && inputBoxWidth) {\n                RangeSelector_css(input, {\n                    left: (translateX + x) + 'px',\n                    top: translateY + 'px'\n                });\n                // Inputs of types date, time or datetime-local should be centered\n                // on top of the dateBox\n            }\n            else {\n                RangeSelector_css(input, {\n                    left: Math.min(Math.round(x +\n                        translateX -\n                        (input.offsetWidth - width) / 2), this.chart.chartWidth - input.offsetWidth) + 'px',\n                    top: (translateY - (input.offsetHeight - height) / 2) + 'px'\n                });\n            }\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.RangeSelector#hideInput\n     * @param {string} name\n     */\n    RangeSelector.prototype.hideInput = function (name) {\n        var input = name === 'min' ? this.minInput : this.maxInput;\n        if (input) {\n            RangeSelector_css(input, {\n                top: '-9999em',\n                border: 0,\n                width: '1px',\n                height: '1px'\n            });\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.RangeSelector#defaultInputDateParser\n     */\n    RangeSelector.prototype.defaultInputDateParser = function (inputDate, useUTC, time) {\n        return (time === null || time === void 0 ? void 0 : time.parse(inputDate)) || 0;\n    };\n    /**\n     * Draw either the 'from' or the 'to' HTML input box of the range selector\n     *\n     * @private\n     * @function Highcharts.RangeSelector#drawInput\n     */\n    RangeSelector.prototype.drawInput = function (name) {\n        var _a = this,\n            chart = _a.chart,\n            div = _a.div,\n            inputGroup = _a.inputGroup;\n        var rangeSelector = this,\n            chartStyle = chart.renderer.style || {},\n            renderer = chart.renderer,\n            options = chart.options.rangeSelector,\n            lang = RangeSelector_defaultOptions.lang,\n            isMin = name === 'min';\n        /**\n         * @private\n         */\n        function updateExtremes(name) {\n            var _a;\n            var maxInput = rangeSelector.maxInput,\n                minInput = rangeSelector.minInput,\n                chartAxis = chart.xAxis[0],\n                unionExtremes = ((_a = chart.scroller) === null || _a === void 0 ? void 0 : _a.getUnionExtremes()) || chartAxis,\n                dataMin = unionExtremes.dataMin,\n                dataMax = unionExtremes.dataMax,\n                currentExtreme = chart.xAxis[0].getExtremes()[name];\n            var value = rangeSelector.getInputValue(name);\n            if (RangeSelector_isNumber(value) && value !== currentExtreme) {\n                // Validate the extremes. If it goes beyond the data min or\n                // max, use the actual data extreme (#2438).\n                if (isMin && maxInput && RangeSelector_isNumber(dataMin)) {\n                    if (value > Number(maxInput.getAttribute('data-hc-time'))) {\n                        value = void 0;\n                    }\n                    else if (value < dataMin) {\n                        value = dataMin;\n                    }\n                }\n                else if (minInput && RangeSelector_isNumber(dataMax)) {\n                    if (value < Number(minInput.getAttribute('data-hc-time'))) {\n                        value = void 0;\n                    }\n                    else if (value > dataMax) {\n                        value = dataMax;\n                    }\n                }\n                // Set the extremes\n                if (typeof value !== 'undefined') { // @todo typeof undefined\n                    chartAxis.setExtremes(isMin ? value : chartAxis.min, isMin ? chartAxis.max : value, void 0, void 0, { trigger: 'rangeSelectorInput' });\n                }\n            }\n        }\n        // Create the text label\n        var text = lang[isMin ? 'rangeSelectorFrom' : 'rangeSelectorTo'] || '';\n        var label = renderer\n                .label(text, 0)\n                .addClass('highcharts-range-label')\n                .attr({\n                padding: text ? 2 : 0,\n                height: text ? options.inputBoxHeight : 0\n            })\n                .add(inputGroup);\n        // Create an SVG label that shows updated date ranges and records click\n        // events that bring in the HTML input.\n        var dateBox = renderer\n                .label('', 0)\n                .addClass('highcharts-range-input')\n                .attr({\n                padding: 2,\n                width: options.inputBoxWidth,\n                height: options.inputBoxHeight,\n                'text-align': 'center'\n            })\n                .on('click',\n            function () {\n                // If it is already focused, the onfocus event doesn't fire\n                // (#3713)\n                rangeSelector.showInput(name);\n            rangeSelector[name + 'Input'].focus();\n        });\n        if (!chart.styledMode) {\n            dateBox.attr({\n                stroke: options.inputBoxBorderColor,\n                'stroke-width': 1\n            });\n        }\n        dateBox.add(inputGroup);\n        // Create the HTML input element. This is rendered as 1x1 pixel then set\n        // to the right size when focused.\n        var input = createElement('input', {\n                name: name,\n                className: 'highcharts-range-selector'\n            },\n            void 0,\n            div);\n        // #14788: Setting input.type to an unsupported type throws in IE, so\n        // we need to use setAttribute instead\n        input.setAttribute('type', preferredInputType(options.inputDateFormat || '%e %b %Y'));\n        if (!chart.styledMode) {\n            // Styles\n            label.css(RangeSelector_merge(chartStyle, options.labelStyle));\n            dateBox.css(RangeSelector_merge({\n                color: \"#333333\" /* Palette.neutralColor80 */\n            }, chartStyle, options.inputStyle));\n            RangeSelector_css(input, RangeSelector_extend({\n                position: 'absolute',\n                border: 0,\n                boxShadow: '0 0 15px rgba(0,0,0,0.3)',\n                width: '1px', // Chrome needs a pixel to see it\n                height: '1px',\n                padding: 0,\n                textAlign: 'center',\n                fontSize: chartStyle.fontSize,\n                fontFamily: chartStyle.fontFamily,\n                top: '-9999em' // #4798\n            }, options.inputStyle));\n        }\n        // Blow up the input box\n        input.onfocus = function () {\n            rangeSelector.showInput(name);\n        };\n        // Hide away the input box\n        input.onblur = function () {\n            // Update extremes only when inputs are active\n            if (input === (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc.activeElement) { // Only when focused\n                // Update also when no `change` event is triggered, like when\n                // clicking inside the SVG (#4710)\n                updateExtremes(name);\n            }\n            // #10404 - move hide and blur outside focus\n            rangeSelector.hideInput(name);\n            rangeSelector.setInputValue(name);\n            input.blur(); // #4606\n        };\n        var keyDown = false;\n        // Handle changes in the input boxes\n        input.onchange = function () {\n            // Update extremes and blur input when clicking date input calendar\n            if (!keyDown) {\n                updateExtremes(name);\n                rangeSelector.hideInput(name);\n                input.blur();\n            }\n        };\n        input.onkeypress = function (event) {\n            // IE does not fire onchange on enter\n            if (event.keyCode === 13) {\n                updateExtremes(name);\n            }\n        };\n        input.onkeydown = function (event) {\n            keyDown = true;\n            // Arrow keys\n            if (event.key === 'ArrowUp' ||\n                event.key === 'ArrowDown' ||\n                event.key === 'Tab') {\n                updateExtremes(name);\n            }\n        };\n        input.onkeyup = function () {\n            keyDown = false;\n        };\n        return { dateBox: dateBox, input: input, label: label };\n    };\n    /**\n     * Get the position of the range selector buttons and inputs. This can be\n     * overridden from outside for custom positioning.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#getPosition\n     */\n    RangeSelector.prototype.getPosition = function () {\n        var chart = this.chart,\n            options = chart.options.rangeSelector,\n            top = options.verticalAlign === 'top' ?\n                chart.plotTop - chart.axisOffset[0] :\n                0; // Set offset only for verticalAlign top\n            return {\n                buttonTop: top + options.buttonPosition.y,\n                inputTop: top + options.inputPosition.y - 10\n            };\n    };\n    /**\n     * Get the extremes of YTD. Will choose dataMax if its value is lower than\n     * the current timestamp. Will choose dataMin if its value is higher than\n     * the timestamp for the start of current year.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#getYTDExtremes\n     * @return {*}\n     * Returns min and max for the YTD\n     */\n    RangeSelector.prototype.getYTDExtremes = function (dataMax, dataMin) {\n        var time = this.chart.time,\n            year = time.toParts(dataMax)[0],\n            startOfYear = time.makeTime(year, 0);\n        return {\n            max: dataMax,\n            min: Math.max(dataMin, startOfYear)\n        };\n    };\n    RangeSelector.prototype.createElements = function () {\n        var _a;\n        var chart = this.chart,\n            renderer = chart.renderer,\n            container = chart.container,\n            chartOptions = chart.options,\n            options = chartOptions.rangeSelector,\n            inputEnabled = options.inputEnabled,\n            inputsZIndex = RangeSelector_pick((_a = chartOptions.chart.style) === null || _a === void 0 ? void 0 : _a.zIndex, 0) + 1;\n        if (options.enabled === false) {\n            return;\n        }\n        this.group = renderer.g('range-selector-group')\n            .attr({\n            zIndex: 7\n        })\n            .add();\n        this.div = createElement('div', void 0, {\n            position: 'relative',\n            height: 0,\n            zIndex: inputsZIndex\n        });\n        if (this.buttonOptions.length) {\n            this.renderButtons();\n        }\n        // First create a wrapper outside the container in order to make\n        // the inputs work and make export correct\n        if (container.parentNode) {\n            container.parentNode.insertBefore(this.div, container);\n        }\n        if (inputEnabled) {\n            this.createInputs();\n        }\n    };\n    /**\n     * Create the input elements and its group.\n     *\n     */\n    RangeSelector.prototype.createInputs = function () {\n        this.inputGroup = this.chart.renderer.g('input-group').add(this.group);\n        var minElems = this.drawInput('min');\n        this.minDateBox = minElems.dateBox;\n        this.minLabel = minElems.label;\n        this.minInput = minElems.input;\n        var maxElems = this.drawInput('max');\n        this.maxDateBox = maxElems.dateBox;\n        this.maxLabel = maxElems.label;\n        this.maxInput = maxElems.input;\n    };\n    /**\n     * Render the range selector including the buttons and the inputs. The first\n     * time render is called, the elements are created and positioned. On\n     * subsequent calls, they are moved and updated.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#render\n     * @param {number} [min]\n     *        X axis minimum\n     * @param {number} [max]\n     *        X axis maximum\n     */\n    RangeSelector.prototype.render = function (min, max) {\n        var _a,\n            _b;\n        if (this.options.enabled === false) {\n            return;\n        }\n        var chart = this.chart,\n            chartOptions = chart.options,\n            options = chartOptions.rangeSelector, \n            // Place inputs above the container\n            inputEnabled = options.inputEnabled;\n        if (inputEnabled) {\n            if (!this.inputGroup) {\n                this.createInputs();\n            }\n            // Set or reset the input values\n            this.setInputValue('min', min);\n            this.setInputValue('max', max);\n            if (!this.chart.styledMode) {\n                (_a = this.maxLabel) === null || _a === void 0 ? void 0 : _a.css(options.labelStyle);\n                (_b = this.minLabel) === null || _b === void 0 ? void 0 : _b.css(options.labelStyle);\n            }\n            var unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || chart.xAxis[0] || {};\n            if (RangeSelector_defined(unionExtremes.dataMin) &&\n                RangeSelector_defined(unionExtremes.dataMax)) {\n                var minRange = chart.xAxis[0].minRange || 0;\n                this.setInputExtremes('min', unionExtremes.dataMin, Math.min(unionExtremes.dataMax, this.getInputValue('max')) - minRange);\n                this.setInputExtremes('max', Math.max(unionExtremes.dataMin, this.getInputValue('min')) + minRange, unionExtremes.dataMax);\n            }\n            // Reflow\n            if (this.inputGroup) {\n                var x_1 = 0;\n                [\n                    this.minLabel,\n                    this.minDateBox,\n                    this.maxLabel,\n                    this.maxDateBox\n                ].forEach(function (label) {\n                    if (label) {\n                        var width = label.getBBox().width;\n                        if (width) {\n                            label.attr({ x: x_1 });\n                            x_1 += width + options.inputSpacing;\n                        }\n                    }\n                });\n            }\n        }\n        else {\n            if (this.inputGroup) {\n                this.inputGroup.destroy();\n                delete this.inputGroup;\n            }\n        }\n        if (!this.chart.styledMode) {\n            if (this.zoomText) {\n                this.zoomText.css(options.labelStyle);\n            }\n        }\n        this.alignElements();\n        this.updateButtonStates();\n    };\n    /**\n     * Render the range buttons. This only runs the first time, later the\n     * positioning is laid out in alignElements.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#renderButtons\n     */\n    RangeSelector.prototype.renderButtons = function () {\n        var _this = this;\n        var _a,\n            _b;\n        var _c;\n        var _d = this,\n            chart = _d.chart,\n            options = _d.options;\n        var lang = RangeSelector_defaultOptions.lang;\n        var renderer = chart.renderer;\n        var buttonTheme = RangeSelector_merge(options.buttonTheme);\n        var states = buttonTheme && buttonTheme.states;\n        // Prevent the button from resetting the width when the button state\n        // changes since we need more control over the width when collapsing\n        // the buttons\n        delete buttonTheme.width;\n        delete buttonTheme.states;\n        this.buttonGroup = renderer.g('range-selector-buttons').add(this.group);\n        var dropdown = this.dropdown = createElement('select',\n            void 0, {\n                position: 'absolute',\n                padding: 0,\n                border: 0,\n                cursor: 'pointer',\n                opacity: 0.0001\n            },\n            this.div);\n        // Create a label for dropdown select element\n        var userButtonTheme = (_a = chart.userOptions.rangeSelector) === null || _a === void 0 ? void 0 : _a.buttonTheme;\n        this.dropdownLabel = renderer.button('', 0, 0, function () { }, RangeSelector_merge(buttonTheme, {\n            'stroke-width': RangeSelector_pick(buttonTheme['stroke-width'], 0),\n            width: 'auto',\n            paddingLeft: RangeSelector_pick(options.buttonTheme.paddingLeft, userButtonTheme === null || userButtonTheme === void 0 ? void 0 : userButtonTheme.padding, 8),\n            paddingRight: RangeSelector_pick(options.buttonTheme.paddingRight, userButtonTheme === null || userButtonTheme === void 0 ? void 0 : userButtonTheme.padding, 8)\n        }), states && states.hover, states && states.select, states && states.disabled)\n            .hide()\n            .add(this.group);\n        // Prevent page zoom on iPhone\n        RangeSelector_addEvent(dropdown, 'touchstart', function () {\n            dropdown.style.fontSize = '16px';\n        });\n        // Forward events from select to button\n        var mouseOver = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ? 'mouseover' : 'mouseenter', mouseOut = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS ? 'mouseout' : 'mouseleave';\n        RangeSelector_addEvent(dropdown, mouseOver, function () {\n            RangeSelector_fireEvent(_this.dropdownLabel.element, mouseOver);\n        });\n        RangeSelector_addEvent(dropdown, mouseOut, function () {\n            RangeSelector_fireEvent(_this.dropdownLabel.element, mouseOut);\n        });\n        RangeSelector_addEvent(dropdown, 'change', function () {\n            var button = _this.buttons[dropdown.selectedIndex - 1];\n            RangeSelector_fireEvent(button.element, 'click');\n        });\n        this.zoomText = renderer\n            .label(lang.rangeSelectorZoom || '', 0)\n            .attr({\n            padding: options.buttonTheme.padding,\n            height: options.buttonTheme.height,\n            paddingLeft: 0,\n            paddingRight: 0\n        })\n            .add(this.buttonGroup);\n        if (!this.chart.styledMode) {\n            this.zoomText.css(options.labelStyle);\n            (_b = (_c = options.buttonTheme)['stroke-width']) !== null && _b !== void 0 ? _b : (_c['stroke-width'] = 0);\n        }\n        createElement('option', {\n            textContent: this.zoomText.textStr,\n            disabled: true\n        }, void 0, dropdown);\n        this.createButtons();\n    };\n    RangeSelector.prototype.createButtons = function () {\n        var _this = this;\n        var options = this.options;\n        var buttonTheme = RangeSelector_merge(options.buttonTheme);\n        var states = buttonTheme && buttonTheme.states;\n        // Prevent the button from resetting the width when the button state\n        // changes since we need more control over the width when collapsing\n        // the buttons\n        var width = buttonTheme.width || 28;\n        delete buttonTheme.width;\n        delete buttonTheme.states;\n        this.buttonOptions.forEach(function (rangeOptions, i) {\n            _this.createButton(rangeOptions, i, width, states);\n        });\n    };\n    RangeSelector.prototype.createButton = function (rangeOptions, i, width, states) {\n        var _this = this;\n        var _a = this,\n            dropdown = _a.dropdown,\n            buttons = _a.buttons,\n            chart = _a.chart,\n            options = _a.options;\n        var renderer = chart.renderer;\n        var buttonTheme = RangeSelector_merge(options.buttonTheme);\n        dropdown === null || dropdown === void 0 ? void 0 : dropdown.add(createElement('option', {\n            textContent: rangeOptions.title || rangeOptions.text\n        }), i + 2);\n        buttons[i] = renderer\n            .button(rangeOptions.text, 0, 0, function (e) {\n            // Extract events from button object and call\n            var buttonEvents = (rangeOptions.events && rangeOptions.events.click);\n            var callDefaultEvent;\n            if (buttonEvents) {\n                callDefaultEvent =\n                    buttonEvents.call(rangeOptions, e);\n            }\n            if (callDefaultEvent !== false) {\n                _this.clickButton(i);\n            }\n            _this.isActive = true;\n        }, buttonTheme, states && states.hover, states && states.select, states && states.disabled)\n            .attr({\n            'text-align': 'center',\n            width: width\n        })\n            .add(this.buttonGroup);\n        if (rangeOptions.title) {\n            buttons[i].attr('title', rangeOptions.title);\n        }\n    };\n    /**\n     * Align the elements horizontally and vertically.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#alignElements\n     */\n    RangeSelector.prototype.alignElements = function () {\n        var _this = this;\n        var _a;\n        var _b = this,\n            buttonGroup = _b.buttonGroup,\n            buttons = _b.buttons,\n            chart = _b.chart,\n            group = _b.group,\n            inputGroup = _b.inputGroup,\n            options = _b.options,\n            zoomText = _b.zoomText;\n        var chartOptions = chart.options;\n        var navButtonOptions = (chartOptions.exporting &&\n                chartOptions.exporting.enabled !== false &&\n                chartOptions.navigation &&\n                chartOptions.navigation.buttonOptions);\n        var buttonPosition = options.buttonPosition,\n            inputPosition = options.inputPosition,\n            verticalAlign = options.verticalAlign;\n        // Get the X offset required to avoid overlapping with the exporting\n        // button. This is used both by the buttonGroup and the inputGroup.\n        var getXOffsetForExportButton = function (group,\n            position,\n            rightAligned) {\n                if (navButtonOptions &&\n                    _this.titleCollision(chart) &&\n                    verticalAlign === 'top' &&\n                    rightAligned && ((position.y -\n                    group.getBBox().height - 12) <\n                    ((navButtonOptions.y || 0) +\n                        (navButtonOptions.height || 0) +\n                        chart.spacing[0]))) {\n                    return -40;\n            }\n            return 0;\n        };\n        var plotLeft = chart.plotLeft;\n        if (group && buttonPosition && inputPosition) {\n            var translateX = buttonPosition.x - chart.spacing[3];\n            if (buttonGroup) {\n                this.positionButtons();\n                if (!this.initialButtonGroupWidth) {\n                    var width_1 = 0;\n                    if (zoomText) {\n                        width_1 += zoomText.getBBox().width + 5;\n                    }\n                    buttons.forEach(function (button, i) {\n                        width_1 += button.width || 0;\n                        if (i !== buttons.length - 1) {\n                            width_1 += options.buttonSpacing;\n                        }\n                    });\n                    this.initialButtonGroupWidth = width_1;\n                }\n                plotLeft -= chart.spacing[3];\n                // Detect collision between button group and exporting\n                var xOffsetForExportButton_1 = getXOffsetForExportButton(buttonGroup,\n                    buttonPosition,\n                    buttonPosition.align === 'right' ||\n                        inputPosition.align === 'right');\n                this.alignButtonGroup(xOffsetForExportButton_1);\n                if ((_a = this.buttonGroup) === null || _a === void 0 ? void 0 : _a.translateY) {\n                    this.dropdownLabel\n                        .attr({ y: this.buttonGroup.translateY });\n                }\n                // Skip animation\n                group.placed = buttonGroup.placed = chart.hasLoaded;\n            }\n            var xOffsetForExportButton = 0;\n            if (options.inputEnabled && inputGroup) {\n                // Detect collision between the input group and exporting button\n                xOffsetForExportButton = getXOffsetForExportButton(inputGroup, inputPosition, buttonPosition.align === 'right' ||\n                    inputPosition.align === 'right');\n                if (inputPosition.align === 'left') {\n                    translateX = plotLeft;\n                }\n                else if (inputPosition.align === 'right') {\n                    translateX = -Math.max(chart.axisOffset[1], -xOffsetForExportButton);\n                }\n                // Update the alignment to the updated spacing box\n                inputGroup.align({\n                    y: inputPosition.y,\n                    width: inputGroup.getBBox().width,\n                    align: inputPosition.align,\n                    // Fix wrong getBBox() value on right align\n                    x: inputPosition.x + translateX - 2\n                }, true, chart.spacingBox);\n                // Skip animation\n                inputGroup.placed = chart.hasLoaded;\n            }\n            this.handleCollision(xOffsetForExportButton);\n            // Vertical align\n            group.align({\n                verticalAlign: verticalAlign\n            }, true, chart.spacingBox);\n            var alignTranslateY = group.alignAttr.translateY;\n            // Set position\n            var groupHeight = group.getBBox().height + 20; // # 20 padding\n                var translateY = 0;\n            // Calculate bottom position\n            if (verticalAlign === 'bottom') {\n                var legendOptions = chart.legend && chart.legend.options;\n                var legendHeight = (legendOptions &&\n                        legendOptions.verticalAlign === 'bottom' &&\n                        legendOptions.enabled &&\n                        !legendOptions.floating ?\n                        (chart.legend.legendHeight +\n                            RangeSelector_pick(legendOptions.margin, 10)) :\n                        0);\n                groupHeight = groupHeight + legendHeight - 20;\n                translateY = (alignTranslateY -\n                    groupHeight -\n                    (options.floating ? 0 : options.y) -\n                    (chart.titleOffset ? chart.titleOffset[2] : 0) -\n                    10 // 10 spacing\n                );\n            }\n            if (verticalAlign === 'top') {\n                if (options.floating) {\n                    translateY = 0;\n                }\n                if (chart.titleOffset && chart.titleOffset[0]) {\n                    translateY = chart.titleOffset[0];\n                }\n                translateY += ((chart.margin[0] - chart.spacing[0]) || 0);\n            }\n            else if (verticalAlign === 'middle') {\n                if (inputPosition.y === buttonPosition.y) {\n                    translateY = alignTranslateY;\n                }\n                else if (inputPosition.y || buttonPosition.y) {\n                    if (inputPosition.y < 0 ||\n                        buttonPosition.y < 0) {\n                        translateY -= Math.min(inputPosition.y, buttonPosition.y);\n                    }\n                    else {\n                        translateY = alignTranslateY - groupHeight;\n                    }\n                }\n            }\n            group.translate(options.x, options.y + Math.floor(translateY));\n            // Translate HTML inputs\n            var _c = this,\n                minInput = _c.minInput,\n                maxInput = _c.maxInput,\n                dropdown = _c.dropdown;\n            if (options.inputEnabled && minInput && maxInput) {\n                minInput.style.marginTop = group.translateY + 'px';\n                maxInput.style.marginTop = group.translateY + 'px';\n            }\n            if (dropdown) {\n                dropdown.style.marginTop = group.translateY + 'px';\n            }\n        }\n    };\n    /**\n     * @private\n     */\n    RangeSelector.prototype.redrawElements = function () {\n        var _a,\n            _b,\n            _c,\n            _d,\n            _e,\n            _f,\n            _g;\n        var chart = this.chart,\n            _h = this.options,\n            inputBoxHeight = _h.inputBoxHeight,\n            inputBoxBorderColor = _h.inputBoxBorderColor;\n        (_a = this.maxDateBox) === null || _a === void 0 ? void 0 : _a.attr({\n            height: inputBoxHeight\n        });\n        (_b = this.minDateBox) === null || _b === void 0 ? void 0 : _b.attr({\n            height: inputBoxHeight\n        });\n        if (!chart.styledMode) {\n            (_c = this.maxDateBox) === null || _c === void 0 ? void 0 : _c.attr({\n                stroke: inputBoxBorderColor\n            });\n            (_d = this.minDateBox) === null || _d === void 0 ? void 0 : _d.attr({\n                stroke: inputBoxBorderColor\n            });\n        }\n        if (this.isDirty) {\n            this.isDirty = false;\n            // Reset this prop to force redrawing collapse of buttons\n            this.isCollapsed = void 0;\n            var newButtonsOptions = (_e = this.options.buttons) !== null && _e !== void 0 ? _e : [];\n            var btnLength = Math.min(newButtonsOptions.length,\n                this.buttonOptions.length);\n            var _j = this,\n                dropdown = _j.dropdown,\n                options = _j.options;\n            var buttonTheme = RangeSelector_merge(options.buttonTheme);\n            var states = buttonTheme && buttonTheme.states;\n            // Prevent the button from resetting the width when the button state\n            // changes since we need more control over the width when collapsing\n            // the buttons\n            var width = buttonTheme.width || 28;\n            // Destroy additional buttons\n            if (newButtonsOptions.length < this.buttonOptions.length) {\n                for (var i = this.buttonOptions.length - 1; i >= newButtonsOptions.length; i--) {\n                    var btn = this.buttons.pop();\n                    btn === null || btn === void 0 ? void 0 : btn.destroy();\n                    (_f = this.dropdown) === null || _f === void 0 ? void 0 : _f.options.remove(i + 1);\n                }\n            }\n            // Update current buttons\n            for (var i = btnLength - 1; i >= 0; i--) {\n                var diff = diffObjects(newButtonsOptions[i],\n                    this.buttonOptions[i]);\n                if (Object.keys(diff).length !== 0) {\n                    var rangeOptions = newButtonsOptions[i];\n                    this.buttons[i].destroy();\n                    dropdown === null || dropdown === void 0 ? void 0 : dropdown.options.remove(i + 1);\n                    this.createButton(rangeOptions, i, width, states);\n                    this.computeButtonRange(rangeOptions);\n                }\n            }\n            // Create missing buttons\n            if (newButtonsOptions.length > this.buttonOptions.length) {\n                for (var i = this.buttonOptions.length; i < newButtonsOptions.length; i++) {\n                    this.createButton(newButtonsOptions[i], i, width, states);\n                    this.computeButtonRange(newButtonsOptions[i]);\n                }\n            }\n            this.buttonOptions = (_g = this.options.buttons) !== null && _g !== void 0 ? _g : [];\n            if (RangeSelector_defined(this.options.selected) && this.buttons.length) {\n                this.clickButton(this.options.selected, false);\n            }\n        }\n    };\n    /**\n     * Align the button group horizontally and vertically.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#alignButtonGroup\n     * @param {number} xOffsetForExportButton\n     * @param {number} [width]\n     */\n    RangeSelector.prototype.alignButtonGroup = function (xOffsetForExportButton, width) {\n        var _a = this,\n            chart = _a.chart,\n            options = _a.options,\n            buttonGroup = _a.buttonGroup,\n            dropdown = _a.dropdown,\n            dropdownLabel = _a.dropdownLabel;\n        var buttonPosition = options.buttonPosition;\n        var plotLeft = chart.plotLeft - chart.spacing[3];\n        var translateX = buttonPosition.x - chart.spacing[3];\n        var dropdownTranslateX = chart.plotLeft;\n        if (buttonPosition.align === 'right') {\n            translateX += xOffsetForExportButton - plotLeft; // #13014\n            if (this.hasVisibleDropdown) {\n                dropdownTranslateX = chart.chartWidth +\n                    xOffsetForExportButton -\n                    this.maxButtonWidth() - 20;\n            }\n        }\n        else if (buttonPosition.align === 'center') {\n            translateX -= plotLeft / 2;\n            if (this.hasVisibleDropdown) {\n                dropdownTranslateX = chart.chartWidth / 2 -\n                    this.maxButtonWidth();\n            }\n        }\n        if (dropdown) {\n            RangeSelector_css(dropdown, {\n                left: dropdownTranslateX + 'px',\n                top: (buttonGroup === null || buttonGroup === void 0 ? void 0 : buttonGroup.translateY) + 'px'\n            });\n        }\n        dropdownLabel === null || dropdownLabel === void 0 ? void 0 : dropdownLabel.attr({\n            x: dropdownTranslateX\n        });\n        if (buttonGroup) {\n            // Align button group\n            buttonGroup.align({\n                y: buttonPosition.y,\n                width: RangeSelector_pick(width, this.initialButtonGroupWidth),\n                align: buttonPosition.align,\n                x: translateX\n            }, true, chart.spacingBox);\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.RangeSelector#positionButtons\n     */\n    RangeSelector.prototype.positionButtons = function () {\n        var _a = this,\n            buttons = _a.buttons,\n            chart = _a.chart,\n            options = _a.options,\n            zoomText = _a.zoomText;\n        var verb = chart.hasLoaded ? 'animate' : 'attr';\n        var buttonPosition = options.buttonPosition;\n        var plotLeft = chart.plotLeft;\n        var buttonLeft = plotLeft;\n        if (zoomText && zoomText.visibility !== 'hidden') {\n            // #8769, allow dynamically updating margins\n            zoomText[verb]({\n                x: RangeSelector_pick(plotLeft + buttonPosition.x, plotLeft)\n            });\n            // Button start position\n            buttonLeft += buttonPosition.x +\n                zoomText.getBBox().width + 5;\n        }\n        for (var i = 0, iEnd = this.buttonOptions.length; i < iEnd; ++i) {\n            if (buttons[i].visibility !== 'hidden') {\n                buttons[i][verb]({ x: buttonLeft });\n                // Increase the button position for the next button\n                buttonLeft += (buttons[i].width || 0) + options.buttonSpacing;\n            }\n            else {\n                buttons[i][verb]({ x: plotLeft });\n            }\n        }\n    };\n    /**\n     * Handle collision between the button group and the input group\n     *\n     * @private\n     * @function Highcharts.RangeSelector#handleCollision\n     *\n     * @param  {number} xOffsetForExportButton\n     *                  The X offset of the group required to make room for the\n     *                  exporting button\n     */\n    RangeSelector.prototype.handleCollision = function (xOffsetForExportButton) {\n        var _a = this,\n            chart = _a.chart,\n            buttonGroup = _a.buttonGroup,\n            inputGroup = _a.inputGroup,\n            initialButtonGroupWidth = _a.initialButtonGroupWidth;\n        var _b = this.options,\n            buttonPosition = _b.buttonPosition,\n            dropdown = _b.dropdown,\n            inputPosition = _b.inputPosition;\n        var moveInputsDown = function () {\n                if (inputGroup && buttonGroup) {\n                    inputGroup.attr({\n                        translateX: inputGroup.alignAttr.translateX + (chart.axisOffset[1] >= -xOffsetForExportButton ?\n                            0 :\n                            -xOffsetForExportButton),\n                        translateY: inputGroup.alignAttr.translateY +\n                            buttonGroup.getBBox().height + 10\n                    });\n            }\n        };\n        // Detect collision\n        if (inputGroup && buttonGroup) {\n            if (inputPosition.align === buttonPosition.align) {\n                moveInputsDown();\n                if (initialButtonGroupWidth >\n                    chart.plotWidth + xOffsetForExportButton - 20) {\n                    this.collapseButtons();\n                }\n                else {\n                    this.expandButtons();\n                }\n            }\n            else if (initialButtonGroupWidth -\n                xOffsetForExportButton +\n                inputGroup.getBBox().width >\n                chart.plotWidth) {\n                if (dropdown === 'responsive') {\n                    this.collapseButtons();\n                }\n                else {\n                    moveInputsDown();\n                }\n            }\n            else {\n                this.expandButtons();\n            }\n        }\n        else if (buttonGroup && dropdown === 'responsive') {\n            if (initialButtonGroupWidth > chart.plotWidth) {\n                this.collapseButtons();\n            }\n            else {\n                this.expandButtons();\n            }\n        }\n        // Forced states\n        if (buttonGroup) {\n            if (dropdown === 'always') {\n                this.collapseButtons();\n            }\n            if (dropdown === 'never') {\n                this.expandButtons();\n            }\n        }\n        this.alignButtonGroup(xOffsetForExportButton);\n    };\n    /**\n     * Collapse the buttons and show the select element.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#collapseButtons\n     * @param {number} xOffsetForExportButton\n     */\n    RangeSelector.prototype.collapseButtons = function () {\n        var _a = this,\n            buttons = _a.buttons,\n            zoomText = _a.zoomText;\n        if (this.isCollapsed === true) {\n            return;\n        }\n        this.isCollapsed = true;\n        zoomText.hide();\n        buttons.forEach(function (button) { return void button.hide(); });\n        this.showDropdown();\n    };\n    /**\n     * Show all the buttons and hide the select element.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#expandButtons\n     */\n    RangeSelector.prototype.expandButtons = function () {\n        var _a = this,\n            buttons = _a.buttons,\n            zoomText = _a.zoomText;\n        if (this.isCollapsed === false) {\n            return;\n        }\n        this.isCollapsed = false;\n        this.hideDropdown();\n        zoomText.show();\n        buttons.forEach(function (button) { return void button.show(); });\n        this.positionButtons();\n    };\n    /**\n     * Position the select element on top of the button.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#showDropdown\n     */\n    RangeSelector.prototype.showDropdown = function () {\n        var _a = this,\n            buttonGroup = _a.buttonGroup,\n            dropdownLabel = _a.dropdownLabel,\n            dropdown = _a.dropdown;\n        if (buttonGroup && dropdown) {\n            dropdownLabel.show();\n            RangeSelector_css(dropdown, { visibility: 'inherit' });\n            this.hasVisibleDropdown = true;\n        }\n    };\n    /**\n     * @private\n     * @function Highcharts.RangeSelector#hideDropdown\n     */\n    RangeSelector.prototype.hideDropdown = function () {\n        var dropdown = this.dropdown;\n        if (dropdown) {\n            this.dropdownLabel.hide();\n            RangeSelector_css(dropdown, {\n                visibility: 'hidden',\n                width: '1px',\n                height: '1px'\n            });\n            this.hasVisibleDropdown = false;\n        }\n    };\n    /**\n     * Extracts height of range selector\n     *\n     * @private\n     * @function Highcharts.RangeSelector#getHeight\n     * @return {number}\n     * Returns rangeSelector height\n     */\n    RangeSelector.prototype.getHeight = function () {\n        var rangeSelector = this,\n            options = rangeSelector.options,\n            rangeSelectorGroup = rangeSelector.group,\n            inputPosition = options.inputPosition,\n            buttonPosition = options.buttonPosition,\n            yPosition = options.y,\n            buttonPositionY = buttonPosition.y,\n            inputPositionY = inputPosition.y;\n        var rangeSelectorHeight = 0;\n        if (options.height) {\n            return options.height;\n        }\n        // Align the elements before we read the height in case we're switching\n        // between wrapped and non-wrapped layout\n        this.alignElements();\n        rangeSelectorHeight = rangeSelectorGroup ?\n            // 13px to keep back compatibility\n            (rangeSelectorGroup.getBBox(true).height) + 13 +\n                yPosition :\n            0;\n        var minPosition = Math.min(inputPositionY,\n            buttonPositionY);\n        if ((inputPositionY < 0 && buttonPositionY < 0) ||\n            (inputPositionY > 0 && buttonPositionY > 0)) {\n            rangeSelectorHeight += Math.abs(minPosition);\n        }\n        return rangeSelectorHeight;\n    };\n    /**\n     * Detect collision with title or subtitle\n     *\n     * @private\n     * @function Highcharts.RangeSelector#titleCollision\n     * @return {boolean}\n     * Returns collision status\n     */\n    RangeSelector.prototype.titleCollision = function (chart) {\n        return !(chart.options.title.text ||\n            chart.options.subtitle.text);\n    };\n    /**\n     * Update the range selector with new options\n     *\n     * @private\n     * @function Highcharts.RangeSelector#update\n     * @param {Highcharts.RangeSelectorOptions} options\n     */\n    RangeSelector.prototype.update = function (options, redraw) {\n        if (redraw === void 0) { redraw = true; }\n        var chart = this.chart;\n        RangeSelector_merge(true, this.options, options);\n        if (this.options.selected &&\n            this.options.selected >= this.options.buttons.length) {\n            this.options.selected = void 0;\n            chart.options.rangeSelector.selected = void 0;\n        }\n        if (RangeSelector_defined(options.enabled)) {\n            this.destroy();\n            return this.init(chart);\n        }\n        this.isDirty = !!options.buttons;\n        if (redraw) {\n            this.render();\n        }\n    };\n    /**\n     * Destroys allocated elements.\n     *\n     * @private\n     * @function Highcharts.RangeSelector#destroy\n     */\n    RangeSelector.prototype.destroy = function () {\n        var rSelector = this,\n            minInput = rSelector.minInput,\n            maxInput = rSelector.maxInput;\n        if (rSelector.eventsToUnbind) {\n            rSelector.eventsToUnbind.forEach(function (unbind) { return unbind(); });\n            rSelector.eventsToUnbind = void 0;\n        }\n        // Destroy elements in collections\n        RangeSelector_destroyObjectProperties(rSelector.buttons);\n        // Clear input element events\n        if (minInput) {\n            minInput.onfocus = minInput.onblur = minInput.onchange = null;\n        }\n        if (maxInput) {\n            maxInput.onfocus = maxInput.onblur = maxInput.onchange = null;\n        }\n        // Destroy HTML and SVG elements\n        RangeSelector_objectEach(rSelector, function (val, key) {\n            if (val && key !== 'chart') {\n                if (val instanceof (highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default())) {\n                    // SVGElement\n                    val.destroy();\n                }\n                else if (val instanceof window.HTMLElement) {\n                    // HTML element\n                    discardElement(val);\n                }\n                delete rSelector[key];\n            }\n            if (val !== RangeSelector.prototype[key]) {\n                rSelector[key] = null;\n            }\n        }, this);\n        this.buttons = [];\n    };\n    return RangeSelector;\n}());\nRangeSelector_extend(RangeSelector.prototype, {\n    /**\n     * The date formats to use when setting min, max and value on date inputs.\n     * @private\n     */\n    inputTypeFormats: {\n        'datetime-local': '%Y-%m-%dT%H:%M:%S',\n        'date': '%Y-%m-%d',\n        'time': '%H:%M:%S'\n    }\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var RangeSelector_RangeSelector = (RangeSelector);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Define the time span for the button\n *\n * @typedef {\"all\"|\"day\"|\"hour\"|\"millisecond\"|\"minute\"|\"month\"|\"second\"|\"week\"|\"year\"|\"ytd\"} Highcharts.RangeSelectorButtonTypeValue\n */\n/**\n * Callback function to react on button clicks.\n *\n * @callback Highcharts.RangeSelectorClickCallbackFunction\n *\n * @param {global.Event} e\n *        Event arguments.\n *\n * @param {boolean|undefined}\n *        Return false to cancel the default button event.\n */\n/**\n * Callback function to parse values entered in the input boxes and return a\n * valid JavaScript time as milliseconds since 1970.\n *\n * @callback Highcharts.RangeSelectorParseCallbackFunction\n *\n * @param {string} value\n *        Input value to parse.\n *\n * @return {number}\n *         Parsed JavaScript time value.\n */\n(''); // Keeps doclets above in JS file\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Chart\"],\"commonjs\":[\"highcharts\",\"Chart\"],\"commonjs2\":[\"highcharts\",\"Chart\"],\"root\":[\"Highcharts\",\"Chart\"]}\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_ = __webpack_require__(960);\nvar highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default = /*#__PURE__*/__webpack_require__.n(highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_);\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Templating\"],\"commonjs\":[\"highcharts\",\"Templating\"],\"commonjs2\":[\"highcharts\",\"Templating\"],\"root\":[\"Highcharts\",\"Templating\"]}\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_ = __webpack_require__(984);\nvar highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default = /*#__PURE__*/__webpack_require__.n(highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_);\n;// ./code/es5/es-modules/Core/Chart/StockChart.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar getOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getOptions;\n\n\n\n\nvar StockChart_setFixedRange = Utilities_StockUtilities.setFixedRange;\n\nvar StockChart_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, StockChart_clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, StockChart_crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, StockChart_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, StockChart_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, StockChart_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, StockChart_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, StockChart_isString = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isString, StockChart_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, StockChart_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, StockChart_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Get stock-specific default axis options.\n *\n * @private\n * @function getDefaultAxisOptions\n */\nfunction getDefaultAxisOptions(coll, options, defaultOptions) {\n    var _a,\n        _b,\n        _c,\n        _d;\n    if (coll === 'xAxis') {\n        return {\n            minPadding: 0,\n            maxPadding: 0,\n            overscroll: 0,\n            ordinal: true\n        };\n    }\n    if (coll === 'yAxis') {\n        return {\n            labels: {\n                y: -2\n            },\n            opposite: (_b = (_a = defaultOptions.opposite) !== null && _a !== void 0 ? _a : options.opposite) !== null && _b !== void 0 ? _b : true,\n            showLastLabel: !!(\n            // #6104, show last label by default for category axes\n            options.categories ||\n                options.type === 'category'),\n            title: {\n                text: ((_c = defaultOptions.title) === null || _c === void 0 ? void 0 : _c.text) !== 'Values' ?\n                    (_d = defaultOptions.title) === null || _d === void 0 ? void 0 : _d.text :\n                    null\n            }\n        };\n    }\n    return {};\n}\n/**\n * Get stock-specific forced axis options.\n *\n * @private\n * @function getForcedAxisOptions\n */\nfunction getForcedAxisOptions(type, chartOptions) {\n    if (type === 'xAxis') {\n        // Always disable startOnTick:true on the main axis when the navigator\n        // is enabled (#1090)\n        var navigatorEnabled = StockChart_pick(chartOptions.navigator && chartOptions.navigator.enabled,\n            Navigator_NavigatorDefaults.enabled,\n            true);\n        var axisOptions = {\n                type: 'datetime',\n                categories: void 0\n            };\n        if (navigatorEnabled) {\n            axisOptions.startOnTick = false;\n            axisOptions.endOnTick = false;\n        }\n        return axisOptions;\n    }\n    return {};\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * Stock-optimized chart. Use {@link Highcharts.Chart|Chart} for common charts.\n *\n * @requires modules/stock\n *\n * @class\n * @name Highcharts.StockChart\n * @extends Highcharts.Chart\n */\nvar StockChart = /** @class */ (function (_super) {\n    __extends(StockChart, _super);\n    function StockChart() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Initializes the chart. The constructor's arguments are passed on\n     * directly.\n     *\n     * @function Highcharts.StockChart#init\n     *\n     * @param {Highcharts.Options} userOptions\n     *        Custom options.\n     *\n     * @param {Function} [callback]\n     *        Function to run when the chart has loaded and all external\n     *        images are loaded.\n     *\n     *\n     * @emits Highcharts.StockChart#event:init\n     * @emits Highcharts.StockChart#event:afterInit\n     */\n    StockChart.prototype.init = function (userOptions, callback) {\n        var defaultOptions = getOptions(),\n            xAxisOptions = userOptions.xAxis,\n            yAxisOptions = userOptions.yAxis, \n            // Always disable startOnTick:true on the main axis when the\n            // navigator is enabled (#1090)\n            navigatorEnabled = StockChart_pick(userOptions.navigator && userOptions.navigator.enabled,\n            Navigator_NavigatorDefaults.enabled,\n            true);\n        // Avoid doing these twice\n        userOptions.xAxis = userOptions.yAxis = void 0;\n        var options = StockChart_merge({\n                chart: {\n                    panning: {\n                        enabled: true,\n                        type: 'x'\n                    },\n                    zooming: {\n                        pinchType: 'x',\n                        mouseWheel: {\n                            type: 'x'\n                        }\n                    }\n                },\n                navigator: {\n                    enabled: navigatorEnabled\n                },\n                scrollbar: {\n                    // #4988 - check if setOptions was called\n                    enabled: StockChart_pick(Scrollbar_ScrollbarDefaults.enabled,\n            true)\n                },\n                rangeSelector: {\n                    // #4988 - check if setOptions was called\n                    enabled: StockChart_pick(RangeSelector_RangeSelectorDefaults.rangeSelector.enabled,\n            true)\n                },\n                title: {\n                    text: null\n                },\n                tooltip: {\n                    split: StockChart_pick(defaultOptions.tooltip && defaultOptions.tooltip.split,\n            true),\n                    crosshairs: true\n                },\n                legend: {\n                    enabled: false\n                }\n            },\n            userOptions, // User's options\n            {\n                isStock: true // Internal flag\n            });\n        userOptions.xAxis = xAxisOptions;\n        userOptions.yAxis = yAxisOptions;\n        // Apply X axis options to both single and multi y axes\n        options.xAxis = StockChart_splat(userOptions.xAxis || {}).map(function (xAxisOptions) { return StockChart_merge(getDefaultAxisOptions('xAxis', xAxisOptions, defaultOptions.xAxis), \n        // #7690\n        xAxisOptions, // User options\n        getForcedAxisOptions('xAxis', userOptions)); });\n        // Apply Y axis options to both single and multi y axes\n        options.yAxis = StockChart_splat(userOptions.yAxis || {}).map(function (yAxisOptions) { return StockChart_merge(getDefaultAxisOptions('yAxis', yAxisOptions, defaultOptions.yAxis), \n        // #7690\n        yAxisOptions // User options\n        ); });\n        _super.prototype.init.call(this, options, callback);\n    };\n    /**\n     * Factory for creating different axis types.\n     * Extended to add stock defaults.\n     *\n     * @private\n     * @function Highcharts.StockChart#createAxis\n     * @param {string} coll\n     * An axis type.\n     * @param {Chart.CreateAxisOptionsObject} options\n     * The axis creation options.\n     */\n    StockChart.prototype.createAxis = function (coll, options) {\n        options.axis = StockChart_merge(getDefaultAxisOptions(coll, options.axis, getOptions()[coll]), options.axis, getForcedAxisOptions(coll, this.userOptions));\n        return _super.prototype.createAxis.call(this, coll, options);\n    };\n    return StockChart;\n}((highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default())));\nStockChart_addEvent((highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default()), 'update', function (e) {\n    var chart = this,\n        options = e.options;\n    // Use case: enabling scrollbar from a disabled state.\n    // Scrollbar needs to be initialized from a controller, Navigator in this\n    // case (#6615)\n    if ('scrollbar' in options && chart.navigator) {\n        StockChart_merge(true, chart.options.scrollbar, options.scrollbar);\n        chart.navigator.update({ enabled: !!chart.navigator.navigatorEnabled });\n        delete options.scrollbar;\n    }\n});\n/* *\n *\n *  Composition\n *\n * */\n(function (StockChart) {\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /** @private */\n    function compose(ChartClass, AxisClass, SeriesClass, SVGRendererClass) {\n        var seriesProto = SeriesClass.prototype;\n        if (!seriesProto.forceCropping) {\n            StockChart_addEvent(AxisClass, 'afterDrawCrosshair', onAxisAfterDrawCrosshair);\n            StockChart_addEvent(AxisClass, 'afterHideCrosshair', onAxisAfterHideCrosshair);\n            StockChart_addEvent(AxisClass, 'autoLabelAlign', onAxisAutoLabelAlign);\n            StockChart_addEvent(AxisClass, 'destroy', onAxisDestroy);\n            StockChart_addEvent(AxisClass, 'getPlotLinePath', onAxisGetPlotLinePath);\n            ChartClass.prototype.setFixedRange = StockChart_setFixedRange;\n            seriesProto.forceCropping = seriesForceCropping;\n            StockChart_addEvent(SeriesClass, 'setOptions', onSeriesSetOptions);\n            SVGRendererClass.prototype.crispPolyLine = svgRendererCrispPolyLine;\n        }\n    }\n    StockChart.compose = compose;\n    /**\n     * Extend crosshairs to also draw the label.\n     * @private\n     */\n    function onAxisAfterDrawCrosshair(event) {\n        var _a,\n            _b,\n            _c;\n        var axis = this;\n        // Check if the label has to be drawn\n        if (!(((_b = (_a = axis.crosshair) === null || _a === void 0 ? void 0 : _a.label) === null || _b === void 0 ? void 0 : _b.enabled) &&\n            axis.cross &&\n            StockChart_isNumber(axis.min) &&\n            StockChart_isNumber(axis.max))) {\n            return;\n        }\n        var chart = axis.chart,\n            log = axis.logarithmic,\n            options = axis.crosshair.label, // The label's options\n            horiz = axis.horiz, // Axis orientation\n            opposite = axis.opposite, // Axis position\n            left = axis.left, // Left position\n            top = axis.top, // Top position\n            width = axis.width,\n            tickInside = axis.options.tickPosition === 'inside',\n            snap = axis.crosshair.snap !== false,\n            e = event.e || ((_c = axis.cross) === null || _c === void 0 ? void 0 : _c.e),\n            point = event.point;\n        var crossLabel = axis.crossLabel, // The svgElement\n            posx,\n            posy,\n            formatOption = options.format,\n            formatFormat = '',\n            limit,\n            offset = 0, \n            // Use last available event (#5287)\n            min = axis.min,\n            max = axis.max;\n        if (log) {\n            min = log.lin2log(axis.min);\n            max = log.lin2log(axis.max);\n        }\n        var align = (horiz ? 'center' : opposite ?\n                (axis.labelAlign === 'right' ? 'right' : 'left') :\n                (axis.labelAlign === 'left' ? 'left' : 'center'));\n        // If the label does not exist yet, create it.\n        if (!crossLabel) {\n            crossLabel = axis.crossLabel = chart.renderer\n                .label('', 0, void 0, options.shape || 'callout')\n                .addClass('highcharts-crosshair-label highcharts-color-' + (point && point.series ?\n                point.series.colorIndex :\n                axis.series[0] && this.series[0].colorIndex))\n                .attr({\n                align: options.align || align,\n                padding: StockChart_pick(options.padding, 8),\n                r: StockChart_pick(options.borderRadius, 3),\n                zIndex: 2\n            })\n                .add(axis.labelGroup);\n            // Presentational\n            if (!chart.styledMode) {\n                crossLabel\n                    .attr({\n                    fill: options.backgroundColor ||\n                        ( // #14888\n                        point && point.series &&\n                            point.series.color) ||\n                        \"#666666\" /* Palette.neutralColor60 */,\n                    stroke: options.borderColor || '',\n                    'stroke-width': options.borderWidth || 0\n                })\n                    .css(StockChart_extend({\n                    color: \"#ffffff\" /* Palette.backgroundColor */,\n                    fontWeight: 'normal',\n                    fontSize: '0.7em',\n                    textAlign: 'center'\n                }, options.style || {}));\n            }\n        }\n        if (horiz) {\n            posx = snap ? (point.plotX || 0) + left : e.chartX;\n            posy = top + (opposite ? 0 : axis.height);\n        }\n        else {\n            posx = left + axis.offset + (opposite ? width : 0);\n            posy = snap ? (point.plotY || 0) + top : e.chartY;\n        }\n        if (!formatOption && !options.formatter) {\n            if (axis.dateTime) {\n                formatFormat = '%b %d, %Y';\n            }\n            formatOption =\n                '{value' + (formatFormat ? ':' + formatFormat : '') + '}';\n        }\n        // Show the label\n        var value = snap ?\n                (axis.isXAxis ? point.x : point.y) :\n                axis.toValue(horiz ? e.chartX : e.chartY);\n        // Crosshair should be rendered within Axis range (#7219) and the point\n        // of currentPriceIndicator should be inside the plot area (#14879).\n        var isInside = point && point.series ?\n                point.series.isPointInside(point) :\n                (StockChart_isNumber(value) && value > min && value < max);\n        var text = '';\n        if (formatOption) {\n            text = format(formatOption, { value: value }, chart);\n        }\n        else if (options.formatter && StockChart_isNumber(value)) {\n            text = options.formatter.call(axis, value);\n        }\n        crossLabel.attr({\n            text: text,\n            x: posx,\n            y: posy,\n            visibility: isInside ? 'inherit' : 'hidden'\n        });\n        var crossBox = crossLabel.getBBox();\n        // Now it is placed we can correct its position\n        if (StockChart_isNumber(crossLabel.x) && !horiz && !opposite) {\n            posx = crossLabel.x - (crossBox.width / 2);\n        }\n        if (StockChart_isNumber(crossLabel.y)) {\n            if (horiz) {\n                if ((tickInside && !opposite) || (!tickInside && opposite)) {\n                    posy = crossLabel.y - crossBox.height;\n                }\n            }\n            else {\n                posy = crossLabel.y - (crossBox.height / 2);\n            }\n        }\n        // Check the edges\n        if (horiz) {\n            limit = {\n                left: left,\n                right: left + axis.width\n            };\n        }\n        else {\n            limit = {\n                left: axis.labelAlign === 'left' ? left : 0,\n                right: axis.labelAlign === 'right' ?\n                    left + axis.width :\n                    chart.chartWidth\n            };\n        }\n        var translateX = crossLabel.translateX || 0;\n        // Left edge\n        if (translateX < limit.left) {\n            offset = limit.left - translateX;\n        }\n        // Right edge\n        if (translateX + crossBox.width >= limit.right) {\n            offset = -(translateX + crossBox.width - limit.right);\n        }\n        // Show the crosslabel\n        crossLabel.attr({\n            x: Math.max(0, posx + offset),\n            y: Math.max(0, posy),\n            // First set x and y, then anchorX and anchorY, when box is actually\n            // calculated, #5702\n            anchorX: horiz ?\n                posx :\n                (axis.opposite ? 0 : chart.chartWidth),\n            anchorY: horiz ?\n                (axis.opposite ? chart.chartHeight : 0) :\n                posy + crossBox.height / 2\n        });\n    }\n    /**\n     * Wrapper to hide the label.\n     * @private\n     */\n    function onAxisAfterHideCrosshair() {\n        var axis = this;\n        if (axis.crossLabel) {\n            axis.crossLabel = axis.crossLabel.hide();\n        }\n    }\n    /**\n     * Override the automatic label alignment so that the first Y axis' labels\n     * are drawn on top of the grid line, and subsequent axes are drawn outside.\n     * @private\n     */\n    function onAxisAutoLabelAlign(e) {\n        var axis = this,\n            chart = axis.chart,\n            options = axis.options,\n            panes = chart._labelPanes = chart._labelPanes || {},\n            labelOptions = options.labels;\n        if (chart.options.isStock && axis.coll === 'yAxis') {\n            var key = options.top + ',' + options.height;\n            // Do it only for the first Y axis of each pane\n            if (!panes[key] && labelOptions.enabled) {\n                if (labelOptions.distance === 15 && // Default\n                    axis.side === 1) {\n                    labelOptions.distance = 0;\n                }\n                if (typeof labelOptions.align === 'undefined') {\n                    labelOptions.align = 'right';\n                }\n                panes[key] = axis;\n                e.align = 'right';\n                e.preventDefault();\n            }\n        }\n    }\n    /**\n     * Clear axis from label panes. (#6071)\n     * @private\n     */\n    function onAxisDestroy() {\n        var axis = this, chart = axis.chart, key = (axis.options &&\n                (axis.options.top + ',' + axis.options.height));\n        if (key && chart._labelPanes && chart._labelPanes[key] === axis) {\n            delete chart._labelPanes[key];\n        }\n    }\n    /**\n     * Override getPlotLinePath to allow for multipane charts.\n     * @private\n     */\n    function onAxisGetPlotLinePath(e) {\n        var axis = this,\n            series = (axis.isLinked && !axis.series && axis.linkedParent ?\n                axis.linkedParent.series :\n                axis.series),\n            chart = axis.chart,\n            renderer = chart.renderer,\n            axisLeft = axis.left,\n            axisTop = axis.top,\n            result = [],\n            translatedValue = e.translatedValue,\n            value = e.value,\n            force = e.force, \n            /**\n             * Return the other axis based on either the axis option or on\n             * related series.\n             * @private\n             */\n            getAxis = function (coll) {\n                var otherColl = coll === 'xAxis' ? 'yAxis' : 'xAxis',\n            opt = axis.options[otherColl];\n            // Other axis indexed by number\n            if (StockChart_isNumber(opt)) {\n                return [chart[otherColl][opt]];\n            }\n            // Other axis indexed by id (like navigator)\n            if (StockChart_isString(opt)) {\n                return [chart.get(opt)];\n            }\n            // Auto detect based on existing series\n            return series.map(function (s) { return s[otherColl]; });\n        };\n        var x1,\n            y1,\n            x2,\n            y2,\n            axes = [], // #3416 need a default array\n            axes2,\n            uniqueAxes,\n            transVal;\n        if ( // For stock chart, by default render paths across the panes\n        // except the case when `acrossPanes` is disabled by user (#6644)\n        (chart.options.isStock && e.acrossPanes !== false) &&\n            // Ignore in case of colorAxis or zAxis. #3360, #3524, #6720\n            axis.coll === 'xAxis' || axis.coll === 'yAxis') {\n            e.preventDefault();\n            // Get the related axes based on series\n            axes = getAxis(axis.coll);\n            // Get the related axes based options.*Axis setting #2810\n            axes2 = (axis.isXAxis ? chart.yAxis : chart.xAxis);\n            for (var _i = 0, axes2_1 = axes2; _i < axes2_1.length; _i++) {\n                var A = axes2_1[_i];\n                if (!A.options.isInternal) {\n                    var a = (A.isXAxis ? 'yAxis' : 'xAxis'),\n                        relatedAxis = (StockChart_defined(A.options[a]) ?\n                            chart[a][A.options[a]] :\n                            chart[a][0]);\n                    if (axis === relatedAxis) {\n                        axes.push(A);\n                    }\n                }\n            }\n            // Remove duplicates in the axes array. If there are no axes in the\n            // axes array, we are adding an axis without data, so we need to\n            // populate this with grid lines (#2796).\n            uniqueAxes = axes.length ?\n                [] :\n                [axis.isXAxis ? chart.yAxis[0] : chart.xAxis[0]]; // #3742\n            var _loop_1 = function (axis2) {\n                    if (uniqueAxes.indexOf(axis2) === -1 &&\n                        // Do not draw on axis which overlap completely. #5424\n                        !StockChart_find(uniqueAxes,\n                function (unique) { return (unique.pos === axis2.pos &&\n                            unique.len === axis2.len); })) {\n                        uniqueAxes.push(axis2);\n                }\n            };\n            for (var _a = 0, axes_1 = axes; _a < axes_1.length; _a++) {\n                var axis2 = axes_1[_a];\n                _loop_1(axis2);\n            }\n            transVal = StockChart_pick(translatedValue, axis.translate(value || 0, void 0, void 0, e.old));\n            if (StockChart_isNumber(transVal)) {\n                if (axis.horiz) {\n                    for (var _b = 0, uniqueAxes_1 = uniqueAxes; _b < uniqueAxes_1.length; _b++) {\n                        var axis2 = uniqueAxes_1[_b];\n                        var skip = void 0;\n                        y1 = axis2.pos;\n                        y2 = y1 + axis2.len;\n                        x1 = x2 = Math.round(transVal + axis.transB);\n                        // Outside plot area\n                        if (force !== 'pass' &&\n                            (x1 < axisLeft || x1 > axisLeft + axis.width)) {\n                            if (force) {\n                                x1 = x2 = StockChart_clamp(x1, axisLeft, axisLeft + axis.width);\n                            }\n                            else {\n                                skip = true;\n                            }\n                        }\n                        if (!skip) {\n                            result.push(['M', x1, y1], ['L', x2, y2]);\n                        }\n                    }\n                }\n                else {\n                    for (var _c = 0, uniqueAxes_2 = uniqueAxes; _c < uniqueAxes_2.length; _c++) {\n                        var axis2 = uniqueAxes_2[_c];\n                        var skip = void 0;\n                        x1 = axis2.pos;\n                        x2 = x1 + axis2.len;\n                        y1 = y2 = Math.round(axisTop + axis.height - transVal);\n                        // Outside plot area\n                        if (force !== 'pass' &&\n                            (y1 < axisTop || y1 > axisTop + axis.height)) {\n                            if (force) {\n                                y1 = y2 = StockChart_clamp(y1, axisTop, axisTop + axis.height);\n                            }\n                            else {\n                                skip = true;\n                            }\n                        }\n                        if (!skip) {\n                            result.push(['M', x1, y1], ['L', x2, y2]);\n                        }\n                    }\n                }\n            }\n            e.path = result.length > 0 ?\n                renderer.crispPolyLine(result, e.lineWidth || 1) :\n                // #3557 getPlotLinePath in regular Highcharts also returns null\n                void 0;\n        }\n    }\n    /**\n     * Handle som Stock-specific series defaults, override the plotOptions\n     * before series options are handled.\n     * @private\n     */\n    function onSeriesSetOptions(e) {\n        var series = this;\n        if (series.chart.options.isStock) {\n            var overrides = void 0;\n            if (series.is('column') || series.is('columnrange')) {\n                overrides = {\n                    borderWidth: 0,\n                    shadow: false\n                };\n            }\n            else if (!series.is('scatter') && !series.is('sma')) {\n                overrides = {\n                    marker: {\n                        enabled: false,\n                        radius: 2\n                    }\n                };\n            }\n            if (overrides) {\n                e.plotOptions[series.type] = StockChart_merge(e.plotOptions[series.type], overrides);\n            }\n        }\n    }\n    /**\n     * Based on the data grouping options decides whether\n     * the data should be cropped while processing.\n     *\n     * @ignore\n     * @function Highcharts.Series#forceCropping\n     */\n    function seriesForceCropping() {\n        var series = this,\n            chart = series.chart,\n            options = series.options,\n            dataGroupingOptions = options.dataGrouping,\n            groupingEnabled = (series.allowDG !== false &&\n                dataGroupingOptions &&\n                StockChart_pick(dataGroupingOptions.enabled,\n            chart.options.isStock));\n        return groupingEnabled;\n    }\n    /* eslint-disable jsdoc/check-param-names */\n    /**\n     * Factory function for creating new stock charts. Creates a new\n     * {@link Highcharts.StockChart|StockChart} object with different default\n     * options than the basic Chart.\n     *\n     * @example\n     * let chart = Highcharts.stockChart('container', {\n     *     series: [{\n     *         data: [1, 2, 3, 4, 5, 6, 7, 8, 9],\n     *         pointInterval: 24 * 60 * 60 * 1000\n     *     }]\n     * });\n     *\n     * @function Highcharts.stockChart\n     *\n     * @param {string|Highcharts.HTMLDOMElement} [renderTo]\n     *        The DOM element to render to, or its id.\n     *\n     * @param {Highcharts.Options} options\n     *        The chart options structure as described in the\n     *        [options reference](https://api.highcharts.com/highstock).\n     *\n     * @param {Highcharts.ChartCallbackFunction} [callback]\n     *        A function to execute when the chart object is finished\n     *        rendering and all external image files (`chart.backgroundImage`,\n     *        `chart.plotBackgroundImage` etc) are loaded. Defining a\n     *        [chart.events.load](https://api.highcharts.com/highstock/chart.events.load)\n     *        handler is equivalent.\n     *\n     * @return {Highcharts.StockChart}\n     *         The chart object.\n     */\n    function stockChart(a, b, c) {\n        return new StockChart(a, b, c);\n    }\n    StockChart.stockChart = stockChart;\n    /* eslint-enable jsdoc/check-param-names */\n    /**\n     * Function to crisp a line with multiple segments\n     *\n     * @private\n     * @function Highcharts.SVGRenderer#crispPolyLine\n     */\n    function svgRendererCrispPolyLine(points, width) {\n        // Points format: [['M', 0, 0], ['L', 100, 0]]\n        // normalize to a crisp line\n        for (var i = 0; i < points.length; i = i + 2) {\n            var start = points[i],\n                end = points[i + 1];\n            if (StockChart_defined(start[1]) && start[1] === end[1]) {\n                start[1] = end[1] = StockChart_crisp(start[1], width);\n            }\n            if (StockChart_defined(start[2]) && start[2] === end[2]) {\n                start[2] = end[2] = StockChart_crisp(start[2], width);\n            }\n        }\n        return points;\n    }\n})(StockChart || (StockChart = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Chart_StockChart = (StockChart);\n\n;// ./code/es5/es-modules/Series/HLC/HLCPoint.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar HLCPoint_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar ColumnPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column.prototype.pointClass;\n/* *\n *\n *  Class\n *\n * */\nvar HLCPoint = /** @class */ (function (_super) {\n    HLCPoint_extends(HLCPoint, _super);\n    function HLCPoint() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return HLCPoint;\n}(ColumnPoint));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var HLC_HLCPoint = (HLCPoint);\n\n;// ./code/es5/es-modules/Series/HLC/HLCSeriesDefaults.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * An HLC chart is a style of financial chart used to describe price\n * movements over time. It displays high, low and close values per\n * data point.\n *\n * @sample stock/demo/hlc/\n *         HLC chart\n *\n * @extends      plotOptions.column\n * @excluding    borderColor, borderRadius, borderWidth, crisp, stacking,\n *               stack\n * @product      highstock\n * @optionparent plotOptions.hlc\n */\nvar HLCSeriesDefaults = {\n    /**\n     * The approximate pixel width of each group. If for example a series\n     * with 30 points is displayed over a 600 pixel wide plot area, no\n     * grouping is performed. If however the series contains so many points\n     * that the spacing is less than the groupPixelWidth, Highcharts will\n     * try to group it into appropriate groups so that each is more or less\n     * two pixels wide. Defaults to `5`.\n     *\n     * @type      {number}\n     * @default   5\n     * @product   highstock\n     * @apioption plotOptions.hlc.dataGrouping.groupPixelWidth\n     */\n    /**\n     * @type      {Highcharts.DataGroupingApproximationValue|Function}\n     * @default   hlc\n     * @product   highstock\n     * @apioption plotOptions.hlc.dataGrouping.approximation\n     */\n    /**\n     * @default   close\n     * @apioption plotOptions.hlc.colorKey\n     */\n    /**\n     * The pixel width of the line/border. Defaults to `1`.\n     *\n     * @sample {highstock} stock/plotoptions/hlc-linewidth/\n     *         A greater line width\n     *\n     * @type    {number}\n     * @default 1\n     * @product highstock\n     *\n     * @public\n     */\n    lineWidth: 1,\n    tooltip: {\n        pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> ' +\n            '<b> {series.name}</b><br/>' +\n            'High: {point.high}<br/>' +\n            'Low: {point.low}<br/>' +\n            'Close: {point.close}<br/>'\n    },\n    /**\n     * @type {number|null}\n     */\n    threshold: null,\n    states: {\n        /**\n         * @extends plotOptions.column.states.hover\n         * @product highstock\n         */\n        hover: {\n            /**\n             * The pixel width of the line representing the HLC point.\n             *\n             * @type    {number}\n             * @default 3\n             * @product highstock\n             */\n            lineWidth: 3\n        }\n    },\n    /**\n     * Determines which one of  `high`, `low`, `close` values should\n     * be represented as `point.y`, which is later used to set dataLabel\n     * position and [compare](#plotOptions.series.compare).\n     *\n     * @sample {highstock} stock/plotoptions/hlc-pointvalkey/\n     *         Possible values\n     *\n     * @declare    Highcharts.OptionsHLCPointValKeyValue\n     * @type       {string}\n     * @default    close\n     * @validvalue [\"high\", \"low\", \"close\"]\n     * @product    highstock\n     * @apioption  plotOptions.hlc.pointValKey\n     */\n    /**\n     * @default   close\n     * @apioption plotOptions.hlc.colorKey\n     */\n    stickyTracking: true\n};\n/**\n * A `hlc` series. If the [type](#series.hlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.hlc\n * @excluding dataParser, dataURL\n * @product   highstock\n * @apioption series.hlc\n */\n/**\n * An array of data points for the series. For the `hlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 4 or 3 values. In this case, the values correspond\n *    to `x,high,low,close`. If the first value is a string, it is applied\n *    as the name of the point, and the `x` value is inferred. The `x` value can\n *    also be omitted, in which case the inner arrays should be of length of 3\\.\n *    Then the `x` value is automatically calculated, either starting at 0 and\n *    incremented by 1, or from `pointStart` and `pointInterval` given in the\n *    series options.\n *    ```js\n *    data: [\n *        [0, 5, 6, 7],\n *        [1, 4, 8, 2],\n *        [2, 3, 4, 10]\n *    ]\n *    ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n *    few settings, see the complete options set below. If the total number of\n *    data points exceeds the series'\n *    [turboThreshold](#series.hlc.turboThreshold), this option is not\n *    available.\n *    ```js\n *    data: [{\n *        x: 1,\n *        high: 4,\n *        low: 5,\n *        close: 2,\n *        name: \"Point2\",\n *        color: \"#00FF00\"\n *    }, {\n *        x: 1,\n *        high: 3,\n *        low: 6,\n *        close: 7,\n *        name: \"Point1\",\n *        color: \"#FF00FF\"\n *    }]\n *    ```\n *\n * @type      {Array<Array<(number|string),number,number>|Array<(number|string),number,number,number>|*>}\n * @extends   series.arearange.data\n * @excluding y, marker\n * @product   highstock\n * @apioption series.hlc.data\n */\n/**\n * The closing value of each data point.\n *\n * @type      {number}\n * @product   highstock\n * @apioption series.hlc.data.close\n */\n(''); // Keeps doclets above in JS file\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var HLC_HLCSeriesDefaults = (HLCSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/HLC/HLCSeries.js\n/* *\n *\n *  (c) 2010-2024 Pawel Lysy\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar HLCSeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar ColumnSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column;\n\nvar HLCSeries_crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, HLCSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, HLCSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * The hlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.hlc\n *\n * @augments Highcharts.Series\n */\nvar HLCSeries = /** @class */ (function (_super) {\n    HLCSeries_extends(HLCSeries, _super);\n    function HLCSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Extend the path if close is not between high and low.\n     *\n     * @param {SVGPath} path the path array of the point\n     * @param {number} halfStrokeWidth\n     * @param {number} value value of the point to which the stem should be extended\n     */\n    HLCSeries.prototype.extendStem = function (path, halfStrokeWidth, value) {\n        var start = path[0];\n        var end = path[1];\n        // We don't need to worry about crisp - close value\n        // is already crisped and halfStrokeWidth should remove it.\n        if (typeof start[2] === 'number') {\n            start[2] = Math.max(value + halfStrokeWidth, start[2]);\n        }\n        if (typeof end[2] === 'number') {\n            end[2] = Math.min(value - halfStrokeWidth, end[2]);\n        }\n    };\n    /**\n     * Function to create SVGPath of the point based on the\n     * plot positions of this point.\n     * @private\n     */\n    HLCSeries.prototype.getPointPath = function (point, graphic) {\n        // Crisp vector coordinates\n        var strokeWidth = graphic.strokeWidth(),\n            series = point.series, \n            // #2596:\n            crispX = HLCSeries_crisp(point.plotX || 0,\n            strokeWidth),\n            halfWidth = Math.round(point.shapeArgs.width / 2);\n        // The vertical stem\n        var path = [\n                ['M',\n            crispX,\n            Math.round(point.yBottom)],\n                ['L',\n            crispX,\n            Math.round(point.plotHigh)]\n            ];\n        // Close\n        if (point.close !== null) {\n            var plotClose = HLCSeries_crisp(point.plotClose,\n                strokeWidth);\n            path.push(['M', crispX, plotClose], ['L', crispX + halfWidth, plotClose]);\n            series.extendStem(path, strokeWidth / 2, plotClose);\n        }\n        return path;\n    };\n    /**\n     * Draw single point\n     * @private\n     */\n    HLCSeries.prototype.drawSinglePoint = function (point) {\n        var series = point.series,\n            chart = series.chart;\n        var path,\n            graphic = point.graphic;\n        if (typeof point.plotY !== 'undefined') {\n            // Create and/or update the graphic\n            if (!graphic) {\n                point.graphic = graphic = chart.renderer.path()\n                    .add(series.group);\n            }\n            if (!chart.styledMode) {\n                graphic.attr(series.pointAttribs(point, (point.selected && 'select'))); // #3897\n            }\n            // Crisp vector coordinates\n            path = series.getPointPath(point, graphic);\n            graphic[!graphic ? 'attr' : 'animate']({ d: path })\n                .addClass(point.getClassName(), true);\n        }\n    };\n    /**\n     * Draw the data points\n     * @private\n     */\n    HLCSeries.prototype.drawPoints = function () {\n        this.points.forEach(this.drawSinglePoint);\n    };\n    /**\n     * @private\n     * @function Highcharts.seriesTypes.hlc#init\n     */\n    HLCSeries.prototype.init = function () {\n        _super.prototype.init.apply(this, arguments);\n        this.options.stacking = void 0; // #8817\n    };\n    /**\n     * Postprocess mapping between options and SVG attributes\n     * @private\n     */\n    HLCSeries.prototype.pointAttribs = function (point, state) {\n        var attribs = _super.prototype.pointAttribs.call(this,\n            point,\n            state);\n        delete attribs.fill;\n        return attribs;\n    };\n    HLCSeries.prototype.toYData = function (point) {\n        // Return a plain array for speedy calculation\n        return [point.high, point.low, point.close];\n    };\n    /**\n     * Translate data points from raw values x and y to plotX and plotY\n     *\n     * @private\n     * @function Highcharts.seriesTypes.hlc#translate\n     */\n    HLCSeries.prototype.translate = function () {\n        var series = this,\n            yAxis = series.yAxis,\n            names = (this.pointArrayMap && this.pointArrayMap.slice()) || [],\n            translated = names.map(function (name) {\n                return \"plot\".concat(name.charAt(0).toUpperCase() + name.slice(1));\n        });\n        translated.push('yBottom');\n        names.push('low');\n        _super.prototype.translate.apply(series);\n        // Do the translation\n        series.points.forEach(function (point) {\n            names.forEach(function (name, i) {\n                var value = point[name];\n                if (value !== null) {\n                    if (series.dataModify) {\n                        value = series.dataModify.modifyValue(value);\n                    }\n                    point[translated[i]] =\n                        yAxis.toPixels(value, true);\n                }\n            });\n            // Align the tooltip to the high value to avoid covering the\n            // point\n            point.tooltipPos[1] =\n                point.plotHigh + yAxis.pos - series.chart.plotTop;\n        });\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    HLCSeries.defaultOptions = HLCSeries_merge(ColumnSeries.defaultOptions, HLC_HLCSeriesDefaults);\n    return HLCSeries;\n}(ColumnSeries));\nHLCSeries_extend(HLCSeries.prototype, {\n    pointClass: HLC_HLCPoint,\n    animate: null, // Disable animation\n    directTouch: false,\n    keysAffectYAxis: ['low', 'high'],\n    pointArrayMap: ['high', 'low', 'close'],\n    pointAttrToOptions: {\n        stroke: 'color',\n        'stroke-width': 'lineWidth'\n    },\n    pointValKey: 'close'\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('hlc', HLCSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var HLC_HLCSeries = ((/* unused pure expression or super */ null && (HLCSeries)));\n\n;// ./code/es5/es-modules/Series/OHLC/OHLCPoint.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar OHLCPoint_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar OHLCPoint_HLCSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.hlc;\n/* *\n *\n *  Class\n *\n * */\nvar OHLCPoint = /** @class */ (function (_super) {\n    OHLCPoint_extends(OHLCPoint, _super);\n    function OHLCPoint() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Extend the parent method by adding up or down to the class name.\n     * @private\n     * @function Highcharts.seriesTypes.ohlc#getClassName\n     */\n    OHLCPoint.prototype.getClassName = function () {\n        return _super.prototype.getClassName.call(this) +\n            (this.open < this.close ?\n                ' highcharts-point-up' :\n                ' highcharts-point-down');\n    };\n    /**\n     * Save upColor as point color (#14826).\n     * @private\n     * @function Highcharts.seriesTypes.ohlc#resolveUpColor\n     */\n    OHLCPoint.prototype.resolveUpColor = function () {\n        if (this.open < this.close &&\n            !this.options.color &&\n            this.series.options.upColor) {\n            this.color = this.series.options.upColor;\n        }\n    };\n    /**\n     * Extend the parent method by saving upColor.\n     * @private\n     * @function Highcharts.seriesTypes.ohlc#resolveColor\n     */\n    OHLCPoint.prototype.resolveColor = function () {\n        _super.prototype.resolveColor.call(this);\n        if (!this.series.is('heikinashi')) {\n            this.resolveUpColor();\n        }\n    };\n    /**\n     * Extend the parent method by saving upColor.\n     * @private\n     * @function Highcharts.seriesTypes.ohlc#getZone\n     *\n     * @return {Highcharts.SeriesZonesOptionsObject}\n     *         The zone item.\n     */\n    OHLCPoint.prototype.getZone = function () {\n        var zone = _super.prototype.getZone.call(this);\n        this.resolveUpColor();\n        return zone;\n    };\n    /**\n     * Extend the parent method by resolving up/down colors (#15849)\n     * @private\n     **/\n    OHLCPoint.prototype.applyOptions = function () {\n        _super.prototype.applyOptions.apply(this, arguments);\n        if (this.resolveColor) {\n            this.resolveColor();\n        }\n        return this;\n    };\n    return OHLCPoint;\n}(OHLCPoint_HLCSeries.prototype.pointClass));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var OHLC_OHLCPoint = (OHLCPoint);\n\n;// ./code/es5/es-modules/Series/OHLC/OHLCSeriesDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * An OHLC chart is a style of financial chart used to describe price\n * movements over time. It displays open, high, low and close values per\n * data point.\n *\n * @sample stock/demo/ohlc\n *         OHLC chart\n *\n * @extends      plotOptions.hlc\n * @product      highstock\n * @optionparent plotOptions.ohlc\n */\nvar OHLCSeriesDefaults = {\n    /**\n     * @type      {Highcharts.DataGroupingApproximationValue|Function}\n     * @default   ohlc\n     * @product   highstock\n     * @apioption plotOptions.ohlc.dataGrouping.approximation\n     */\n    /**\n     * Determines which one of  `open`, `high`, `low`, `close` values should\n     * be represented as `point.y`, which is later used to set dataLabel\n     * position and [compare](#plotOptions.series.compare).\n     *\n     * @declare    Highcharts.OptionsPointValKeyValue\n     * @default    close\n     * @validvalue [\"open\", \"high\", \"low\", \"close\"]\n     * @product    highstock\n     * @apioption  plotOptions.ohlc.pointValKey\n     */\n    /**\n     * Line color for up points.\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @product   highstock\n     * @apioption plotOptions.ohlc.upColor\n     */\n    tooltip: {\n        pointFormat: '<span style=\"color:{point.color}\">\\u25CF</span> ' +\n            '<b> {series.name}</b><br/>' +\n            'Open: {point.open}<br/>' +\n            'High: {point.high}<br/>' +\n            'Low: {point.low}<br/>' +\n            'Close: {point.close}<br/>'\n    }\n};\n/**\n * The parameter allows setting line series type and use OHLC indicators.\n * Data in OHLC format is required.\n *\n * @sample {highstock} stock/indicators/use-ohlc-data\n *         Use OHLC data format to plot line chart\n *\n * @type      {boolean}\n * @product   highstock\n * @apioption plotOptions.line.useOhlcData\n */\n/**\n * A `ohlc` series. If the [type](#series.ohlc.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.ohlc\n * @excluding dataParser, dataURL\n * @product   highstock\n * @apioption series.ohlc\n */\n/**\n * An array of data points for the series. For the `ohlc` series type,\n * points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n *    to `x,open,high,low,close`. If the first value is a string, it is applied\n *    as the name of the point, and the `x` value is inferred. The `x` value can\n *    also be omitted, in which case the inner arrays should be of length 4\\.\n *    Then the `x` value is automatically calculated, either starting at 0 and\n *    incremented by 1, or from `pointStart` and `pointInterval` given in the\n *    series options.\n *    ```js\n *    data: [\n *        [0, 6, 5, 6, 7],\n *        [1, 9, 4, 8, 2],\n *        [2, 6, 3, 4, 10]\n *    ]\n *    ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n *    few settings, see the complete options set below. If the total number of\n *    data points exceeds the series'\n *    [turboThreshold](#series.ohlc.turboThreshold), this option is not\n *    available.\n *    ```js\n *    data: [{\n *        x: 1,\n *        open: 3,\n *        high: 4,\n *        low: 5,\n *        close: 2,\n *        name: \"Point2\",\n *        color: \"#00FF00\"\n *    }, {\n *        x: 1,\n *        open: 4,\n *        high: 3,\n *        low: 6,\n *        close: 7,\n *        name: \"Point1\",\n *        color: \"#FF00FF\"\n *    }]\n *    ```\n *\n * @type      {Array<Array<(number|string),number,number,number>|Array<(number|string),number,number,number,number>|*>}\n * @extends   series.arearange.data\n * @excluding y, marker\n * @product   highstock\n * @apioption series.ohlc.data\n */\n/**\n * The closing value of each data point.\n *\n * @type      {number}\n * @product   highstock\n * @apioption series.ohlc.data.close\n */\n/**\n * The opening value of each data point.\n *\n * @type      {number}\n * @product   highstock\n * @apioption series.ohlc.data.open\n */\n''; // Adds doclets above to transpiled\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var OHLC_OHLCSeriesDefaults = (OHLCSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/OHLC/OHLCSeries.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar OHLCSeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar OHLCSeries_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\n\n\nvar OHLCSeries_HLCSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.hlc;\n\nvar OHLCSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, OHLCSeries_crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, OHLCSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, OHLCSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, OHLCSeries_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction onSeriesAfterSetOptions(e) {\n    var options = e.options,\n        dataGrouping = options.dataGrouping;\n    if (dataGrouping &&\n        options.useOhlcData &&\n        options.id !== 'highcharts-navigator-series') {\n        dataGrouping.approximation = 'ohlc';\n    }\n}\n/**\n * Add useOhlcData option\n * @private\n */\nfunction onSeriesInit(eventOptions) {\n    // eslint-disable-next-line no-invalid-this\n    var series = this,\n        options = eventOptions.options;\n    if (options.useOhlcData &&\n        options.id !== 'highcharts-navigator-series') {\n        OHLCSeries_extend(series, {\n            pointValKey: OHLCSeries.prototype.pointValKey,\n            // Keys: ohlcProto.keys, // @todo potentially nonsense\n            pointArrayMap: OHLCSeries.prototype.pointArrayMap,\n            toYData: OHLCSeries.prototype.toYData\n        });\n    }\n}\n/* *\n *\n *  Class\n *\n * */\n/**\n * The ohlc series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.ohlc\n *\n * @augments Highcharts.Series\n */\nvar OHLCSeries = /** @class */ (function (_super) {\n    OHLCSeries_extends(OHLCSeries, _super);\n    function OHLCSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    OHLCSeries.compose = function (SeriesClass) {\n        var _args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            _args[_i - 1] = arguments[_i];\n        }\n        if (OHLCSeries_pushUnique(OHLCSeries_composed, 'OHLCSeries')) {\n            OHLCSeries_addEvent(SeriesClass, 'afterSetOptions', onSeriesAfterSetOptions);\n            OHLCSeries_addEvent(SeriesClass, 'init', onSeriesInit);\n        }\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    OHLCSeries.prototype.getPointPath = function (point, graphic) {\n        var path = _super.prototype.getPointPath.call(this,\n            point,\n            graphic),\n            strokeWidth = graphic.strokeWidth(),\n            crispX = OHLCSeries_crisp(point.plotX || 0,\n            strokeWidth),\n            halfWidth = Math.round(point.shapeArgs.width / 2);\n        if (point.open !== null) {\n            var plotOpen = OHLCSeries_crisp(point.plotOpen,\n                strokeWidth);\n            path.push(['M', crispX, plotOpen], ['L', crispX - halfWidth, plotOpen]);\n            _super.prototype.extendStem.call(this, path, strokeWidth / 2, plotOpen);\n        }\n        return path;\n    };\n    /**\n     * Postprocess mapping between options and SVG attributes\n     * @private\n     */\n    OHLCSeries.prototype.pointAttribs = function (point, state) {\n        var attribs = _super.prototype.pointAttribs.call(this,\n            point,\n            state),\n            options = this.options;\n        delete attribs.fill;\n        if (!point.options.color &&\n            options.upColor &&\n            point.open < point.close) {\n            attribs.stroke = options.upColor;\n        }\n        return attribs;\n    };\n    OHLCSeries.prototype.toYData = function (point) {\n        // Return a plain array for speedy calculation\n        return [point.open, point.high, point.low, point.close];\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    OHLCSeries.defaultOptions = OHLCSeries_merge(OHLCSeries_HLCSeries.defaultOptions, OHLC_OHLCSeriesDefaults);\n    return OHLCSeries;\n}(OHLCSeries_HLCSeries));\nOHLCSeries_extend(OHLCSeries.prototype, {\n    pointClass: OHLC_OHLCPoint,\n    pointArrayMap: ['open', 'high', 'low', 'close']\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('ohlc', OHLCSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var OHLC_OHLCSeries = (OHLCSeries);\n\n;// ./code/es5/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * A candlestick chart is a style of financial chart used to describe\n * price movements over time.\n *\n * @sample stock/demo/candlestick/\n *         Candlestick chart\n *\n * @extends      plotOptions.ohlc\n * @excluding    borderColor,borderRadius,borderWidth\n * @product      highstock\n * @optionparent plotOptions.candlestick\n */\nvar CandlestickSeriesDefaults = {\n    /**\n     * The specific line color for up candle sticks. The default is to\n     * inherit the general `lineColor` setting.\n     *\n     * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n     *         Candlestick line colors\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @since     1.3.6\n     * @product   highstock\n     * @apioption plotOptions.candlestick.upLineColor\n     */\n    states: {\n        /**\n         * @extends plotOptions.column.states.hover\n         * @product highstock\n         */\n        hover: {\n            /**\n             * The pixel width of the line/border around the\n             * candlestick.\n             *\n             * @product highstock\n             */\n            lineWidth: 2\n        }\n    },\n    /**\n     * @type    {number|null}\n     * @product highstock\n     */\n    threshold: null,\n    /**\n     * The color of the line/border of the candlestick.\n     *\n     * In styled mode, the line stroke can be set with the\n     * `.highcharts-candlestick-series .highcahrts-point` rule.\n     *\n     * @see [upLineColor](#plotOptions.candlestick.upLineColor)\n     *\n     * @sample {highstock} stock/plotoptions/candlestick-linecolor/\n     *         Candlestick line colors\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default #000000\n     * @product highstock\n     */\n    lineColor: \"#000000\" /* Palette.neutralColor100 */,\n    /**\n     * The pixel width of the candlestick line/border. Defaults to `1`.\n     *\n     *\n     * In styled mode, the line stroke width can be set with the\n     * `.highcharts-candlestick-series .highcahrts-point` rule.\n     *\n     * @product highstock\n     */\n    lineWidth: 1,\n    /**\n     * The fill color of the candlestick when values are rising.\n     *\n     * In styled mode, the up color can be set with the\n     * `.highcharts-candlestick-series .highcharts-point-up` rule.\n     *\n     * @sample {highstock} stock/plotoptions/candlestick-color/\n     *         Custom colors\n     * @sample {highstock} highcharts/css/candlestick/\n     *         Colors in styled mode\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default #ffffff\n     * @product highstock\n    */\n    upColor: \"#ffffff\" /* Palette.backgroundColor */,\n    /**\n     * @product highstock\n     */\n    stickyTracking: true\n};\n/**\n * A `candlestick` series. If the [type](#series.candlestick.type)\n * option is not specified, it is inherited from [chart.type](\n * #chart.type).\n *\n * @type      {*}\n * @extends   series,plotOptions.candlestick\n * @excluding dataParser, dataURL, marker\n * @product   highstock\n * @apioption series.candlestick\n */\n/**\n * An array of data points for the series. For the `candlestick` series\n * type, points can be given in the following ways:\n *\n * 1. An array of arrays with 5 or 4 values. In this case, the values correspond\n *    to `x,open,high,low,close`. If the first value is a string, it is applied\n *    as the name of the point, and the `x` value is inferred. The `x` value can\n *    also be omitted, in which case the inner arrays should be of length 4.\n *    Then the `x` value is automatically calculated, either starting at 0 and\n *    incremented by 1, or from `pointStart` and `pointInterval` given in the\n *    series options.\n *    ```js\n *    data: [\n *        [0, 7, 2, 0, 4],\n *        [1, 1, 4, 2, 8],\n *        [2, 3, 3, 9, 3]\n *    ]\n *    ```\n *\n * 2. An array of objects with named values. The following snippet shows only a\n *    few settings, see the complete options set below. If the total number of\n *    data points exceeds the series'\n *    [turboThreshold](#series.candlestick.turboThreshold), this option is not\n *    available.\n *    ```js\n *    data: [{\n *        x: 1,\n *        open: 9,\n *        high: 2,\n *        low: 4,\n *        close: 6,\n *        name: \"Point2\",\n *        color: \"#00FF00\"\n *    }, {\n *        x: 1,\n *        open: 1,\n *        high: 4,\n *        low: 7,\n *        close: 7,\n *        name: \"Point1\",\n *        color: \"#FF00FF\"\n *    }]\n *    ```\n *\n * @type      {Array<Array<(number|string),number,number,number>|Array<(number|string),number,number,number,number>|*>}\n * @extends   series.ohlc.data\n * @excluding y\n * @product   highstock\n * @apioption series.candlestick.data\n */\n''; // Adds doclets above to transpiled\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Candlestick_CandlestickSeriesDefaults = (CandlestickSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/Candlestick/CandlestickSeries.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar CandlestickSeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar _a = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes, CandlestickSeries_ColumnSeries = _a.column, CandlestickSeries_OHLCSeries = _a.ohlc;\n\nvar CandlestickSeries_crisp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).crisp, CandlestickSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n/* *\n *\n *  Class\n *\n * */\n/**\n * The candlestick series type.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.candlestick\n *\n * @augments Highcharts.seriesTypes.ohlc\n */\nvar CandlestickSeries = /** @class */ (function (_super) {\n    CandlestickSeries_extends(CandlestickSeries, _super);\n    function CandlestickSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Postprocess mapping between options and SVG attributes\n     *\n     * @private\n     * @function Highcharts.seriesTypes.candlestick#pointAttribs\n     */\n    CandlestickSeries.prototype.pointAttribs = function (point, state) {\n        var attribs = CandlestickSeries_ColumnSeries.prototype.pointAttribs.call(this,\n            point,\n            state),\n            options = this.options,\n            isUp = point.open < point.close,\n            stroke = options.lineColor || this.color,\n            color = point.color || this.color; // (#14826)\n            attribs['stroke-width'] = options.lineWidth;\n        attribs.fill = point.options.color ||\n            (isUp ? (options.upColor || color) : color);\n        attribs.stroke = point.options.lineColor ||\n            (isUp ? (options.upLineColor || stroke) : stroke);\n        // Select or hover states\n        if (state) {\n            var stateOptions = options.states[state];\n            attribs.fill = stateOptions.color || attribs.fill;\n            attribs.stroke = stateOptions.lineColor || attribs.stroke;\n            attribs['stroke-width'] =\n                stateOptions.lineWidth || attribs['stroke-width'];\n        }\n        return attribs;\n    };\n    /**\n     * Draw the data points.\n     *\n     * @private\n     * @function Highcharts.seriesTypes.candlestick#drawPoints\n     */\n    CandlestickSeries.prototype.drawPoints = function () {\n        var series = this,\n            points = series.points,\n            chart = series.chart,\n            reversedYAxis = series.yAxis.reversed;\n        for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n            var point = points_1[_i];\n            var graphic = point.graphic,\n                plotOpen = void 0,\n                plotClose = void 0,\n                topBox = void 0,\n                bottomBox = void 0,\n                hasTopWhisker = void 0,\n                hasBottomWhisker = void 0,\n                crispX = void 0,\n                path = void 0,\n                halfWidth = void 0;\n            var isNew = !graphic;\n            if (typeof point.plotY !== 'undefined') {\n                if (!graphic) {\n                    point.graphic = graphic = chart.renderer.path()\n                        .add(series.group);\n                }\n                if (!series.chart.styledMode) {\n                    graphic\n                        .attr(series.pointAttribs(point, (point.selected && 'select'))) // #3897\n                        .shadow(series.options.shadow);\n                }\n                // Crisp vector coordinates\n                var strokeWidth = graphic.strokeWidth();\n                // #2596:\n                crispX = CandlestickSeries_crisp(point.plotX || 0, strokeWidth);\n                plotOpen = point.plotOpen;\n                plotClose = point.plotClose;\n                topBox = Math.min(plotOpen, plotClose);\n                bottomBox = Math.max(plotOpen, plotClose);\n                halfWidth = Math.round(point.shapeArgs.width / 2);\n                hasTopWhisker = reversedYAxis ?\n                    bottomBox !== point.yBottom :\n                    Math.round(topBox) !==\n                        Math.round(point.plotHigh || 0);\n                hasBottomWhisker = reversedYAxis ?\n                    Math.round(topBox) !==\n                        Math.round(point.plotHigh || 0) :\n                    bottomBox !== point.yBottom;\n                topBox = CandlestickSeries_crisp(topBox, strokeWidth);\n                bottomBox = CandlestickSeries_crisp(bottomBox, strokeWidth);\n                // Create the path. Due to a bug in Chrome 49, the path is\n                // first instantiated with no values, then the values\n                // pushed. For unknown reasons, instantiating the path array\n                // with all the values would lead to a crash when updating\n                // frequently (#5193).\n                path = [];\n                path.push(['M', crispX - halfWidth, bottomBox], ['L', crispX - halfWidth, topBox], ['L', crispX + halfWidth, topBox], ['L', crispX + halfWidth, bottomBox], ['Z'], // Ensure a nice rectangle #2602\n                ['M', crispX, topBox], [\n                    'L',\n                    // #460, #2094\n                    crispX,\n                    hasTopWhisker ?\n                        Math.round(reversedYAxis ?\n                            point.yBottom :\n                            point.plotHigh) :\n                        topBox\n                ], ['M', crispX, bottomBox], [\n                    'L',\n                    // #460, #2094\n                    crispX,\n                    hasBottomWhisker ?\n                        Math.round(reversedYAxis ?\n                            point.plotHigh :\n                            point.yBottom) :\n                        bottomBox\n                ]);\n                graphic[isNew ? 'attr' : 'animate']({ d: path })\n                    .addClass(point.getClassName(), true);\n            }\n        }\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    CandlestickSeries.defaultOptions = CandlestickSeries_merge(CandlestickSeries_OHLCSeries.defaultOptions, { tooltip: CandlestickSeries_OHLCSeries.defaultOptions.tooltip }, Candlestick_CandlestickSeriesDefaults);\n    return CandlestickSeries;\n}(CandlestickSeries_OHLCSeries));\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('candlestick', CandlestickSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Candlestick_CandlestickSeries = ((/* unused pure expression or super */ null && (CandlestickSeries)));\n\n;// ./code/es5/es-modules/Series/Flags/FlagsPoint.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar FlagsPoint_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar FlagsPoint_ColumnPoint = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column.prototype.pointClass;\n\nvar FlagsPoint_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n *  Class\n *\n * */\nvar FlagsPoint = /** @class */ (function (_super) {\n    FlagsPoint_extends(FlagsPoint, _super);\n    function FlagsPoint() {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        var _this = _super !== null && _super.apply(this,\n            arguments) || this;\n        _this.ttBelow = false;\n        return _this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    FlagsPoint.prototype.isValid = function () {\n        // #9233 - Prevent from treating flags as null points (even if\n        // they have no y values defined).\n        return FlagsPoint_isNumber(this.y) || typeof this.y === 'undefined';\n    };\n    /**\n     * @private\n     */\n    FlagsPoint.prototype.hasNewShapeType = function () {\n        var shape = this.options.shape || this.series.options.shape;\n        return this.graphic && shape && shape !== this.graphic.symbolKey;\n    };\n    return FlagsPoint;\n}(FlagsPoint_ColumnPoint));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Flags_FlagsPoint = (FlagsPoint);\n\n;// ./code/es5/es-modules/Series/Flags/FlagsSeriesDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Flags are used to mark events in stock charts. They can be added on the\n * timeline, or attached to a specific series.\n *\n * @sample stock/demo/flags-general/\n *         Flags on a line series\n *\n * @extends      plotOptions.column\n * @excluding    animation, borderColor, borderWidth,\n *               colorByPoint, cropThreshold, dataGrouping, pointPadding,\n *               pointWidth, turboThreshold\n * @product      highstock\n * @optionparent plotOptions.flags\n */\nvar FlagsSeriesDefaults = {\n    /**\n     * The corner radius of the border surrounding each flag. For `squarepin`\n     * shaped flags only. A number signifies pixels. A percentage string, like\n     * for example 50%, signifies a relative size.\n     */\n    borderRadius: 0,\n    /**\n     * In case the flag is placed on a series, on what point key to place\n     * it. Line and columns have one key, `y`. In range or OHLC-type series,\n     * however, the flag can optionally be placed on the `open`, `high`,\n     * `low` or `close` key.\n     *\n     * @sample {highstock} stock/plotoptions/flags-onkey/\n     *         Range series, flag on high\n     *\n     * @type       {string}\n     * @default    y\n     * @since      4.2.2\n     * @product    highstock\n     * @validvalue [\"y\", \"open\", \"high\", \"low\", \"close\"]\n     * @apioption  plotOptions.flags.onKey\n     */\n    /**\n     * The id of the series that the flags should be drawn on. If no id\n     * is given, the flags are drawn on the x axis.\n     *\n     * @sample {highstock} stock/plotoptions/flags/\n     *         Flags on series and on x axis\n     *\n     * @type      {string}\n     * @product   highstock\n     * @apioption plotOptions.flags.onSeries\n     */\n    pointRange: 0, // #673\n    /**\n     * Whether the flags are allowed to overlap sideways. If `false`, the\n     * flags are moved sideways using an algorithm that seeks to place every\n     * flag as close as possible to its original position.\n     *\n     * @sample {highstock} stock/plotoptions/flags-allowoverlapx\n     *         Allow sideways overlap\n     *\n     * @since 6.0.4\n     */\n    allowOverlapX: false,\n    /**\n     * The shape of the marker. Can be one of \"flag\", \"circlepin\",\n     * \"squarepin\", or an image of the format `url(/path-to-image.jpg)`.\n     * Individual shapes can also be set for each point.\n     *\n     * @sample {highstock} stock/plotoptions/flags/\n     *         Different shapes\n     *\n     * @type    {Highcharts.FlagsShapeValue}\n     * @product highstock\n     */\n    shape: 'flag',\n    /**\n     * When multiple flags in the same series fall on the same value, this\n     * number determines the vertical offset between them.\n     *\n     * @sample {highstock} stock/plotoptions/flags-stackdistance/\n     *         A greater stack distance\n     *\n     * @product highstock\n     */\n    stackDistance: 12,\n    /**\n     * Text alignment for the text inside the flag.\n     *\n     * @since      5.0.0\n     * @product    highstock\n     * @validvalue [\"left\", \"center\", \"right\"]\n     */\n    textAlign: 'center',\n    /**\n     * Specific tooltip options for flag series. Flag series tooltips are\n     * different from most other types in that a flag doesn't have a data\n     * value, so the tooltip rather displays the `text` option for each\n     * point.\n     *\n     * @extends   plotOptions.series.tooltip\n     * @excluding changeDecimals, valueDecimals, valuePrefix, valueSuffix\n     * @product   highstock\n     */\n    tooltip: {\n        pointFormat: '{point.text}'\n    },\n    /**\n     * @type {number|null}\n     */\n    threshold: null,\n    /**\n     * The text to display on each flag. This can be defined on series\n     * level, or individually for each point. Defaults to `\"A\"`.\n     *\n     * @type      {string}\n     * @default   A\n     * @product   highstock\n     * @apioption plotOptions.flags.title\n     */\n    /**\n     * The y position of the top left corner of the flag relative to either\n     * the series (if onSeries is defined), or the x axis. Defaults to\n     * `-30`.\n     *\n     * @product highstock\n     */\n    y: -30,\n    /**\n     * Whether to use HTML to render the flag texts. Using HTML allows for\n     * advanced formatting, images and reliable bi-directional text\n     * rendering. Note that exported images won't respect the HTML, and that\n     * HTML won't respect Z-index settings.\n     *\n     * @type      {boolean}\n     * @default   false\n     * @since     1.3\n     * @product   highstock\n     * @apioption plotOptions.flags.useHTML\n     */\n    /**\n     * Fixed width of the flag's shape. By default, width is autocalculated\n     * according to the flag's title.\n     *\n     * @sample {highstock} stock/demo/flags-shapes/\n     *         Flags with fixed width\n     *\n     * @type      {number}\n     * @product   highstock\n     * @apioption plotOptions.flags.width\n     */\n    /**\n     * Fixed height of the flag's shape. By default, height is\n     * autocalculated according to the flag's title.\n     *\n     * @type      {number}\n     * @product   highstock\n     * @apioption plotOptions.flags.height\n     */\n    /**\n     * The fill color for the flags.\n     *\n     * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @product highstock\n     */\n    fillColor: \"#ffffff\" /* Palette.backgroundColor */,\n    /**\n     * The color of the line/border of the flag.\n     *\n     * In styled mode, the stroke is set in the\n     * `.highcharts-flag-series.highcharts-point` rule.\n     *\n     * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n     * @default   #000000\n     * @product   highstock\n     * @apioption plotOptions.flags.lineColor\n     */\n    /**\n     * The pixel width of the flag's line/border.\n     *\n     * @product highstock\n     */\n    lineWidth: 1,\n    states: {\n        /**\n         * @extends plotOptions.column.states.hover\n         * @product highstock\n         */\n        hover: {\n            /**\n             * The color of the line/border of the flag.\n             *\n             * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n             * @product highstock\n             */\n            lineColor: \"#000000\" /* Palette.neutralColor100 */,\n            /**\n             * The fill or background color of the flag.\n             *\n             * @type    {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n             * @product highstock\n             */\n            fillColor: \"#ccd3ff\" /* Palette.highlightColor20 */\n        }\n    },\n    /**\n     * The text styles of the flag.\n     *\n     * In styled mode, the styles are set in the\n     * `.highcharts-flag-series .highcharts-point` rule.\n     *\n     * @type    {Highcharts.CSSObject}\n     * @default {\"fontSize\": \"11px\", \"fontWeight\": \"bold\"}\n     * @product highstock\n     */\n    style: {\n        /** @ignore-option */\n        fontSize: '0.7em',\n        /** @ignore-option */\n        fontWeight: 'bold'\n    }\n};\n/**\n * A `flags` series. If the [type](#series.flags.type) option is not\n * specified, it is inherited from [chart.type](#chart.type).\n *\n * @extends   series,plotOptions.flags\n * @excluding animation, borderColor, borderRadius, borderWidth, colorByPoint,\n *            connectNulls, cropThreshold, dashStyle, dataGrouping, dataParser,\n *            dataURL, gapSize, gapUnit, linecap, lineWidth, marker,\n *            pointPadding, pointWidth, step, turboThreshold, useOhlcData\n * @product   highstock\n * @apioption series.flags\n */\n/**\n * An array of data points for the series. For the `flags` series type,\n * points can be given in the following ways:\n *\n * 1. An array of objects with named values. The following snippet shows only a\n *    few settings, see the complete options set below. If the total number of\n *    data points exceeds the series'\n *    [turboThreshold](#series.flags.turboThreshold), this option is not\n *    available.\n *    ```js\n *    data: [{\n *        x: 1,\n *        title: \"A\",\n *        text: \"First event\"\n *    }, {\n *        x: 1,\n *        title: \"B\",\n *        text: \"Second event\"\n *    }]\n *    ```\n *\n * @type      {Array<*>}\n * @extends   series.line.data\n * @excluding dataLabels, marker, name, y\n * @product   highstock\n * @apioption series.flags.data\n */\n/**\n * The fill color of an individual flag. By default it inherits from\n * the series color.\n *\n * @type      {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}\n * @product   highstock\n * @apioption series.flags.data.fillColor\n */\n/**\n * The longer text to be shown in the flag's tooltip.\n *\n * @type      {string}\n * @product   highstock\n * @apioption series.flags.data.text\n */\n/**\n * The short text to be shown on the flag.\n *\n * @type      {string}\n * @product   highstock\n * @apioption series.flags.data.title\n */\n''; // Keeps doclets above in transpiled file\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Flags_FlagsSeriesDefaults = (FlagsSeriesDefaults);\n\n;// ./code/es5/es-modules/Series/Flags/FlagsSymbols.js\n/* *\n *\n *  Imports\n *\n * */\n\n/* *\n *\n *  Composition\n *\n * */\nvar FlagsSymbols;\n(function (FlagsSymbols) {\n    /* *\n     *\n     *  Constants\n     *\n     * */\n    var modifiedMembers = [];\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /* eslint-disable valid-jsdoc */\n    /**\n     * @private\n     */\n    function compose(SVGRendererClass) {\n        if (modifiedMembers.indexOf(SVGRendererClass) === -1) {\n            modifiedMembers.push(SVGRendererClass);\n            var symbols = SVGRendererClass.prototype.symbols;\n            symbols.flag = flag;\n            createPinSymbol(symbols, 'circle');\n            createPinSymbol(symbols, 'square');\n        }\n        var RendererClass = highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default().getRendererType();\n        // The symbol callbacks are generated on the SVGRenderer object in all\n        // browsers.\n        if (modifiedMembers.indexOf(RendererClass)) {\n            modifiedMembers.push(RendererClass);\n        }\n    }\n    FlagsSymbols.compose = compose;\n    /**\n     * Create the flag icon with anchor.\n     * @private\n     */\n    function flag(x, y, w, h, options) {\n        var anchorX = (options && options.anchorX) || x,\n            anchorY = (options && options.anchorY) || y;\n        // To do: unwanted any cast because symbols.circle has wrong type, it\n        // actually returns an SVGPathArray\n        var path = this.circle(anchorX - 1,\n            anchorY - 1, 2, 2);\n        path.push(['M', anchorX, anchorY], ['L', x, y + h], ['L', x, y], ['L', x + w, y], ['L', x + w, y + h], ['L', x, y + h], ['Z']);\n        return path;\n    }\n    /**\n     * Create the circlepin and squarepin icons with anchor.\n     * @private\n     */\n    function createPinSymbol(symbols, shape) {\n        symbols[(shape + 'pin')] = function (x, y, w, h, options) {\n            var anchorX = options && options.anchorX,\n                anchorY = options && options.anchorY;\n            var path;\n            // For single-letter flags, make sure circular flags are not taller\n            // than their width\n            if (shape === 'circle' && h > w) {\n                x -= Math.round((h - w) / 2);\n                w = h;\n            }\n            path = (symbols[shape])(x, y, w, h, options);\n            if (anchorX && anchorY) {\n                /**\n                 * If the label is below the anchor, draw the connecting line\n                 * from the top edge of the label, otherwise start drawing from\n                 * the bottom edge\n                 */\n                var labelX = anchorX;\n                if (shape === 'circle') {\n                    labelX = x + w / 2;\n                }\n                else {\n                    var startSeg = path[0];\n                    var endSeg = path[1];\n                    if (startSeg[0] === 'M' && endSeg[0] === 'L') {\n                        labelX = (startSeg[1] + endSeg[1]) / 2;\n                    }\n                }\n                var labelY = (y > anchorY) ? y : y + h;\n                path.push([\n                    'M',\n                    labelX,\n                    labelY\n                ], [\n                    'L',\n                    anchorX,\n                    anchorY\n                ]);\n                path = path.concat(symbols.circle(anchorX - 1, anchorY - 1, 2, 2));\n            }\n            return path;\n        };\n    }\n})(FlagsSymbols || (FlagsSymbols = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Flags_FlagsSymbols = (FlagsSymbols);\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"Series\",\"types\",\"column\"],\"commonjs\":[\"highcharts\",\"Series\",\"types\",\"column\"],\"commonjs2\":[\"highcharts\",\"Series\",\"types\",\"column\"],\"root\":[\"Highcharts\",\"Series\",\"types\",\"column\"]}\nvar highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_ = __webpack_require__(448);\nvar highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default = /*#__PURE__*/__webpack_require__.n(highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_);\n;// ./code/es5/es-modules/Series/OnSeriesComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar OnSeriesComposition_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\nvar columnProto = (highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default()).prototype;\n\nvar seriesProto = (highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default()).prototype;\n\nvar OnSeriesComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, OnSeriesComposition_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, stableSort = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).stableSort;\n/* *\n *\n *  Composition\n *\n * */\nvar OnSeriesComposition;\n(function (OnSeriesComposition) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    function compose(SeriesClass) {\n        if (OnSeriesComposition_pushUnique(OnSeriesComposition_composed, 'OnSeries')) {\n            var seriesProto_1 = SeriesClass.prototype;\n            seriesProto_1.getPlotBox = getPlotBox;\n            seriesProto_1.translate = translate;\n        }\n        return SeriesClass;\n    }\n    OnSeriesComposition.compose = compose;\n    /**\n     * Override getPlotBox. If the onSeries option is valid, return the plot box\n     * of the onSeries, otherwise proceed as usual.\n     *\n     * @private\n     */\n    function getPlotBox(name) {\n        return seriesProto.getPlotBox.call((this.options.onSeries &&\n            this.chart.get(this.options.onSeries)) || this, name);\n    }\n    OnSeriesComposition.getPlotBox = getPlotBox;\n    /**\n     * Extend the translate method by placing the point on the related series\n     *\n     * @private\n     */\n    function translate() {\n        var _a,\n            _b;\n        columnProto.translate.apply(this);\n        var series = this,\n            options = series.options,\n            chart = series.chart,\n            points = series.points,\n            optionsOnSeries = options.onSeries,\n            onSeries = (optionsOnSeries &&\n                chart.get(optionsOnSeries)),\n            step = onSeries && onSeries.options.step,\n            onData = (onSeries && onSeries.points),\n            inverted = chart.inverted,\n            xAxis = series.xAxis,\n            yAxis = series.yAxis;\n        var cursor = points.length - 1,\n            point,\n            lastPoint,\n            onKey = options.onKey || 'y',\n            i = onData && onData.length,\n            xOffset = 0,\n            leftPoint,\n            lastX,\n            rightPoint,\n            currentDataGrouping,\n            distanceRatio;\n        // Relate to a master series\n        if (onSeries && onSeries.visible && i) {\n            xOffset = (onSeries.pointXOffset || 0) + (onSeries.barW || 0) / 2;\n            currentDataGrouping = onSeries.currentDataGrouping;\n            lastX = (onData[i - 1].x +\n                (currentDataGrouping ? currentDataGrouping.totalRange : 0)); // #2374\n            // sort the data points\n            stableSort(points, function (a, b) { return (a.x - b.x); });\n            onKey = 'plot' + onKey[0].toUpperCase() + onKey.substr(1);\n            var _loop_1 = function () {\n                    leftPoint = onData[i];\n                point = points[cursor];\n                point.y = leftPoint.y;\n                if (leftPoint.x <= point.x &&\n                    typeof leftPoint[onKey] !== 'undefined') {\n                    if (point.x <= lastX) { // #803\n                        point.plotY = leftPoint[onKey];\n                        // Interpolate between points, #666\n                        if (leftPoint.x < point.x &&\n                            !step) {\n                            rightPoint = onData[i + 1];\n                            if (rightPoint &&\n                                typeof rightPoint[onKey] !== 'undefined') {\n                                // If the series is spline, calculate Y of the\n                                // point on the bezier line. #19264\n                                if (OnSeriesComposition_defined(point.plotX) &&\n                                    onSeries.is('spline')) {\n                                    leftPoint = leftPoint;\n                                    rightPoint = rightPoint;\n                                    var p0_1 = [\n                                            leftPoint.plotX || 0,\n                                            leftPoint.plotY || 0\n                                        ],\n                                        p3_1 = [\n                                            rightPoint.plotX || 0,\n                                            rightPoint.plotY || 0\n                                        ],\n                                        p1_1 = (((_a = leftPoint.controlPoints) === null || _a === void 0 ? void 0 : _a.high) ||\n                                            p0_1),\n                                        p2_1 = (((_b = rightPoint.controlPoints) === null || _b === void 0 ? void 0 : _b.low) ||\n                                            p3_1),\n                                        pixelThreshold = 0.25,\n                                        maxIterations = 100,\n                                        calculateCoord = function (t,\n                                        key) { return (\n                                        // The parametric formula for the\n                                        // cubic Bezier curve.\n                                        Math.pow(1 - t, 3) * p0_1[key] +\n                                            3 * (1 - t) * (1 - t) * t *\n                                                p1_1[key] + 3 * (1 - t) * t * t *\n                                            p2_1[key] + t * t * t * p3_1[key]); };\n                                    var tMin = 0,\n                                        tMax = 1,\n                                        t = void 0;\n                                    // Find `t` of the parametric function of\n                                    // the bezier curve for the given `plotX`.\n                                    for (var i_1 = 0; i_1 < maxIterations; i_1++) {\n                                        var tMid = (tMin + tMax) / 2;\n                                        var xMid = calculateCoord(tMid, 0);\n                                        if (xMid === null) {\n                                            break;\n                                        }\n                                        if (Math.abs(xMid - point.plotX) < pixelThreshold) {\n                                            t = tMid;\n                                            break;\n                                        }\n                                        if (xMid < point.plotX) {\n                                            tMin = tMid;\n                                        }\n                                        else {\n                                            tMax = tMid;\n                                        }\n                                    }\n                                    if (OnSeriesComposition_defined(t)) {\n                                        point.plotY =\n                                            calculateCoord(t, 1);\n                                        point.y =\n                                            yAxis.toValue(point.plotY, true);\n                                    }\n                                }\n                                else {\n                                    // The distance ratio, between 0 and 1\n                                    distanceRatio =\n                                        (point.x - leftPoint.x) /\n                                            (rightPoint.x - leftPoint.x);\n                                    point.plotY +=\n                                        distanceRatio *\n                                            // The plotY distance\n                                            (rightPoint[onKey] - leftPoint[onKey]);\n                                    point.y +=\n                                        distanceRatio *\n                                            (rightPoint.y - leftPoint.y);\n                                }\n                            }\n                        }\n                    }\n                    cursor--;\n                    i++; // Check again for points in the same x position\n                    if (cursor < 0) {\n                        return \"break\";\n                    }\n                }\n            };\n            while (i-- && points[cursor]) {\n                var state_1 = _loop_1();\n                if (state_1 === \"break\")\n                    break;\n            }\n        }\n        // Add plotY position and handle stacking\n        points.forEach(function (point, i) {\n            var stackIndex;\n            point.plotX += xOffset; // #2049\n            // Undefined plotY means the point is either on axis, outside series\n            // range or hidden series. If the series is outside the range of the\n            // x axis it should fall through with an undefined plotY, but then\n            // we must remove the shapeArgs (#847). For inverted charts, we need\n            // to calculate position anyway, because series.invertGroups is not\n            // defined\n            if (typeof point.plotY === 'undefined' || inverted) {\n                if (point.plotX >= 0 &&\n                    point.plotX <= xAxis.len) {\n                    // We're inside xAxis range\n                    if (inverted) {\n                        point.plotY = xAxis.translate(point.x, 0, 1, 0, 1);\n                        point.plotX = OnSeriesComposition_defined(point.y) ?\n                            yAxis.translate(point.y, 0, 0, 0, 1) :\n                            0;\n                    }\n                    else {\n                        point.plotY = (xAxis.opposite ? 0 : series.yAxis.len) +\n                            xAxis.offset; // For the windbarb demo\n                    }\n                }\n                else {\n                    point.shapeArgs = {}; // 847\n                }\n            }\n            // If multiple flags appear at the same x, order them into a stack\n            lastPoint = points[i - 1];\n            if (lastPoint && lastPoint.plotX === point.plotX) {\n                if (typeof lastPoint.stackIndex === 'undefined') {\n                    lastPoint.stackIndex = 0;\n                }\n                stackIndex = lastPoint.stackIndex + 1;\n            }\n            point.stackIndex = stackIndex; // #3639\n        });\n        this.onSeries = onSeries;\n    }\n    OnSeriesComposition.translate = translate;\n})(OnSeriesComposition || (OnSeriesComposition = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Series_OnSeriesComposition = (OnSeriesComposition);\n\n;// ./code/es5/es-modules/Series/Flags/FlagsSeries.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\nvar FlagsSeries_extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d,\n        b) {\n            extendStatics = Object.setPrototypeOf ||\n                ({ __proto__: [] } instanceof Array && function (d,\n        b) { d.__proto__ = b; }) ||\n                function (d,\n        b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b,\n        p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop;\n\n\nvar distribute = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).distribute;\n\nvar Series = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series, FlagsSeries_ColumnSeries = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).seriesTypes.column;\n\n\nvar FlagsSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, FlagsSeries_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, FlagsSeries_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, FlagsSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, FlagsSeries_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, FlagsSeries_objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap;\n/* *\n *\n *  Classes\n *\n * */\n/**\n * The Flags series.\n *\n * @private\n * @class\n * @name Highcharts.seriesTypes.flags\n *\n * @augments Highcharts.Series\n */\nvar FlagsSeries = /** @class */ (function (_super) {\n    FlagsSeries_extends(FlagsSeries, _super);\n    function FlagsSeries() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Disable animation, but keep clipping (#8546).\n     * @private\n     */\n    FlagsSeries.prototype.animate = function (init) {\n        if (init) {\n            this.setClip();\n        }\n    };\n    /**\n     * Draw the markers.\n     * @private\n     */\n    FlagsSeries.prototype.drawPoints = function () {\n        var _a,\n            _b;\n        var series = this,\n            points = series.points,\n            chart = series.chart,\n            renderer = chart.renderer,\n            inverted = chart.inverted,\n            options = series.options,\n            optionsY = options.y,\n            yAxis = series.yAxis,\n            boxesMap = {},\n            boxes = [],\n            borderRadius = FlagsSeries_isNumber(options.borderRadius) ?\n                options.borderRadius : 0;\n        var plotX,\n            plotY,\n            shape,\n            i,\n            point,\n            graphic,\n            stackIndex,\n            anchorY,\n            attribs,\n            outsideRight,\n            centered;\n        i = points.length;\n        while (i--) {\n            point = points[i];\n            outsideRight =\n                (inverted ? point.plotY : point.plotX) >\n                    series.xAxis.len;\n            plotX = point.plotX;\n            stackIndex = point.stackIndex;\n            shape = point.options.shape || options.shape;\n            plotY = point.plotY;\n            if (typeof plotY !== 'undefined') {\n                plotY = point.plotY + optionsY -\n                    (typeof stackIndex !== 'undefined' &&\n                        (stackIndex * options.stackDistance));\n            }\n            // Skip connectors for higher level stacked points\n            point.anchorX = stackIndex ? void 0 : point.plotX;\n            anchorY = stackIndex ? void 0 : point.plotY;\n            centered = shape !== 'flag';\n            graphic = point.graphic;\n            // Only draw the point if y is defined and the flag is within\n            // the visible area\n            if (typeof plotY !== 'undefined' &&\n                plotX >= 0 &&\n                !outsideRight) {\n                // #15384\n                if (graphic && point.hasNewShapeType()) {\n                    graphic = graphic.destroy();\n                }\n                // Create the flag\n                if (!graphic) {\n                    graphic = point.graphic = renderer.label('', 0, void 0, shape, void 0, void 0, options.useHTML)\n                        .addClass('highcharts-point')\n                        .add(series.markerGroup);\n                    // Add reference to the point for tracker (#6303)\n                    if (point.graphic.div) {\n                        point.graphic.div.point = point;\n                    }\n                    graphic.isNew = true;\n                }\n                graphic.attr({\n                    align: centered ? 'center' : 'left',\n                    width: options.width,\n                    height: options.height,\n                    'text-align': options.textAlign,\n                    r: borderRadius\n                });\n                if (!chart.styledMode) {\n                    graphic\n                        .attr(series.pointAttribs(point))\n                        .css(FlagsSeries_merge(options.style, point.style))\n                        .shadow(options.shadow);\n                }\n                if (plotX > 0) { // #3119\n                    plotX -= graphic.strokeWidth() % 2; // #4285\n                }\n                // Plant the flag\n                attribs = {\n                    y: plotY,\n                    anchorY: anchorY\n                };\n                if (options.allowOverlapX) {\n                    attribs.x = plotX;\n                    attribs.anchorX = point.anchorX;\n                }\n                graphic.attr({\n                    // Allow empty string as a flag title (#20549)\n                    text: (_b = (_a = point.options.title) !== null && _a !== void 0 ? _a : options.title) !== null && _b !== void 0 ? _b : 'A'\n                })[graphic.isNew ? 'attr' : 'animate'](attribs);\n                // Rig for the distribute function\n                if (!options.allowOverlapX) {\n                    if (!boxesMap[point.plotX]) {\n                        boxesMap[point.plotX] = {\n                            align: centered ? 0.5 : 0,\n                            size: graphic.width || 0,\n                            target: plotX,\n                            anchorX: plotX\n                        };\n                    }\n                    else {\n                        boxesMap[point.plotX].size = Math.max(boxesMap[point.plotX].size, graphic.width || 0);\n                    }\n                }\n                // Set the tooltip anchor position\n                point.tooltipPos = [\n                    plotX,\n                    plotY + yAxis.pos - chart.plotTop\n                ]; // #6327\n            }\n            else if (graphic) {\n                point.graphic = graphic.destroy();\n            }\n        }\n        // Handle X-dimension overlapping\n        if (!options.allowOverlapX) {\n            var maxDistance_1 = 100;\n            FlagsSeries_objectEach(boxesMap, function (box) {\n                box.plotX = box.anchorX;\n                boxes.push(box);\n                maxDistance_1 = Math.max(box.size, maxDistance_1);\n            });\n            // If necessary (for overlapping or long labels)  distribute it\n            // depending on the label width or a hardcoded value, #16041.\n            distribute(boxes, inverted ? yAxis.len : this.xAxis.len, maxDistance_1);\n            for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n                var point_1 = points_1[_i];\n                var plotX_1 = point_1.plotX,\n                    graphic_1 = point_1.graphic,\n                    box = graphic_1 && boxesMap[plotX_1];\n                if (box && graphic_1) {\n                    // Hide flag when its box position is not specified\n                    // (#8573, #9299)\n                    if (!FlagsSeries_defined(box.pos)) {\n                        graphic_1.hide().isNew = true;\n                    }\n                    else {\n                        graphic_1[graphic_1.isNew ? 'attr' : 'animate']({\n                            x: box.pos + (box.align || 0) * box.size,\n                            anchorX: point_1.anchorX\n                        }).show().isNew = false;\n                    }\n                }\n            }\n        }\n        // Can be a mix of SVG and HTML and we need events for both (#6303)\n        if (options.useHTML && series.markerGroup) {\n            wrap(series.markerGroup, 'on', function (proceed) {\n                return highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default().prototype.on.apply(\n                // For HTML\n                // eslint-disable-next-line no-invalid-this\n                proceed.apply(this, [].slice.call(arguments, 1)), \n                // And for SVG\n                [].slice.call(arguments, 1));\n            });\n        }\n    };\n    /**\n     * Extend the column trackers with listeners to expand and contract\n     * stacks.\n     * @private\n     */\n    FlagsSeries.prototype.drawTracker = function () {\n        var series = this,\n            points = series.points;\n        _super.prototype.drawTracker.call(this);\n        var _loop_1 = function (point) {\n                var graphic = point.graphic;\n            if (graphic) {\n                if (point.unbindMouseOver) {\n                    point.unbindMouseOver();\n                }\n                point.unbindMouseOver = FlagsSeries_addEvent(graphic.element, 'mouseover', function () {\n                    // Raise this point\n                    if (point.stackIndex > 0 &&\n                        !point.raised) {\n                        point._y = graphic.y;\n                        graphic.attr({\n                            y: point._y - 8\n                        });\n                        point.raised = true;\n                    }\n                    // Revert other raised points\n                    for (var _i = 0, points_3 = points; _i < points_3.length; _i++) {\n                        var otherPoint = points_3[_i];\n                        if (otherPoint !== point &&\n                            otherPoint.raised &&\n                            otherPoint.graphic) {\n                            otherPoint.graphic.attr({\n                                y: otherPoint._y\n                            });\n                            otherPoint.raised = false;\n                        }\n                    }\n                });\n            }\n        };\n        /* *\n        * Bring each stacked flag up on mouse over, this allows readability\n        * of vertically stacked elements as well as tight points on the x\n        * axis. #1924.\n        */\n        for (var _i = 0, points_2 = points; _i < points_2.length; _i++) {\n            var point = points_2[_i];\n            _loop_1(point);\n        }\n    };\n    /**\n     * Get presentational attributes\n     * @private\n     */\n    FlagsSeries.prototype.pointAttribs = function (point, state) {\n        var options = this.options,\n            color = (point && point.color) || this.color;\n        var lineColor = options.lineColor,\n            lineWidth = (point && point.lineWidth),\n            fill = (point && point.fillColor) || options.fillColor;\n        if (state) {\n            fill = options.states[state].fillColor;\n            lineColor = options.states[state].lineColor;\n            lineWidth = options.states[state].lineWidth;\n        }\n        return {\n            fill: fill || color,\n            stroke: lineColor || color,\n            'stroke-width': lineWidth || options.lineWidth || 0\n        };\n    };\n    /**\n     * @private\n     */\n    FlagsSeries.prototype.setClip = function () {\n        Series.prototype.setClip.apply(this, arguments);\n        if (this.options.clip !== false &&\n            this.sharedClipKey &&\n            this.markerGroup) {\n            this.markerGroup.clip(this.chart.sharedClips[this.sharedClipKey]);\n        }\n    };\n    /* *\n     *\n     *  Static Properties\n     *\n     * */\n    FlagsSeries.compose = Flags_FlagsSymbols.compose;\n    FlagsSeries.defaultOptions = FlagsSeries_merge(FlagsSeries_ColumnSeries.defaultOptions, Flags_FlagsSeriesDefaults);\n    return FlagsSeries;\n}(FlagsSeries_ColumnSeries));\nSeries_OnSeriesComposition.compose(FlagsSeries);\nFlagsSeries_extend(FlagsSeries.prototype, {\n    allowDG: false,\n    forceCrop: true,\n    invertible: false, // Flags series group should not be invertible (#14063).\n    noSharedTooltip: true,\n    pointClass: Flags_FlagsPoint,\n    sorted: false,\n    takeOrdinalPosition: false, // #1074\n    trackerGroups: ['markerGroup'],\n    buildKDTree: noop,\n    /**\n     * Inherit the initialization from base Series.\n     * @private\n     */\n    init: Series.prototype.init\n});\nhighcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default().registerSeriesType('flags', FlagsSeries);\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Flags_FlagsSeries = (FlagsSeries);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * @typedef {\"circlepin\"|\"flag\"|\"squarepin\"} Highcharts.FlagsShapeValue\n */\n''; // Detach doclets above\n\n// EXTERNAL MODULE: external {\"amd\":[\"highcharts/highcharts\",\"StackItem\"],\"commonjs\":[\"highcharts\",\"StackItem\"],\"commonjs2\":[\"highcharts\",\"StackItem\"],\"root\":[\"Highcharts\",\"StackItem\"]}\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_ = __webpack_require__(184);\nvar highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default = /*#__PURE__*/__webpack_require__.n(highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_);\n;// ./code/es5/es-modules/Core/Axis/BrokenAxis.js\n/* *\n *\n *  (c) 2009-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar BrokenAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, BrokenAxis_find = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).find, BrokenAxis_fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, BrokenAxis_isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, BrokenAxis_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, BrokenAxis_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Composition\n *\n * */\n/**\n * Axis with support of broken data rows.\n * @private\n */\nvar BrokenAxis;\n(function (BrokenAxis) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Adds support for broken axes.\n     * @private\n     */\n    function compose(AxisClass, SeriesClass) {\n        if (!AxisClass.keepProps.includes('brokenAxis')) {\n            AxisClass.keepProps.push('brokenAxis');\n            BrokenAxis_addEvent(AxisClass, 'init', onAxisInit);\n            BrokenAxis_addEvent(AxisClass, 'afterInit', onAxisAfterInit);\n            BrokenAxis_addEvent(AxisClass, 'afterSetTickPositions', onAxisAfterSetTickPositions);\n            BrokenAxis_addEvent(AxisClass, 'afterSetOptions', onAxisAfterSetOptions);\n            var seriesProto = SeriesClass.prototype;\n            seriesProto.drawBreaks = seriesDrawBreaks;\n            seriesProto.gappedPath = seriesGappedPath;\n            BrokenAxis_addEvent(SeriesClass, 'afterGeneratePoints', onSeriesAfterGeneratePoints);\n            BrokenAxis_addEvent(SeriesClass, 'afterRender', onSeriesAfterRender);\n        }\n        return AxisClass;\n    }\n    BrokenAxis.compose = compose;\n    /**\n     * @private\n     */\n    function onAxisAfterInit() {\n        if (typeof this.brokenAxis !== 'undefined') {\n            this.brokenAxis.setBreaks(this.options.breaks, false);\n        }\n    }\n    /**\n     * Force Axis to be not-ordinal when breaks are defined.\n     * @private\n     */\n    function onAxisAfterSetOptions() {\n        var _a;\n        var axis = this;\n        if ((_a = axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks) {\n            axis.options.ordinal = false;\n        }\n    }\n    /**\n     * @private\n     */\n    function onAxisAfterSetTickPositions() {\n        var axis = this,\n            brokenAxis = axis.brokenAxis;\n        if (brokenAxis === null || brokenAxis === void 0 ? void 0 : brokenAxis.hasBreaks) {\n            var tickPositions = axis.tickPositions,\n                info = axis.tickPositions.info,\n                newPositions = [];\n            for (var i = 0; i < tickPositions.length; i++) {\n                if (!brokenAxis.isInAnyBreak(tickPositions[i])) {\n                    newPositions.push(tickPositions[i]);\n                }\n            }\n            axis.tickPositions = newPositions;\n            axis.tickPositions.info = info;\n        }\n    }\n    /**\n     * @private\n     */\n    function onAxisInit() {\n        var axis = this;\n        if (!axis.brokenAxis) {\n            axis.brokenAxis = new Additions(axis);\n        }\n    }\n    /**\n     * @private\n     */\n    function onSeriesAfterGeneratePoints() {\n        var _a,\n            _b;\n        var _c = this,\n            isDirty = _c.isDirty,\n            connectNulls = _c.options.connectNulls,\n            points = _c.points,\n            xAxis = _c.xAxis,\n            yAxis = _c.yAxis;\n        // Set, or reset visibility of the points. Axis.setBreaks marks\n        // the series as isDirty\n        if (isDirty) {\n            var i = points.length;\n            while (i--) {\n                var point = points[i];\n                // Respect nulls inside the break (#4275)\n                var nullGap = point.y === null && connectNulls === false;\n                var isPointInBreak = (!nullGap && (((_a = xAxis === null || xAxis === void 0 ? void 0 : xAxis.brokenAxis) === null || _a === void 0 ? void 0 : _a.isInAnyBreak(point.x,\n                    true)) ||\n                        ((_b = yAxis === null || yAxis === void 0 ? void 0 : yAxis.brokenAxis) === null || _b === void 0 ? void 0 : _b.isInAnyBreak(point.y,\n                    true))));\n                // Set point.visible if in any break.\n                // If not in break, reset visible to original value.\n                point.visible = isPointInBreak ?\n                    false :\n                    point.options.visible !== false;\n            }\n        }\n    }\n    /**\n     * @private\n     */\n    function onSeriesAfterRender() {\n        this.drawBreaks(this.xAxis, ['x']);\n        this.drawBreaks(this.yAxis, BrokenAxis_pick(this.pointArrayMap, ['y']));\n    }\n    /**\n     * @private\n     */\n    function seriesDrawBreaks(axis, keys) {\n        var _a;\n        var series = this,\n            points = series.points;\n        var breaks,\n            threshold,\n            y;\n        if ((_a = axis === null || axis === void 0 ? void 0 : axis.brokenAxis) === null || _a === void 0 ? void 0 : _a.hasBreaks) {\n            var brokenAxis_1 = axis.brokenAxis;\n            keys.forEach(function (key) {\n                var _a,\n                    _b;\n                breaks = (brokenAxis_1 === null || brokenAxis_1 === void 0 ? void 0 : brokenAxis_1.breakArray) || [];\n                threshold = axis.isXAxis ?\n                    axis.min :\n                    BrokenAxis_pick(series.options.threshold, axis.min);\n                // Array of breaks that have been \"zoomed-out\" which means that\n                // they were shown previously, but now after zoom, they are not\n                // (#19885).\n                var breaksOutOfRange = (_b = (_a = axis === null || axis === void 0 ? void 0 : axis.options) === null || _a === void 0 ? void 0 : _a.breaks) === null || _b === void 0 ? void 0 : _b.filter(function (brk) {\n                        var isOut = true;\n                    // Iterate to see if \"brk\" is in axis range\n                    for (var i = 0; i < breaks.length; i++) {\n                        var otherBreak = breaks[i];\n                        if (otherBreak.from === brk.from &&\n                            otherBreak.to === brk.to) {\n                            isOut = false;\n                            break;\n                        }\n                    }\n                    return isOut;\n                });\n                points.forEach(function (point) {\n                    y = BrokenAxis_pick(point['stack' + key.toUpperCase()], point[key]);\n                    breaks.forEach(function (brk) {\n                        if (BrokenAxis_isNumber(threshold) && BrokenAxis_isNumber(y)) {\n                            var eventName = '';\n                            if ((threshold < brk.from && y > brk.to) ||\n                                (threshold > brk.from && y < brk.from)) {\n                                eventName = 'pointBreak';\n                            }\n                            else if ((threshold < brk.from &&\n                                y > brk.from &&\n                                y < brk.to) || (threshold > brk.from &&\n                                y > brk.to &&\n                                y < brk.from)) {\n                                eventName = 'pointInBreak';\n                            }\n                            if (eventName) {\n                                BrokenAxis_fireEvent(axis, eventName, { point: point, brk: brk });\n                            }\n                        }\n                    });\n                    breaksOutOfRange === null || breaksOutOfRange === void 0 ? void 0 : breaksOutOfRange.forEach(function (brk) {\n                        BrokenAxis_fireEvent(axis, 'pointOutsideOfBreak', { point: point, brk: brk });\n                    });\n                });\n            });\n        }\n    }\n    /**\n     * Extend getGraphPath by identifying gaps in the data so that we\n     * can draw a gap in the line or area. This was moved from ordinal\n     * axis module to broken axis module as of #5045.\n     *\n     * @private\n     * @function Highcharts.Series#gappedPath\n     *\n     * @return {Highcharts.SVGPathArray}\n     * Gapped path\n     */\n    function seriesGappedPath() {\n        var currentDataGrouping = this.currentDataGrouping,\n            groupingSize = currentDataGrouping === null || currentDataGrouping === void 0 ? void 0 : currentDataGrouping.gapSize,\n            points = this.points.slice(),\n            yAxis = this.yAxis;\n        var gapSize = this.options.gapSize,\n            i = points.length - 1,\n            stack;\n        /**\n         * Defines when to display a gap in the graph, together with the\n         * [gapUnit](plotOptions.series.gapUnit) option.\n         *\n         * In case when `dataGrouping` is enabled, points can be grouped\n         * into a larger time span. This can make the grouped points to\n         * have a greater distance than the absolute value of `gapSize`\n         * property, which will result in disappearing graph completely.\n         * To prevent this situation the mentioned distance between\n         * grouped points is used instead of previously defined\n         * `gapSize`.\n         *\n         * In practice, this option is most often used to visualize gaps\n         * in time series. In a stock chart, intraday data is available\n         * for daytime hours, while gaps will appear in nights and\n         * weekends.\n         *\n         * @see [gapUnit](plotOptions.series.gapUnit)\n         * @see [xAxis.breaks](#xAxis.breaks)\n         *\n         * @sample {highstock} stock/plotoptions/series-gapsize/\n         * Setting the gap size to 2 introduces gaps for weekends in\n         * daily datasets.\n         *\n         * @type      {number}\n         * @default   0\n         * @product   highstock\n         * @requires  modules/broken-axis\n         * @apioption plotOptions.series.gapSize\n         */\n        /**\n         * Together with [gapSize](plotOptions.series.gapSize), this\n         * option defines where to draw gaps in the graph.\n         *\n         * When the `gapUnit` is `\"relative\"` (default), a gap size of 5\n         * means that if the distance between two points is greater than\n         * 5 times that of the two closest points, the graph will be\n         * broken.\n         *\n         * When the `gapUnit` is `\"value\"`, the gap is based on absolute\n         * axis values, which on a datetime axis is milliseconds. This\n         * also applies to the navigator series that inherits gap\n         * options from the base series.\n         *\n         * @see [gapSize](plotOptions.series.gapSize)\n         *\n         * @type       {string}\n         * @default    relative\n         * @since      5.0.13\n         * @product    highstock\n         * @validvalue [\"relative\", \"value\"]\n         * @requires   modules/broken-axis\n         * @apioption  plotOptions.series.gapUnit\n         */\n        if (gapSize && i > 0) { // #5008\n            // Gap unit is relative\n            if (this.options.gapUnit !== 'value') {\n                gapSize *= this.basePointRange;\n            }\n            // Setting a new gapSize in case dataGrouping is enabled\n            // (#7686)\n            if (groupingSize &&\n                groupingSize > gapSize &&\n                // Except when DG is forced (e.g. from other series)\n                // and has lower granularity than actual points (#11351)\n                groupingSize >= this.basePointRange) {\n                gapSize = groupingSize;\n            }\n            // Extension for ordinal breaks\n            var current = void 0,\n                next = void 0;\n            while (i--) {\n                // Reassign next if it is not visible\n                if (!(next && next.visible !== false)) {\n                    next = points[i + 1];\n                }\n                current = points[i];\n                // Skip iteration if one of the points is not visible\n                if (next.visible === false || current.visible === false) {\n                    continue;\n                }\n                if (next.x - current.x > gapSize) {\n                    var xRange = (current.x + next.x) / 2;\n                    points.splice(// Insert after this one\n                    i + 1, 0, {\n                        isNull: true,\n                        x: xRange\n                    });\n                    // For stacked chart generate empty stack items, #6546\n                    if (yAxis.stacking && this.options.stacking) {\n                        stack = yAxis.stacking.stacks[this.stackKey][xRange] = new (highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default())(yAxis, yAxis.options.stackLabels, false, xRange, this.stack);\n                        stack.total = 0;\n                    }\n                }\n                // Assign current to next for the upcoming iteration\n                next = current;\n            }\n        }\n        // Call base method\n        return this.getGraphPath(points);\n    }\n    /* *\n     *\n     *  Class\n     *\n     * */\n    /**\n     * Provides support for broken axes.\n     * @private\n     * @class\n     */\n    var Additions = /** @class */ (function () {\n            /* *\n             *\n             *  Constructors\n             *\n             * */\n            function Additions(axis) {\n                this.hasBreaks = false;\n            this.axis = axis;\n        }\n        /* *\n         *\n         *  Static Functions\n         *\n         * */\n        /**\n         * @private\n         */\n        Additions.isInBreak = function (brk, val) {\n            var repeat = brk.repeat || Infinity,\n                from = brk.from,\n                length = brk.to - brk.from,\n                test = (val >= from ?\n                    (val - from) % repeat :\n                    repeat - ((from - val) % repeat));\n            var ret;\n            if (!brk.inclusive) {\n                ret = test < length && test !== 0;\n            }\n            else {\n                ret = test <= length;\n            }\n            return ret;\n        };\n        /**\n         * @private\n         */\n        Additions.lin2Val = function (val) {\n            var axis = this;\n            var brokenAxis = axis.brokenAxis;\n            var breakArray = brokenAxis && brokenAxis.breakArray;\n            if (!breakArray || !BrokenAxis_isNumber(val)) {\n                return val;\n            }\n            var nval = val,\n                brk,\n                i;\n            for (i = 0; i < breakArray.length; i++) {\n                brk = breakArray[i];\n                if (brk.from >= nval) {\n                    break;\n                }\n                else if (brk.to < nval) {\n                    nval += brk.len;\n                }\n                else if (Additions.isInBreak(brk, nval)) {\n                    nval += brk.len;\n                }\n            }\n            return nval;\n        };\n        /**\n         * @private\n         */\n        Additions.val2Lin = function (val) {\n            var axis = this;\n            var brokenAxis = axis.brokenAxis;\n            var breakArray = brokenAxis && brokenAxis.breakArray;\n            if (!breakArray || !BrokenAxis_isNumber(val)) {\n                return val;\n            }\n            var nval = val,\n                brk,\n                i;\n            for (i = 0; i < breakArray.length; i++) {\n                brk = breakArray[i];\n                if (brk.to <= val) {\n                    nval -= brk.len;\n                }\n                else if (brk.from >= val) {\n                    break;\n                }\n                else if (Additions.isInBreak(brk, val)) {\n                    nval -= (val - brk.from);\n                    break;\n                }\n            }\n            return nval;\n        };\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * Returns the first break found where the x is larger then break.from\n         * and smaller then break.to.\n         *\n         * @param {number} x\n         * The number which should be within a break.\n         *\n         * @param {Array<Highcharts.XAxisBreaksOptions>} breaks\n         * The array of breaks to search within.\n         *\n         * @return {Highcharts.XAxisBreaksOptions|undefined}\n         * Returns the first break found that matches, returns false if no break\n         * is found.\n         */\n        Additions.prototype.findBreakAt = function (x, breaks) {\n            return BrokenAxis_find(breaks, function (b) {\n                return b.from < x && x < b.to;\n            });\n        };\n        /**\n         * @private\n         */\n        Additions.prototype.isInAnyBreak = function (val, testKeep) {\n            var brokenAxis = this,\n                axis = brokenAxis.axis,\n                breaks = axis.options.breaks || [];\n            var i = breaks.length,\n                inbrk,\n                keep,\n                ret;\n            if (i && BrokenAxis_isNumber(val)) {\n                while (i--) {\n                    if (Additions.isInBreak(breaks[i], val)) {\n                        inbrk = true;\n                        if (!keep) {\n                            keep = BrokenAxis_pick(breaks[i].showPoints, !axis.isXAxis);\n                        }\n                    }\n                }\n                if (inbrk && testKeep) {\n                    ret = inbrk && !keep;\n                }\n                else {\n                    ret = inbrk;\n                }\n            }\n            return ret;\n        };\n        /**\n         * Dynamically set or unset breaks in an axis. This function in lighter\n         * than using Axis.update, and it also preserves animation.\n         *\n         * @private\n         * @function Highcharts.Axis#setBreaks\n         *\n         * @param {Array<Highcharts.XAxisBreaksOptions>} [breaks]\n         * The breaks to add. When `undefined` it removes existing breaks.\n         *\n         * @param {boolean} [redraw=true]\n         * Whether to redraw the chart immediately.\n         */\n        Additions.prototype.setBreaks = function (breaks, redraw) {\n            var brokenAxis = this,\n                axis = brokenAxis.axis,\n                time = axis.chart.time,\n                hasBreaks = BrokenAxis_isArray(breaks) &&\n                    !!breaks.length &&\n                    !!Object.keys(breaks[0]).length; // Check for [{}], #16368.\n                axis.isDirty = brokenAxis.hasBreaks !== hasBreaks;\n            brokenAxis.hasBreaks = hasBreaks;\n            // Compile string dates\n            breaks === null || breaks === void 0 ? void 0 : breaks.forEach(function (brk) {\n                brk.from = time.parse(brk.from) || 0;\n                brk.to = time.parse(brk.to) || 0;\n            });\n            if (breaks !== axis.options.breaks) {\n                axis.options.breaks = axis.userOptions.breaks = breaks;\n            }\n            axis.forceRedraw = true; // Force recalculation in setScale\n            // Recalculate series related to the axis.\n            axis.series.forEach(function (series) {\n                series.isDirty = true;\n            });\n            if (!hasBreaks && axis.val2lin === Additions.val2Lin) {\n                // Revert to prototype functions\n                delete axis.val2lin;\n                delete axis.lin2val;\n            }\n            if (hasBreaks) {\n                axis.userOptions.ordinal = false;\n                axis.lin2val = Additions.lin2Val;\n                axis.val2lin = Additions.val2Lin;\n                axis.setExtremes = function (newMin, newMax, redraw, animation, eventArguments) {\n                    // If trying to set extremes inside a break, extend min to\n                    // after, and max to before the break ( #3857 )\n                    if (brokenAxis.hasBreaks) {\n                        var breaks_1 = (this.options.breaks || []);\n                        var axisBreak = void 0;\n                        while ((axisBreak = brokenAxis.findBreakAt(newMin, breaks_1))) {\n                            newMin = axisBreak.to;\n                        }\n                        while ((axisBreak = brokenAxis.findBreakAt(newMax, breaks_1))) {\n                            newMax = axisBreak.from;\n                        }\n                        // If both min and max is within the same break.\n                        if (newMax < newMin) {\n                            newMax = newMin;\n                        }\n                    }\n                    axis.constructor.prototype.setExtremes.call(this, newMin, newMax, redraw, animation, eventArguments);\n                };\n                axis.setAxisTranslation = function () {\n                    axis.constructor.prototype.setAxisTranslation.call(this);\n                    brokenAxis.unitLength = void 0;\n                    if (brokenAxis.hasBreaks) {\n                        var breaks_2 = axis.options.breaks || [], \n                            // Temporary one:\n                            breakArrayT_1 = [],\n                            breakArray_1 = [],\n                            pointRangePadding = BrokenAxis_pick(axis.pointRangePadding, 0);\n                        var length_1 = 0,\n                            inBrk_1,\n                            repeat_1,\n                            min_1 = axis.userMin || axis.min,\n                            max_1 = axis.userMax || axis.max,\n                            start_1,\n                            i_1;\n                        // Min & max check (#4247)\n                        breaks_2.forEach(function (brk) {\n                            repeat_1 = brk.repeat || Infinity;\n                            if (BrokenAxis_isNumber(min_1) && BrokenAxis_isNumber(max_1)) {\n                                if (Additions.isInBreak(brk, min_1)) {\n                                    min_1 += ((brk.to % repeat_1) -\n                                        (min_1 % repeat_1));\n                                }\n                                if (Additions.isInBreak(brk, max_1)) {\n                                    max_1 -= ((max_1 % repeat_1) -\n                                        (brk.from % repeat_1));\n                                }\n                            }\n                        });\n                        // Construct an array holding all breaks in the axis\n                        breaks_2.forEach(function (brk) {\n                            start_1 = brk.from;\n                            repeat_1 = brk.repeat || Infinity;\n                            if (BrokenAxis_isNumber(min_1) && BrokenAxis_isNumber(max_1)) {\n                                while (start_1 - repeat_1 > min_1) {\n                                    start_1 -= repeat_1;\n                                }\n                                while (start_1 < min_1) {\n                                    start_1 += repeat_1;\n                                }\n                                for (i_1 = start_1; i_1 < max_1; i_1 += repeat_1) {\n                                    breakArrayT_1.push({\n                                        value: i_1,\n                                        move: 'in'\n                                    });\n                                    breakArrayT_1.push({\n                                        value: i_1 + brk.to - brk.from,\n                                        move: 'out',\n                                        size: brk.breakSize\n                                    });\n                                }\n                            }\n                        });\n                        breakArrayT_1.sort(function (a, b) {\n                            return ((a.value === b.value) ?\n                                ((a.move === 'in' ? 0 : 1) -\n                                    (b.move === 'in' ? 0 : 1)) :\n                                a.value - b.value);\n                        });\n                        // Simplify the breaks\n                        inBrk_1 = 0;\n                        start_1 = min_1;\n                        breakArrayT_1.forEach(function (brk) {\n                            inBrk_1 += (brk.move === 'in' ? 1 : -1);\n                            if (inBrk_1 === 1 && brk.move === 'in') {\n                                start_1 = brk.value;\n                            }\n                            if (inBrk_1 === 0 && BrokenAxis_isNumber(start_1)) {\n                                breakArray_1.push({\n                                    from: start_1,\n                                    to: brk.value,\n                                    len: brk.value - start_1 - (brk.size || 0)\n                                });\n                                length_1 += (brk.value -\n                                    start_1 -\n                                    (brk.size || 0));\n                            }\n                        });\n                        brokenAxis.breakArray = breakArray_1;\n                        // Used with staticScale, and below the actual axis\n                        // length, when breaks are subtracted.\n                        if (BrokenAxis_isNumber(min_1) &&\n                            BrokenAxis_isNumber(max_1) &&\n                            BrokenAxis_isNumber(axis.min)) {\n                            brokenAxis.unitLength = max_1 - min_1 - length_1 +\n                                pointRangePadding;\n                            BrokenAxis_fireEvent(axis, 'afterBreaks');\n                            if (axis.staticScale) {\n                                axis.transA = axis.staticScale;\n                            }\n                            else if (brokenAxis.unitLength) {\n                                axis.transA *=\n                                    (max_1 - axis.min + pointRangePadding) /\n                                        brokenAxis.unitLength;\n                            }\n                            if (pointRangePadding) {\n                                axis.minPixelPadding =\n                                    axis.transA * (axis.minPointOffset || 0);\n                            }\n                            axis.min = min_1;\n                            axis.max = max_1;\n                        }\n                    }\n                };\n            }\n            if (BrokenAxis_pick(redraw, true)) {\n                axis.chart.redraw();\n            }\n        };\n        return Additions;\n    }());\n    BrokenAxis.Additions = Additions;\n})(BrokenAxis || (BrokenAxis = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Axis_BrokenAxis = (BrokenAxis);\n\n;// ./code/es5/es-modules/masters/modules/broken-axis.src.js\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.BrokenAxis = G.BrokenAxis || Axis_BrokenAxis;\nG.BrokenAxis.compose(G.Axis, G.Series);\n/* harmony default export */ var broken_axis_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/ApproximationRegistry.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Define the available approximation types. The data grouping\n * approximations takes an array or numbers as the first parameter. In case\n * of ohlc, four arrays are sent in as four parameters. Each array consists\n * only of numbers. In case null values belong to the group, the property\n * .hasNulls will be set to true on the array.\n *\n * @product highstock\n *\n * @private\n */\nvar ApproximationRegistry = {\n// Approximations added programmatically\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var DataGrouping_ApproximationRegistry = (ApproximationRegistry);\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/ApproximationDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar ApproximationDefaults_arrayMax = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMax, ApproximationDefaults_arrayMin = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).arrayMin, ApproximationDefaults_correctFloat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).correctFloat, ApproximationDefaults_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, ApproximationDefaults_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction average(arr) {\n    var len = arr.length;\n    var ret = sum(arr);\n    // If we have a number, return it divided by the length. If not,\n    // return null or undefined based on what the sum method finds.\n    if (ApproximationDefaults_isNumber(ret) && len) {\n        ret = ApproximationDefaults_correctFloat(ret / len);\n    }\n    return ret;\n}\n/**\n * The same as average, but for series with multiple values, like area ranges.\n * @private\n */\nfunction averages() {\n    var ret = [];\n    [].forEach.call(arguments, function (arr) {\n        ret.push(average(arr));\n    });\n    // Return undefined when first elem. is undefined and let\n    // sum method handle null (#7377)\n    return typeof ret[0] === 'undefined' ? void 0 : ret;\n}\n/**\n * @private\n */\nfunction ApproximationDefaults_close(arr) {\n    return arr.length ?\n        arr[arr.length - 1] :\n        (arr.hasNulls ? null : void 0);\n}\n/**\n * @private\n */\nfunction high(arr) {\n    return arr.length ?\n        ApproximationDefaults_arrayMax(arr) :\n        (arr.hasNulls ? null : void 0);\n}\n/**\n * HLC, OHLC and range are special cases where a multidimensional array is input\n * and an array is output.\n * @private\n */\nfunction hlc(high, low, close) {\n    high = DataGrouping_ApproximationRegistry.high(high);\n    low = DataGrouping_ApproximationRegistry.low(low);\n    close = DataGrouping_ApproximationRegistry.close(close);\n    if (ApproximationDefaults_isNumber(high) ||\n        ApproximationDefaults_isNumber(low) ||\n        ApproximationDefaults_isNumber(close)) {\n        return [high, low, close];\n    }\n}\n/**\n * @private\n */\nfunction low(arr) {\n    return arr.length ?\n        ApproximationDefaults_arrayMin(arr) :\n        (arr.hasNulls ? null : void 0);\n}\n/**\n * @private\n */\nfunction ohlc(open, high, low, close) {\n    open = DataGrouping_ApproximationRegistry.open(open);\n    high = DataGrouping_ApproximationRegistry.high(high);\n    low = DataGrouping_ApproximationRegistry.low(low);\n    close = DataGrouping_ApproximationRegistry.close(close);\n    if (ApproximationDefaults_isNumber(open) ||\n        ApproximationDefaults_isNumber(high) ||\n        ApproximationDefaults_isNumber(low) ||\n        ApproximationDefaults_isNumber(close)) {\n        return [open, high, low, close];\n    }\n}\n/**\n * @private\n */\nfunction ApproximationDefaults_open(arr) {\n    return arr.length ? arr[0] : (arr.hasNulls ? null : void 0);\n}\n/**\n * @private\n */\nfunction range(low, high) {\n    low = DataGrouping_ApproximationRegistry.low(low);\n    high = DataGrouping_ApproximationRegistry.high(high);\n    if (ApproximationDefaults_isNumber(low) || ApproximationDefaults_isNumber(high)) {\n        return [low, high];\n    }\n    if (low === null && high === null) {\n        return null;\n    }\n    // Else, return is undefined\n}\n/**\n * @private\n */\nfunction sum(arr) {\n    var len = arr.length,\n        ret;\n    // 1. it consists of nulls exclusive\n    if (!len && arr.hasNulls) {\n        ret = null;\n        // 2. it has a length and real values\n    }\n    else if (len) {\n        ret = 0;\n        while (len--) {\n            ret += arr[len];\n        }\n    }\n    // 3. it has zero length, so just return undefined\n    // => doNothing()\n    return ret;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar ApproximationDefaults = {\n    average: average,\n    averages: averages,\n    close: ApproximationDefaults_close,\n    high: high,\n    hlc: hlc,\n    low: low,\n    ohlc: ohlc,\n    open: ApproximationDefaults_open,\n    range: range,\n    sum: sum\n};\nApproximationDefaults_extend(DataGrouping_ApproximationRegistry, ApproximationDefaults);\n/* harmony default export */ var DataGrouping_ApproximationDefaults = (ApproximationDefaults);\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Common options\n * @private\n */\nvar common = {\n    /// enabled: null, // (true for stock charts, false for basic),\n    // forced: undefined,\n    groupPixelWidth: 2,\n    // The first one is the point or start value, the second is the start\n    // value if we're dealing with range, the third one is the end value if\n    // dealing with a range\n    dateTimeLabelFormats: {\n        millisecond: [\n            '%[AebHMSL]',\n            '%[AebHMSL]',\n            '-%[HMSL]'\n        ],\n        second: [\n            '%[AebHMS]',\n            '%[AebHMS]',\n            '-%[HMS]'\n        ],\n        minute: [\n            '%[AebHM]',\n            '%[AebHM]',\n            '-%[HM]'\n        ],\n        hour: [\n            '%[AebHM]',\n            '%[AebHM]',\n            '-%[HM]'\n        ],\n        day: [\n            '%[AebY]',\n            '%[Aeb]',\n            '-%[AebY]'\n        ],\n        week: [\n            'week from %[AebY]',\n            '%[Aeb]',\n            '-%[AebY]'\n        ],\n        month: [\n            '%[BY]',\n            '%[B]',\n            '-%[BY]'\n        ],\n        year: [\n            '%Y',\n            '%Y',\n            '-%Y'\n        ]\n    }\n    /// smoothed = false, // enable this for navigator series only\n};\n/**\n * Extends common options\n * @private\n */\nvar seriesSpecific = {\n    line: {},\n    spline: {},\n    area: {},\n    areaspline: {},\n    arearange: {},\n    column: {\n        groupPixelWidth: 10\n    },\n    columnrange: {\n        groupPixelWidth: 10\n    },\n    candlestick: {\n        groupPixelWidth: 10\n    },\n    ohlc: {\n        groupPixelWidth: 5\n    },\n    hlc: {\n        groupPixelWidth: 5\n        // Move to HeikinAshiSeries.ts after refactoring data grouping.\n    },\n    heikinashi: {\n        groupPixelWidth: 10\n    }\n};\n/**\n * Units are defined in a separate array to allow complete overriding in\n * case of a user option.\n * @private\n */\nvar units = [\n    [\n        'millisecond', // Unit name\n        [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // Allowed multiples\n    ], [\n        'second',\n        [1, 2, 5, 10, 15, 30]\n    ], [\n        'minute',\n        [1, 2, 5, 10, 15, 30]\n    ], [\n        'hour',\n        [1, 2, 3, 4, 6, 8, 12]\n    ], [\n        'day',\n        [1]\n    ], [\n        'week',\n        [1]\n    ], [\n        'month',\n        [1, 3, 6]\n    ], [\n        'year',\n        null\n    ]\n];\n/* *\n *\n *  Default Export\n *\n * */\nvar DataGroupingDefaults = {\n    common: common,\n    seriesSpecific: seriesSpecific,\n    units: units\n};\n/* harmony default export */ var DataGrouping_DataGroupingDefaults = (DataGroupingDefaults);\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar DataGroupingAxisComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, DataGroupingAxisComposition_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, DataGroupingAxisComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, DataGroupingAxisComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Variables\n *\n * */\nvar AxisConstructor;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Check the groupPixelWidth and apply the grouping if needed.\n * Fired only after processing the data.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#applyGrouping\n */\nfunction applyGrouping(e) {\n    var axis = this,\n        series = axis.series;\n    // Reset the groupPixelWidth for all series, #17141.\n    series.forEach(function (series) {\n        series.groupPixelWidth = void 0; // #2110\n    });\n    series.forEach(function (series) {\n        series.groupPixelWidth = (axis.getGroupPixelWidth &&\n            axis.getGroupPixelWidth());\n        if (series.groupPixelWidth) {\n            series.hasProcessed = true; // #2692\n        }\n        // Fire independing on series.groupPixelWidth to always set a proper\n        // dataGrouping state, (#16238)\n        series.applyGrouping(!!e.hasExtremesChanged);\n    });\n}\n/**\n * @private\n */\nfunction DataGroupingAxisComposition_compose(AxisClass) {\n    AxisConstructor = AxisClass;\n    var axisProto = AxisClass.prototype;\n    if (!axisProto.applyGrouping) {\n        DataGroupingAxisComposition_addEvent(AxisClass, 'afterSetScale', onAfterSetScale);\n        // When all series are processed, calculate the group pixel width and\n        // then if this value is different than zero apply groupings.\n        DataGroupingAxisComposition_addEvent(AxisClass, 'postProcessData', applyGrouping);\n        DataGroupingAxisComposition_extend(axisProto, {\n            applyGrouping: applyGrouping,\n            getGroupPixelWidth: getGroupPixelWidth,\n            setDataGrouping: setDataGrouping\n        });\n    }\n}\n/**\n * Get the data grouping pixel width based on the greatest defined individual\n * width of the axis' series, and if whether one of the axes need grouping.\n * @private\n */\nfunction getGroupPixelWidth() {\n    var series = this.series;\n    var i = series.length,\n        groupPixelWidth = 0,\n        doGrouping = false,\n        dataLength,\n        dgOptions;\n    // If one of the series needs grouping, apply it to all (#1634)\n    while (i--) {\n        dgOptions = series[i].options.dataGrouping;\n        if (dgOptions) { // #2692\n            // If multiple series are compared on the same x axis, give them the\n            // same group pixel width (#334)\n            groupPixelWidth = Math.max(groupPixelWidth, \n            // Fallback to commonOptions (#9693)\n            DataGroupingAxisComposition_pick(dgOptions.groupPixelWidth, DataGrouping_DataGroupingDefaults.common.groupPixelWidth));\n            dataLength = (series[i].dataTable.modified ||\n                series[i].dataTable).rowCount;\n            // Execute grouping if the amount of points is greater than the\n            // limit defined in groupPixelWidth\n            if (series[i].groupPixelWidth ||\n                (dataLength >\n                    (this.chart.plotSizeX / groupPixelWidth)) ||\n                (dataLength && dgOptions.forced)) {\n                doGrouping = true;\n            }\n        }\n    }\n    return doGrouping ? groupPixelWidth : 0;\n}\n/**\n * When resetting the scale reset the hasProcessed flag to avoid taking\n * previous data grouping of neighbour series into account when determining\n * group pixel width (#2692).\n * @private\n */\nfunction onAfterSetScale() {\n    this.series.forEach(function (series) {\n        series.hasProcessed = false;\n    });\n}\n/**\n * Highcharts Stock only. Force data grouping on all the axis' series.\n *\n * @product highstock\n *\n * @function Highcharts.Axis#setDataGrouping\n *\n * @param {boolean|Highcharts.DataGroupingOptionsObject} [dataGrouping]\n *        A `dataGrouping` configuration. Use `false` to disable data grouping\n *        dynamically.\n *\n * @param {boolean} [redraw=true]\n *        Whether to redraw the chart or wait for a later call to\n *        {@link Chart#redraw}.\n */\nfunction setDataGrouping(dataGrouping, redraw) {\n    var axis = this;\n    var i;\n    redraw = DataGroupingAxisComposition_pick(redraw, true);\n    if (!dataGrouping) {\n        dataGrouping = {\n            forced: false,\n            units: null\n        };\n    }\n    // Axis is instantiated, update all series\n    if (this instanceof AxisConstructor) {\n        i = this.series.length;\n        while (i--) {\n            this.series[i].update({\n                dataGrouping: dataGrouping\n            }, false);\n        }\n        // Axis not yet instantiated, alter series options\n    }\n    else {\n        this.chart.options.series.forEach(function (seriesOptions) {\n            // Merging dataGrouping options with already defined options #16759\n            seriesOptions.dataGrouping = typeof dataGrouping === 'boolean' ?\n                dataGrouping :\n                DataGroupingAxisComposition_merge(dataGrouping, seriesOptions.dataGrouping);\n        });\n    }\n    // Clear ordinal slope, so we won't accidentally use the old one (#7827)\n    if (axis.ordinal) {\n        axis.ordinal.slope = void 0;\n    }\n    if (redraw) {\n        this.chart.redraw();\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar DataGroupingAxisComposition = {\n    compose: DataGroupingAxisComposition_compose\n};\n/* harmony default export */ var DataGrouping_DataGroupingAxisComposition = (DataGroupingAxisComposition);\n\n;// ./code/es5/es-modules/Core/Axis/DateTimeAxis.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar DateTimeAxis_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, getMagnitude = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getMagnitude, normalizeTickInterval = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).normalizeTickInterval, DateTimeAxis_timeUnits = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).timeUnits;\n/* *\n *\n *  Composition\n *\n * */\n/* eslint-disable valid-jsdoc */\nvar DateTimeAxis;\n(function (DateTimeAxis) {\n    /* *\n     *\n     *  Declarations\n     *\n     * */\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Extends axis class with date and time support.\n     * @private\n     */\n    function compose(AxisClass) {\n        if (!AxisClass.keepProps.includes('dateTime')) {\n            AxisClass.keepProps.push('dateTime');\n            var axisProto = AxisClass.prototype;\n            axisProto.getTimeTicks = getTimeTicks;\n            DateTimeAxis_addEvent(AxisClass, 'afterSetType', onAfterSetType);\n        }\n        return AxisClass;\n    }\n    DateTimeAxis.compose = compose;\n    /**\n     * Set the tick positions to a time unit that makes sense, for example\n     * on the first of each month or on every Monday. Return an array with\n     * the time positions. Used in datetime axes as well as for grouping\n     * data on a datetime axis.\n     *\n     * @private\n     * @function Highcharts.Axis#getTimeTicks\n     * @param {Highcharts.TimeNormalizeObject} normalizedInterval\n     * The interval in axis values (ms) and the count.\n     * @param {number} min\n     * The minimum in axis values.\n     * @param {number} max\n     * The maximum in axis values.\n     */\n    function getTimeTicks() {\n        return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n    }\n    /**\n     * @private\n     */\n    function onAfterSetType() {\n        if (this.type !== 'datetime') {\n            this.dateTime = void 0;\n            return;\n        }\n        if (!this.dateTime) {\n            this.dateTime = new Additions(this);\n        }\n    }\n    /* *\n     *\n     *  Classes\n     *\n     * */\n    var Additions = /** @class */ (function () {\n            /* *\n             *\n             *  Constructors\n             *\n             * */\n            function Additions(axis) {\n                this.axis = axis;\n        }\n        /* *\n         *\n         *  Functions\n         *\n         * */\n        /**\n         * Get a normalized tick interval for dates. Returns a configuration\n         * object with unit range (interval), count and name. Used to prepare\n         * data for `getTimeTicks`. Previously this logic was part of\n         * getTimeTicks, but as `getTimeTicks` now runs of segments in stock\n         * charts, the normalizing logic was extracted in order to prevent it\n         * for running over again for each segment having the same interval.\n         * #662, #697.\n         * @private\n         */\n        Additions.prototype.normalizeTimeTickInterval = function (tickInterval, unitsOption) {\n            var units = (unitsOption || [[\n                        // Unit name\n                        'millisecond',\n                        // Allowed multiples\n                        [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]\n                    ],\n                [\n                        'second',\n                        [1, 2, 5, 10, 15, 30]\n                    ],\n                [\n                        'minute',\n                        [1, 2, 5, 10, 15, 30]\n                    ],\n                [\n                        'hour',\n                        [1, 2, 3, 4, 6, 8, 12]\n                    ],\n                [\n                        'day',\n                        [1, 2]\n                    ],\n                [\n                        'week',\n                        [1, 2]\n                    ],\n                [\n                        'month',\n                        [1, 2, 3, 4, 6]\n                    ],\n                [\n                        'year',\n                        null\n                    ]]);\n            var unit = units[units.length - 1], // Default unit is years\n                interval = DateTimeAxis_timeUnits[unit[0]],\n                multiples = unit[1],\n                i;\n            // Loop through the units to find the one that best fits the\n            // tickInterval\n            for (i = 0; i < units.length; i++) {\n                unit = units[i];\n                interval = DateTimeAxis_timeUnits[unit[0]];\n                multiples = unit[1];\n                if (units[i + 1]) {\n                    // `lessThan` is in the middle between the highest multiple\n                    // and the next unit.\n                    var lessThan = (interval *\n                            multiples[multiples.length - 1] +\n                            DateTimeAxis_timeUnits[units[i + 1][0]]) / 2;\n                    // Break and keep the current unit\n                    if (tickInterval <= lessThan) {\n                        break;\n                    }\n                }\n            }\n            // Prevent 2.5 years intervals, though 25, 250 etc. are allowed\n            if (interval === DateTimeAxis_timeUnits.year && tickInterval < 5 * interval) {\n                multiples = [1, 2, 5];\n            }\n            // Get the count\n            var count = normalizeTickInterval(tickInterval / interval, multiples, unit[0] === 'year' ? // #1913, #2360\n                    Math.max(getMagnitude(tickInterval / interval), 1) :\n                    1);\n            return {\n                unitRange: interval,\n                count: count,\n                unitName: unit[0]\n            };\n        };\n        /**\n         * Get the best date format for a specific X value based on the closest\n         * point range on the axis.\n         *\n         * @private\n         */\n        Additions.prototype.getXDateFormat = function (x, dateTimeLabelFormats) {\n            var axis = this.axis,\n                time = axis.chart.time;\n            return axis.closestPointRange ?\n                time.getDateFormat(axis.closestPointRange, x, axis.options.startOfWeek, dateTimeLabelFormats) ||\n                    // #2546, 2581\n                    time.resolveDTLFormat(dateTimeLabelFormats.year).main :\n                time.resolveDTLFormat(dateTimeLabelFormats.day).main;\n        };\n        return Additions;\n    }());\n    DateTimeAxis.Additions = Additions;\n})(DateTimeAxis || (DateTimeAxis = {}));\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Axis_DateTimeAxis = (DateTimeAxis);\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\n\n\n\nvar DataGroupingSeriesComposition_seriesProto = (highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default()).series.prototype;\n\nvar DataGroupingSeriesComposition_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, DataGroupingSeriesComposition_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, DataGroupingSeriesComposition_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, DataGroupingSeriesComposition_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, DataGroupingSeriesComposition_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, DataGroupingSeriesComposition_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, DataGroupingSeriesComposition_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, DataGroupingSeriesComposition_splat = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).splat;\n/* *\n *\n *  Constants\n *\n * */\nvar baseGeneratePoints = DataGroupingSeriesComposition_seriesProto.generatePoints;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction adjustExtremes(xAxis, groupedXData) {\n    // Make sure the X axis extends to show the first group (#2533)\n    // But only for visible series (#5493, #6393)\n    if (DataGroupingSeriesComposition_defined(groupedXData[0]) &&\n        DataGroupingSeriesComposition_isNumber(xAxis.min) &&\n        DataGroupingSeriesComposition_isNumber(xAxis.dataMin) &&\n        groupedXData[0] < xAxis.min) {\n        if ((!DataGroupingSeriesComposition_defined(xAxis.options.min) &&\n            xAxis.min <= xAxis.dataMin) ||\n            xAxis.min === xAxis.dataMin) {\n            xAxis.min = Math.min(groupedXData[0], xAxis.min);\n        }\n        xAxis.dataMin = Math.min(groupedXData[0], xAxis.dataMin);\n    }\n    // When the last anchor set, change the extremes that\n    // the last point is visible (#12455).\n    if (DataGroupingSeriesComposition_defined(groupedXData[groupedXData.length - 1]) &&\n        DataGroupingSeriesComposition_isNumber(xAxis.max) &&\n        DataGroupingSeriesComposition_isNumber(xAxis.dataMax) &&\n        groupedXData[groupedXData.length - 1] > xAxis.max) {\n        if ((!DataGroupingSeriesComposition_defined(xAxis.options.max) &&\n            DataGroupingSeriesComposition_isNumber(xAxis.dataMax) &&\n            xAxis.max >= xAxis.dataMax) || xAxis.max === xAxis.dataMax) {\n            xAxis.max = Math.max(groupedXData[groupedXData.length - 1], xAxis.max);\n        }\n        xAxis.dataMax = Math.max(groupedXData[groupedXData.length - 1], xAxis.dataMax);\n    }\n}\n/**\n * @private\n */\nfunction anchorPoints(series, groupedXData, xMax) {\n    var options = series.options,\n        dataGroupingOptions = options.dataGrouping,\n        totalRange = (series.currentDataGrouping && series.currentDataGrouping.gapSize),\n        xData = series.getColumn('x');\n    if (!(dataGroupingOptions &&\n        xData.length &&\n        totalRange &&\n        series.groupMap)) {\n        return;\n    }\n    var groupedDataLastIndex = groupedXData.length - 1,\n        anchor = dataGroupingOptions.anchor,\n        firstAnchor = dataGroupingOptions.firstAnchor,\n        lastAnchor = dataGroupingOptions.lastAnchor;\n    var anchorIndexIterator = groupedXData.length - 1,\n        anchorFirstIndex = 0;\n    // Change the first point position, but only when it is\n    // the first point in the data set not in the current zoom.\n    if (firstAnchor && xData[0] >= groupedXData[0]) {\n        anchorFirstIndex++;\n        var groupStart = series.groupMap[0].start,\n            groupLength = series.groupMap[0].length;\n        var firstGroupEnd = void 0;\n        if (DataGroupingSeriesComposition_isNumber(groupStart) && DataGroupingSeriesComposition_isNumber(groupLength)) {\n            firstGroupEnd = groupStart + (groupLength - 1);\n        }\n        groupedXData[0] = {\n            start: groupedXData[0],\n            middle: groupedXData[0] + 0.5 * totalRange,\n            end: groupedXData[0] + totalRange,\n            firstPoint: xData[0],\n            lastPoint: firstGroupEnd && xData[firstGroupEnd]\n        }[firstAnchor];\n    }\n    // Change the last point position but only when it is\n    // the last point in the data set not in the current zoom,\n    // or if it is not the 1st point simultaneously.\n    if (groupedDataLastIndex > 0 &&\n        lastAnchor &&\n        totalRange &&\n        groupedXData[groupedDataLastIndex] >= xMax - totalRange) {\n        anchorIndexIterator--;\n        var lastGroupStart = series.groupMap[series.groupMap.length - 1].start;\n        groupedXData[groupedDataLastIndex] = {\n            start: groupedXData[groupedDataLastIndex],\n            middle: groupedXData[groupedDataLastIndex] + 0.5 * totalRange,\n            end: groupedXData[groupedDataLastIndex] + totalRange,\n            firstPoint: lastGroupStart && xData[lastGroupStart],\n            lastPoint: xData[xData.length - 1]\n        }[lastAnchor];\n    }\n    if (anchor && anchor !== 'start') {\n        var shiftInterval = (totalRange *\n                { middle: 0.5,\n            end: 1 }[anchor]);\n        // Anchor the rest of the points apart from the ones, that were\n        // previously moved.\n        while (anchorIndexIterator >= anchorFirstIndex) {\n            groupedXData[anchorIndexIterator] += shiftInterval;\n            anchorIndexIterator--;\n        }\n    }\n}\n/**\n * For the processed data, calculate the grouped data if needed.\n *\n * @private\n * @function Highcharts.Series#applyGrouping\n */\nfunction DataGroupingSeriesComposition_applyGrouping(hasExtremesChanged) {\n    var series = this,\n        chart = series.chart,\n        options = series.options,\n        dataGroupingOptions = options.dataGrouping,\n        groupingEnabled = series.allowDG !== false && dataGroupingOptions &&\n            DataGroupingSeriesComposition_pick(dataGroupingOptions.enabled,\n        chart.options.isStock),\n        reserveSpace = series.reserveSpace(),\n        lastDataGrouping = this.currentDataGrouping;\n    var currentDataGrouping,\n        croppedData,\n        revertRequireSorting = false;\n    // Data needs to be sorted for dataGrouping\n    if (groupingEnabled && !series.requireSorting) {\n        series.requireSorting = revertRequireSorting = true;\n    }\n    // Skip if skipDataGrouping method returns false or if grouping is disabled\n    // (in that order).\n    var skip = skipDataGrouping(series,\n        hasExtremesChanged) === false || !groupingEnabled;\n    // Revert original requireSorting value if changed\n    if (revertRequireSorting) {\n        series.requireSorting = false;\n    }\n    if (skip) {\n        return;\n    }\n    series.destroyGroupedData();\n    var table = dataGroupingOptions.groupAll ?\n            series.dataTable :\n            series.dataTable.modified || series.dataTable,\n        processedXData = series.getColumn('x', !dataGroupingOptions.groupAll),\n        xData = processedXData,\n        plotSizeX = chart.plotSizeX,\n        xAxis = series.xAxis,\n        extremes = xAxis.getExtremes(),\n        ordinal = xAxis.options.ordinal,\n        groupPixelWidth = series.groupPixelWidth;\n    var i,\n        hasGroupedData;\n    // Execute grouping if the amount of points is greater than the limit\n    // defined in groupPixelWidth\n    if (groupPixelWidth &&\n        xData &&\n        table.rowCount &&\n        plotSizeX &&\n        DataGroupingSeriesComposition_isNumber(extremes.min)) {\n        hasGroupedData = true;\n        // Force recreation of point instances in series.translate, #5699\n        series.isDirty = true;\n        series.points = null; // #6709\n        var xMin = extremes.min,\n            xMax = extremes.max,\n            groupIntervalFactor = (ordinal &&\n                xAxis.ordinal &&\n                xAxis.ordinal.getGroupIntervalFactor(xMin,\n            xMax,\n            series)) || 1,\n            interval = (groupPixelWidth * (xMax - xMin) / plotSizeX) *\n                groupIntervalFactor,\n            groupPositions = xAxis.getTimeTicks(Axis_DateTimeAxis.Additions.prototype.normalizeTimeTickInterval(interval,\n            dataGroupingOptions.units ||\n                DataGrouping_DataGroupingDefaults.units), \n            // Processed data may extend beyond axis (#4907)\n            Math.min(xMin,\n            xData[0]),\n            Math.max(xMax,\n            xData[xData.length - 1]),\n            xAxis.options.startOfWeek,\n            processedXData,\n            series.closestPointRange),\n            groupedData = DataGroupingSeriesComposition_seriesProto.groupData.apply(series,\n            [\n                table,\n                groupPositions,\n                dataGroupingOptions.approximation\n            ]);\n        var modified = groupedData.modified,\n            groupedXData = modified.getColumn('x',\n            true),\n            gapSize = 0;\n        // The smoothed option is deprecated, instead, there is a fallback\n        // to the new anchoring mechanism. #12455.\n        if ((dataGroupingOptions === null || dataGroupingOptions === void 0 ? void 0 : dataGroupingOptions.smoothed) &&\n            modified.rowCount) {\n            dataGroupingOptions.firstAnchor = 'firstPoint';\n            dataGroupingOptions.anchor = 'middle';\n            dataGroupingOptions.lastAnchor = 'lastPoint';\n            DataGroupingSeriesComposition_error(32, false, chart, {\n                'dataGrouping.smoothed': 'use dataGrouping.anchor'\n            });\n        }\n        // Record what data grouping values were used\n        for (i = 1; i < groupPositions.length; i++) {\n            // The grouped gapSize needs to be the largest distance between\n            // the group to capture varying group sizes like months or DST\n            // crossing (#10000). Also check that the gap is not at the\n            // start of a segment.\n            if (!groupPositions.info.segmentStarts ||\n                groupPositions.info.segmentStarts.indexOf(i) === -1) {\n                gapSize = Math.max(groupPositions[i] - groupPositions[i - 1], gapSize);\n            }\n        }\n        currentDataGrouping = groupPositions.info;\n        currentDataGrouping.gapSize = gapSize;\n        series.closestPointRange = groupPositions.info.totalRange;\n        series.groupMap = groupedData.groupMap;\n        series.currentDataGrouping = currentDataGrouping;\n        anchorPoints(series, groupedXData || [], xMax);\n        if (reserveSpace && groupedXData) {\n            adjustExtremes(xAxis, groupedXData);\n        }\n        // We calculated all group positions but we should render only the ones\n        // within the visible range\n        if (dataGroupingOptions.groupAll) {\n            // Keep the reference to all grouped points for further calculation,\n            // used in Heikin-Ashi and hollow candlestick series.\n            series.allGroupedTable = modified;\n            croppedData = series.cropData(modified, xAxis.min || 0, xAxis.max || 0);\n            modified = croppedData.modified;\n            groupedXData = modified.getColumn('x');\n            series.cropStart = croppedData.start; // #15005\n        }\n        // Set the modified table\n        series.dataTable.modified = modified;\n    }\n    else {\n        series.groupMap = void 0;\n        series.currentDataGrouping = void 0;\n    }\n    series.hasGroupedData = hasGroupedData;\n    series.preventGraphAnimation =\n        (lastDataGrouping && lastDataGrouping.totalRange) !==\n            (currentDataGrouping && currentDataGrouping.totalRange);\n}\n/**\n * @private\n */\nfunction DataGroupingSeriesComposition_compose(SeriesClass) {\n    var seriesProto = SeriesClass.prototype;\n    if (!seriesProto.applyGrouping) {\n        var PointClass = SeriesClass.prototype.pointClass;\n        // Override point prototype to throw a warning when trying to update\n        // grouped points.\n        DataGroupingSeriesComposition_addEvent(PointClass, 'update', function () {\n            if (this.dataGroup) {\n                DataGroupingSeriesComposition_error(24, false, this.series.chart);\n                return false;\n            }\n        });\n        DataGroupingSeriesComposition_addEvent(SeriesClass, 'afterSetOptions', onAfterSetOptions);\n        DataGroupingSeriesComposition_addEvent(SeriesClass, 'destroy', destroyGroupedData);\n        DataGroupingSeriesComposition_extend(seriesProto, {\n            applyGrouping: DataGroupingSeriesComposition_applyGrouping,\n            destroyGroupedData: destroyGroupedData,\n            generatePoints: generatePoints,\n            getDGApproximation: getDGApproximation,\n            groupData: groupData\n        });\n    }\n}\n/**\n * Destroy the grouped data points. #622, #740\n * @private\n */\nfunction destroyGroupedData() {\n    // Clear previous groups\n    if (this.groupedData) {\n        this.groupedData.forEach(function (point, i) {\n            if (point) {\n                this.groupedData[i] = point.destroy ?\n                    point.destroy() : null;\n            }\n        }, this);\n        // Clears all:\n        // - `this.groupedData`\n        // - `this.points`\n        // - `preserve` object in series.update()\n        this.groupedData.length = 0;\n        delete this.allGroupedTable;\n    }\n}\n/**\n * Override the generatePoints method by adding a reference to grouped data\n * @private\n */\nfunction generatePoints() {\n    baseGeneratePoints.apply(this);\n    // Record grouped data in order to let it be destroyed the next time\n    // processData runs\n    this.destroyGroupedData(); // #622\n    this.groupedData = this.hasGroupedData ? this.points : null;\n}\n/**\n * Set default approximations to the prototypes if present. Properties are\n * inherited down. Can be overridden for individual series types.\n * @private\n */\nfunction getDGApproximation() {\n    if (this.is('arearange')) {\n        return 'range';\n    }\n    if (this.is('ohlc')) {\n        return 'ohlc';\n    }\n    if (this.is('hlc')) {\n        return 'hlc';\n    }\n    if (\n    // #18974, default approximation for cumulative\n    // should be `sum` when `dataGrouping` is enabled\n    this.is('column') ||\n        this.options.cumulative) {\n        return 'sum';\n    }\n    return 'average';\n}\n/**\n * Highcharts Stock only. Takes parallel arrays of x and y data and groups the\n * data into intervals defined by groupPositions, a collection of starting x\n * values for each group.\n *\n * @product highstock\n *\n * @function Highcharts.Series#groupData\n * @param {Highcharts.DataTable} table\n *        The series data table.\n * @param {Array<number>} groupPositions\n *        Group positions.\n * @param {string|Function} [approximation]\n *        Approximation to use.\n * @return {Highcharts.DataGroupingResultObject}\n *         Mapped groups.\n */\nfunction groupData(table, groupPositions, approximation) {\n    var xData = table.getColumn('x', true) || [], yData = table.getColumn('y', true), series = this, data = series.data, dataOptions = series.options && series.options.data, groupedXData = [], modified = new Data_DataTableCore(), groupMap = [], dataLength = table.rowCount, \n        // When grouping the fake extended axis for panning, we don't need to\n        // consider y\n        handleYData = !!yData, values = [], pointArrayMap = series.pointArrayMap, pointArrayMapLength = pointArrayMap && pointArrayMap.length, extendedPointArrayMap = ['x'].concat(pointArrayMap || ['y']), \n        // Data columns to be applied to the modified data table at the end\n        valueColumns = (pointArrayMap || ['y']).map(function () { return []; }), groupAll = (this.options.dataGrouping &&\n            this.options.dataGrouping.groupAll);\n    var pointX,\n        pointY,\n        groupedY,\n        pos = 0,\n        start = 0;\n    var approximationFn = (typeof approximation === 'function' ?\n            approximation :\n            approximation && DataGrouping_ApproximationRegistry[approximation] ?\n                DataGrouping_ApproximationRegistry[approximation] :\n                DataGrouping_ApproximationRegistry[(series.getDGApproximation && series.getDGApproximation() ||\n                    'average')]);\n    // Calculate values array size from pointArrayMap length\n    if (pointArrayMapLength) {\n        var len = pointArrayMap.length;\n        while (len--) {\n            values.push([]);\n        }\n    }\n    else {\n        values.push([]);\n    }\n    var valuesLen = pointArrayMapLength || 1;\n    for (var i = 0; i <= dataLength; i++) {\n        // Start with the first point within the X axis range (#2696)\n        if (xData[i] < groupPositions[0]) {\n            continue; // With next point\n        }\n        // When a new group is entered, summarize and initialize\n        // the previous group\n        while ((typeof groupPositions[pos + 1] !== 'undefined' &&\n            xData[i] >= groupPositions[pos + 1]) ||\n            i === dataLength) { // Get the last group\n            // get group x and y\n            pointX = groupPositions[pos];\n            series.dataGroupInfo = {\n                start: groupAll ? start : (series.cropStart + start),\n                length: values[0].length,\n                groupStart: pointX\n            };\n            groupedY = approximationFn.apply(series, values);\n            // By default, let options of the first grouped point be passed over\n            // to the grouped point. This allows preserving properties like\n            // `name` and `color` or custom properties. Implementers can\n            // override this from the approximation function, where they can\n            // write custom options to `this.dataGroupInfo.options`.\n            if (series.pointClass && !DataGroupingSeriesComposition_defined(series.dataGroupInfo.options)) {\n                // Convert numbers and arrays into objects\n                series.dataGroupInfo.options = DataGroupingSeriesComposition_merge(series.pointClass.prototype\n                    .optionsToObject.call({ series: series }, series.options.data[series.cropStart + start]));\n                // Make sure the raw data (x, y, open, high etc) is not copied\n                // over and overwriting approximated data.\n                extendedPointArrayMap.forEach(function (key) {\n                    delete series.dataGroupInfo.options[key];\n                });\n            }\n            // Push the grouped data\n            if (typeof groupedY !== 'undefined') {\n                groupedXData.push(pointX);\n                // Push the grouped values to the parallel columns\n                var groupedValuesArr = DataGroupingSeriesComposition_splat(groupedY);\n                for (var j = 0; j < groupedValuesArr.length; j++) {\n                    valueColumns[j].push(groupedValuesArr[j]);\n                }\n                groupMap.push(series.dataGroupInfo);\n            }\n            // Reset the aggregate arrays\n            start = i;\n            for (var j = 0; j < valuesLen; j++) {\n                values[j].length = 0; // Faster than values[j] = []\n                values[j].hasNulls = false;\n            }\n            // Advance on the group positions\n            pos += 1;\n            // Don't loop beyond the last group\n            if (i === dataLength) {\n                break;\n            }\n        }\n        // Break out\n        if (i === dataLength) {\n            break;\n        }\n        // For each raw data point, push it to an array that contains all values\n        // for this specific group\n        if (pointArrayMap) {\n            var index = groupAll ? i : series.cropStart + i,\n                point = (data && data[index]) ||\n                    series.pointClass.prototype.applyOptions.apply({\n                        series: series\n                    },\n                [dataOptions[index]]);\n            var val = void 0;\n            for (var j = 0; j < pointArrayMapLength; j++) {\n                val = point[pointArrayMap[j]];\n                if (DataGroupingSeriesComposition_isNumber(val)) {\n                    values[j].push(val);\n                }\n                else if (val === null) {\n                    values[j].hasNulls = true;\n                }\n            }\n        }\n        else {\n            pointY = handleYData ? yData[i] : null;\n            if (DataGroupingSeriesComposition_isNumber(pointY)) {\n                values[0].push(pointY);\n            }\n            else if (pointY === null) {\n                values[0].hasNulls = true;\n            }\n        }\n    }\n    var columns = {\n            x: groupedXData\n        };\n    (pointArrayMap || ['y']).forEach(function (key, i) {\n        columns[key] = valueColumns[i];\n    });\n    modified.setColumns(columns);\n    return {\n        groupMap: groupMap,\n        modified: modified\n    };\n}\n/**\n * Handle default options for data grouping. This must be set at runtime because\n * some series types are defined after this.\n * @private\n */\nfunction onAfterSetOptions(e) {\n    var options = e.options,\n        type = this.type,\n        plotOptions = this.chart.options.plotOptions, \n        // External series, for example technical indicators should also inherit\n        // commonOptions which are not available outside this module\n        baseOptions = (this.useCommonDataGrouping &&\n            DataGrouping_DataGroupingDefaults.common),\n        seriesSpecific = DataGrouping_DataGroupingDefaults.seriesSpecific;\n    var defaultOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defaultOptions.plotOptions[type].dataGrouping;\n    if (plotOptions && (seriesSpecific[type] || baseOptions)) { // #1284\n        var rangeSelector = this.chart.rangeSelector;\n        if (!defaultOptions) {\n            defaultOptions = DataGroupingSeriesComposition_merge(DataGrouping_DataGroupingDefaults.common, seriesSpecific[type]);\n        }\n        options.dataGrouping = DataGroupingSeriesComposition_merge(baseOptions, defaultOptions, plotOptions.series && plotOptions.series.dataGrouping, // #1228\n        // Set by the StockChart constructor:\n        plotOptions[type].dataGrouping, this.userOptions.dataGrouping, !options.isInternal &&\n            rangeSelector &&\n            DataGroupingSeriesComposition_isNumber(rangeSelector.selected) &&\n            rangeSelector.buttonOptions[rangeSelector.selected].dataGrouping);\n    }\n}\n/**\n * @private\n */\nfunction skipDataGrouping(series, force) {\n    return !(series.isCartesian &&\n        !series.isDirty &&\n        !series.xAxis.isDirty &&\n        !series.yAxis.isDirty &&\n        !force);\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar DataGroupingSeriesComposition = {\n    compose: DataGroupingSeriesComposition_compose,\n    groupData: groupData\n};\n/* harmony default export */ var DataGrouping_DataGroupingSeriesComposition = (DataGroupingSeriesComposition);\n\n;// ./code/es5/es-modules/Extensions/DataGrouping/DataGrouping.js\n/* *\n *\n *  (c) 2010-2024 Torstein Honsi\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\n\nvar DataGrouping_format = (highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default()).format;\n\nvar DataGrouping_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar DataGrouping_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, DataGrouping_extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, DataGrouping_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, DataGrouping_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, DataGrouping_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction DataGrouping_compose(AxisClass, SeriesClass, TooltipClass) {\n    DataGrouping_DataGroupingAxisComposition.compose(AxisClass);\n    DataGrouping_DataGroupingSeriesComposition.compose(SeriesClass);\n    if (TooltipClass &&\n        DataGrouping_pushUnique(DataGrouping_composed, 'DataGrouping')) {\n        DataGrouping_addEvent(TooltipClass, 'headerFormatter', onTooltipHeaderFormatter);\n    }\n}\n/**\n * Extend the original method, make the tooltip's header reflect the grouped\n * range.\n * @private\n */\nfunction onTooltipHeaderFormatter(e) {\n    var _a;\n    var chart = this.chart,\n        time = chart.time,\n        point = e.point,\n        series = point.series,\n        options = series.options,\n        tooltipOptions = series.tooltipOptions,\n        dataGroupingOptions = options.dataGrouping,\n        xAxis = series.xAxis;\n    var xDateFormat = tooltipOptions.xDateFormat || '', xDateFormatEnd, currentDataGrouping, dateTimeLabelFormats, labelFormats, formattedKey, formatString = tooltipOptions[e.isFooter ? 'footerFormat' : 'headerFormat'];\n    // Apply only to grouped series\n    if (xAxis &&\n        xAxis.options.type === 'datetime' &&\n        dataGroupingOptions &&\n        DataGrouping_isNumber(point.key)) {\n        // Set variables\n        currentDataGrouping = series.currentDataGrouping;\n        dateTimeLabelFormats = dataGroupingOptions.dateTimeLabelFormats ||\n            // Fallback to commonOptions (#9693)\n            DataGrouping_DataGroupingDefaults.common.dateTimeLabelFormats;\n        // If we have grouped data, use the grouping information to get the\n        // right format\n        if (currentDataGrouping) {\n            labelFormats = dateTimeLabelFormats[currentDataGrouping.unitName];\n            if (currentDataGrouping.count === 1) {\n                xDateFormat = labelFormats[0];\n            }\n            else {\n                xDateFormat = labelFormats[1];\n                xDateFormatEnd = labelFormats[2];\n            }\n            // If not grouped, and we don't have set the xDateFormat option, get the\n            // best fit, so if the least distance between points is one minute, show\n            // it, but if the least distance is one day, skip hours and minutes etc.\n        }\n        else if (!xDateFormat && dateTimeLabelFormats && xAxis.dateTime) {\n            xDateFormat = xAxis.dateTime.getXDateFormat(point.x, tooltipOptions.dateTimeLabelFormats);\n        }\n        var groupStart = DataGrouping_pick((_a = series.groupMap) === null || _a === void 0 ? void 0 : _a[point.index].groupStart,\n            point.key),\n            groupEnd = groupStart + ((currentDataGrouping === null || currentDataGrouping === void 0 ? void 0 : currentDataGrouping.totalRange) || 0) - 1;\n        formattedKey = time.dateFormat(xDateFormat, groupStart);\n        if (xDateFormatEnd) {\n            formattedKey += time.dateFormat(xDateFormatEnd, groupEnd);\n        }\n        // Replace default header style with class name\n        if (series.chart.styledMode) {\n            formatString = this.styledModeFormat(formatString);\n        }\n        // Return the replaced format\n        e.text = DataGrouping_format(formatString, {\n            point: DataGrouping_extend(point, { key: formattedKey }),\n            series: series\n        }, chart);\n        e.preventDefault();\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar DataGroupingComposition = {\n    compose: DataGrouping_compose,\n    groupData: DataGrouping_DataGroupingSeriesComposition.groupData\n};\n/* harmony default export */ var DataGrouping = (DataGroupingComposition);\n/* *\n *\n *  API Declarations\n *\n * */\n/**\n * @typedef {\"average\"|\"averages\"|\"open\"|\"high\"|\"low\"|\"close\"|\"sum\"} Highcharts.DataGroupingApproximationValue\n */\n/**\n * The position of the point inside the group.\n *\n * @typedef    {\"start\"|\"middle\"|\"end\"} Highcharts.DataGroupingAnchor\n */\n/**\n * The position of the first or last point in the series inside the group.\n *\n * @typedef    {\"start\"|\"middle\"|\"end\"|\"firstPoint\"|\"lastPoint\"} Highcharts.DataGroupingAnchorExtremes\n */\n/**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingInfoObject\n */ /**\n* @name Highcharts.DataGroupingInfoObject#length\n* @type {number}\n*/ /**\n* @name Highcharts.DataGroupingInfoObject#options\n* @type {Highcharts.SeriesOptionsType|undefined}\n*/ /**\n* @name Highcharts.DataGroupingInfoObject#start\n* @type {number}\n*/\n/**\n * Highcharts Stock only.\n *\n * @product highstock\n * @interface Highcharts.DataGroupingResultObject\n */ /**\n* @name Highcharts.DataGroupingResultObject#groupedXData\n* @type {Array<number>}\n*/ /**\n* @name Highcharts.DataGroupingResultObject#groupedYData\n* @type {Array<(number|null|undefined)>|Array<Array<(number|null|undefined)>>}\n*/ /**\n* @name Highcharts.DataGroupingResultObject#groupMap\n* @type {Array<DataGroupingInfoObject>}\n*/\n/**\n * Highcharts Stock only. If a point object is created by data\n * grouping, it doesn't reflect actual points in the raw\n * data. In this case, the `dataGroup` property holds\n * information that points back to the raw data.\n *\n * - `dataGroup.start` is the index of the first raw data\n *   point in the group.\n *\n * - `dataGroup.length` is the amount of points in the\n *   group.\n *\n * @sample stock/members/point-datagroup\n *         Click to inspect raw data points\n *\n * @product highstock\n *\n * @name Highcharts.Point#dataGroup\n * @type {Highcharts.DataGroupingInfoObject|undefined}\n */\n(''); // Detach doclets above\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Data grouping is the concept of sampling the data values into larger\n * blocks in order to ease readability and increase performance of the\n * JavaScript charts. Highcharts Stock by default applies data grouping when\n * the points become closer than a certain pixel value, determined by\n * the `groupPixelWidth` option.\n *\n * If data grouping is applied, the grouping information of grouped\n * points can be read from the [Point.dataGroup](\n * /class-reference/Highcharts.Point#dataGroup). If point options other than\n * the data itself are set, for example `name` or `color` or custom properties,\n * the grouping logic doesn't know how to group it. In this case the options of\n * the first point instance are copied over to the group point. This can be\n * altered through a custom `approximation` callback function.\n *\n * @declare   Highcharts.DataGroupingOptionsObject\n * @product   highstock\n * @requires  modules/stock\n * @apioption plotOptions.series.dataGrouping\n */\n/**\n * Specifies how the points should be located on the X axis inside the group.\n * Points that are extremes can be set separately. Available options:\n *\n * - `start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * - `middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * - `end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-anchor\n *         Changing the point x-coordinate inside the group.\n *\n * @see [dataGrouping.firstAnchor](#plotOptions.series.dataGrouping.firstAnchor)\n * @see [dataGrouping.lastAnchor](#plotOptions.series.dataGrouping.lastAnchor)\n *\n * @type       {Highcharts.DataGroupingAnchor}\n * @since 9.1.0\n * @default    start\n * @apioption  plotOptions.series.dataGrouping.anchor\n */\n/**\n * The method of approximation inside a group. When for example 30 days\n * are grouped into one month, this determines what value should represent\n * the group. Possible values are \"average\", \"averages\", \"open\", \"high\",\n * \"low\", \"close\" and \"sum\". For OHLC and candlestick series the approximation\n * is \"ohlc\" by default, which finds the open, high, low and close values\n * within all the grouped data. For ranges, the approximation is \"range\",\n * which finds the low and high values. For multi-dimensional data,\n * like ranges and OHLC, \"averages\" will compute the average for each\n * dimension.\n *\n * Custom aggregate methods can be added by assigning a callback function\n * as the approximation. This function takes a numeric array as the\n * argument and should return a single numeric value or `null`. Note\n * that the numeric array will never contain null values, only true\n * numbers. Instead, if null values are present in the raw data, the\n * numeric array will have an `.hasNulls` property set to `true`. For\n * single-value data sets the data is available in the first argument\n * of the callback function. For OHLC data sets, all the open values\n * are in the first argument, all high values in the second etc.\n *\n * Since v4.2.7, grouping meta data is available in the approximation\n * callback from `this.dataGroupInfo`. It can be used to extract information\n * from the raw data.\n *\n * Defaults to `average` for line-type series, `sum` for columns, `range`\n * for range series, `hlc` for HLC, and `ohlc` for OHLC and candlestick.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-approximation\n *         Approximation callback with custom data\n * @sample {highstock} stock/plotoptions/series-datagrouping-simple-approximation\n *         Simple approximation demo\n *\n * @type       {Highcharts.DataGroupingApproximationValue|Function}\n * @apioption  plotOptions.series.dataGrouping.approximation\n */\n/**\n * Datetime formats for the header of the tooltip in a stock chart.\n * The format can vary within a chart depending on the currently selected\n * time range and the current data grouping.\n *\n * The default formats are:\n * ```js\n * {\n *     millisecond: [\n *         '%A, %e %b, %H:%M:%S.%L', '%A, %e %b, %H:%M:%S.%L', '-%H:%M:%S.%L'\n *     ],\n *     second: ['%A, %e %b, %H:%M:%S', '%A, %e %b, %H:%M:%S', '-%H:%M:%S'],\n *     minute: ['%A, %e %b, %H:%M', '%A, %e %b, %H:%M', '-%H:%M'],\n *     hour: ['%A, %e %b, %H:%M', '%A, %e %b, %H:%M', '-%H:%M'],\n *     day: ['%A, %e %b %Y', '%A, %e %b', '-%A, %e %b %Y'],\n *     week: ['Week from %A, %e %b %Y', '%A, %e %b', '-%A, %e %b %Y'],\n *     month: ['%B %Y', '%B', '-%B %Y'],\n *     year: ['%Y', '%Y', '-%Y']\n * }\n * ```\n *\n * For each of these array definitions, the first item is the format\n * used when the active time span is one unit. For instance, if the\n * current data applies to one week, the first item of the week array\n * is used. The second and third items are used when the active time\n * span is more than two units. For instance, if the current data applies\n * to two weeks, the second and third item of the week array are used,\n *  and applied to the start and end date of the time span.\n *\n * @type      {Object}\n * @apioption plotOptions.series.dataGrouping.dateTimeLabelFormats\n */\n/**\n * Enable or disable data grouping.\n *\n * @type      {boolean}\n * @default   true\n * @apioption plotOptions.series.dataGrouping.enabled\n */\n/**\n * Specifies how the first grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n *         Applying first and last anchor.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type       {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default    start\n * @apioption  plotOptions.series.dataGrouping.firstAnchor\n */\n/**\n * When data grouping is forced, it runs no matter how small the intervals\n * are. This can be handy for example when the sum should be calculated\n * for values appearing at random times within each hour.\n *\n * @type      {boolean}\n * @default   false\n * @apioption plotOptions.series.dataGrouping.forced\n */\n/**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. If multiple series with different group pixel widths\n * are drawn on the same x axis, all series will take the greatest width.\n * For example, line series have 2px default group width, while column\n * series have 10px. If combined, both the line and the column will\n * have 10px by default.\n *\n * @type      {number}\n * @default   2\n * @apioption plotOptions.series.dataGrouping.groupPixelWidth\n */\n/**\n * By default only points within the visible range are grouped. Enabling this\n * option will force data grouping to calculate all grouped points for a given\n * dataset. That option prevents for example a column series from calculating\n * a grouped point partially. The effect is similar to\n * [Series.getExtremesFromAll](#plotOptions.series.getExtremesFromAll) but does\n * not affect yAxis extremes.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-groupall/\n *         Two series with the same data but different groupAll setting\n *\n * @type      {boolean}\n * @default   false\n * @since     6.1.0\n * @apioption plotOptions.series.dataGrouping.groupAll\n */\n/**\n * Specifies how the last grouped point is positioned on the xAxis.\n * If firstAnchor and/or lastAnchor are defined, then those options take\n * precedence over anchor for the first and/or last grouped points.\n * Available options:\n *\n * -`start` places the point at the beginning of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 00:00:00)\n *\n * -`middle` places the point in the middle of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 12:00:00)\n *\n * -`end` places the point at the end of the group\n * (e.g. range 00:00:00 - 23:59:59 -> 23:59:59)\n *\n * -`firstPoint` the first point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:13)\n *\n * -`lastPoint` the last point in the group\n * (e.g. points at 00:13, 00:35, 00:59 -> 00:59)\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-first-anchor\n *         Applying first and last anchor.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-last-anchor\n *         Applying the last anchor in the chart with live data.\n *\n * @see [dataGrouping.anchor](#plotOptions.series.dataGrouping.anchor)\n *\n * @type       {Highcharts.DataGroupingAnchorExtremes}\n * @since 9.1.0\n * @default    start\n * @apioption  plotOptions.series.dataGrouping.lastAnchor\n */\n/**\n * Normally, a group is indexed by the start of that group, so for example\n * when 30 daily values are grouped into one month, that month's x value\n * will be the 1st of the month. This apparently shifts the data to\n * the left. When the smoothed option is true, this is compensated for.\n * The data is shifted to the middle of the group, and min and max\n * values are preserved. Internally, this is used in the Navigator series.\n *\n * @type      {boolean}\n * @default   false\n * @deprecated\n * @apioption plotOptions.series.dataGrouping.smoothed\n */\n/**\n * An array determining what time intervals the data is allowed to be\n * grouped to. Each array item is an array where the first value is\n * the time unit and the second value another array of allowed multiples.\n *\n * Defaults to:\n * ```js\n * units: [[\n *     'millisecond', // unit name\n *     [1, 2, 5, 10, 20, 25, 50, 100, 200, 500] // allowed multiples\n * ], [\n *     'second',\n *     [1, 2, 5, 10, 15, 30]\n * ], [\n *     'minute',\n *     [1, 2, 5, 10, 15, 30]\n * ], [\n *     'hour',\n *     [1, 2, 3, 4, 6, 8, 12]\n * ], [\n *     'day',\n *     [1]\n * ], [\n *     'week',\n *     [1]\n * ], [\n *     'month',\n *     [1, 3, 6]\n * ], [\n *     'year',\n *     null\n * ]]\n * ```\n *\n * @type      {Array<Array<string,(Array<number>|null)>>}\n * @apioption plotOptions.series.dataGrouping.units\n */\n/**\n * The approximate pixel width of each group. If for example a series\n * with 30 points is displayed over a 600 pixel wide plot area, no grouping\n * is performed. If however the series contains so many points that\n * the spacing is less than the groupPixelWidth, Highcharts will try\n * to group it into appropriate groups so that each is more or less\n * two pixels wide. Defaults to `10`.\n *\n * @sample {highstock} stock/plotoptions/series-datagrouping-grouppixelwidth/\n *         Two series with the same data density but different groupPixelWidth\n *\n * @type      {number}\n * @default   10\n * @apioption plotOptions.column.dataGrouping.groupPixelWidth\n */\n''; // Required by JSDoc parsing\n\n;// ./code/es5/es-modules/masters/modules/datagrouping.src.js\n/**\n * @license Highstock JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/datagrouping\n * @requires highcharts\n *\n * Data grouping module\n *\n * (c) 2010-2024 Torstein Hønsi\n *\n * License: www.highcharts.com/license\n */\n\n\n\n\n\nvar datagrouping_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\ndatagrouping_src_G.dataGrouping = datagrouping_src_G.dataGrouping || {};\ndatagrouping_src_G.dataGrouping.approximationDefaults = (datagrouping_src_G.dataGrouping.approximationDefaults ||\n    DataGrouping_ApproximationDefaults);\ndatagrouping_src_G.dataGrouping.approximations = (datagrouping_src_G.dataGrouping.approximations ||\n    DataGrouping_ApproximationRegistry);\nDataGrouping.compose(datagrouping_src_G.Axis, datagrouping_src_G.Series, datagrouping_src_G.Tooltip);\n/* harmony default export */ var datagrouping_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js\n/* *\n *\n *  (c) 2009-2024 Highsoft, Black Label\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar NavigationBindingsUtilities_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, NavigationBindingsUtilities_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, NavigationBindingsUtilities_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Constants\n *\n * */\n/**\n * Define types for editable fields per annotation. There is no need to define\n * numbers, because they won't change their type to string.\n * @private\n */\nvar annotationsFieldsTypes = {\n    backgroundColor: 'string',\n    borderColor: 'string',\n    borderRadius: 'string',\n    color: 'string',\n    fill: 'string',\n    fontSize: 'string',\n    labels: 'string',\n    name: 'string',\n    stroke: 'string',\n    title: 'string'\n};\n/* *\n *\n *  Functions\n *\n * */\n/**\n * Returns the first xAxis or yAxis that was clicked with its value.\n *\n * @private\n *\n * @param {Array<Highcharts.PointerAxisCoordinateObject>} coords\n *        All the chart's x or y axes with a current pointer's axis value.\n *\n * @return {Highcharts.PointerAxisCoordinateObject}\n *         Object with a first found axis and its value that pointer\n *         is currently pointing.\n */\nfunction getAssignedAxis(coords) {\n    return coords.filter(function (coord) {\n        var extremes = coord.axis.getExtremes(),\n            axisMin = extremes.min,\n            axisMax = extremes.max, \n            // Correct axis edges when axis has series\n            // with pointRange (like column)\n            minPointOffset = NavigationBindingsUtilities_pick(coord.axis.minPointOffset, 0);\n        return NavigationBindingsUtilities_isNumber(axisMin) && NavigationBindingsUtilities_isNumber(axisMax) &&\n            coord.value >= (axisMin - minPointOffset) &&\n            coord.value <= (axisMax + minPointOffset) &&\n            // Don't count navigator axis\n            !coord.axis.options.isInternal;\n    })[0]; // If the axes overlap, return the first axis that was found.\n}\n/**\n * Get field type according to value\n *\n * @private\n *\n * @param {'boolean'|'number'|'string'} value\n * Atomic type (one of: string, number, boolean)\n *\n * @return {'checkbox'|'number'|'text'}\n * Field type (one of: text, number, checkbox)\n */\nfunction getFieldType(key, value) {\n    var predefinedType = annotationsFieldsTypes[key];\n    var fieldType = typeof value;\n    if (NavigationBindingsUtilities_defined(predefinedType)) {\n        fieldType = predefinedType;\n    }\n    return {\n        'string': 'text',\n        'number': 'number',\n        'boolean': 'checkbox'\n    }[fieldType];\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar NavigationBindingUtilities = {\n    annotationsFieldsTypes: annotationsFieldsTypes,\n    getAssignedAxis: getAssignedAxis,\n    getFieldType: getFieldType\n};\n/* harmony default export */ var NavigationBindingsUtilities = (NavigationBindingUtilities);\n\n;// ./code/es5/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js\n/* *\n *\n *  (c) 2023 Torstein Honsi, Askel Eirik Johansson\n *\n *  License: www.highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar MouseWheelZoom_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, MouseWheelZoom_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, MouseWheelZoom_defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined, MouseWheelZoom_merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge;\n\nvar MouseWheelZoom_getAssignedAxis = NavigationBindingsUtilities.getAssignedAxis;\n/* *\n *\n *  Constants\n *\n * */\nvar composedClasses = [], MouseWheelZoom_defaultOptions = {\n    enabled: true,\n    sensitivity: 1.1\n};\nvar wheelTimer;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nvar optionsToObject = function (options) {\n    if (!isObject(options)) {\n        options = {\n            enabled: options !== null && options !== void 0 ? options : true\n        };\n    }\n    return MouseWheelZoom_merge(MouseWheelZoom_defaultOptions, options);\n};\n/**\n * @private\n */\nvar zoomBy = function (chart, howMuch, xAxis, yAxis, mouseX, mouseY, options) {\n    var type = MouseWheelZoom_pick(options.type,\n        chart.zooming.type, '');\n    var axes = [];\n    if (type === 'x') {\n        axes = xAxis;\n    }\n    else if (type === 'y') {\n        axes = yAxis;\n    }\n    else if (type === 'xy') {\n        axes = chart.axes;\n    }\n    var hasZoomed = chart.transform({\n            axes: axes,\n            // Create imaginary reference and target rectangles around the mouse\n            // point that scales up or down with `howMuch`;\n        to: {\n            x: mouseX - 5,\n            y: mouseY - 5,\n            // Must use 10 to get passed the limit for too small reference.\n            // Below this, the transform will default to a pan.\n            width: 10,\n            height: 10\n        },\n        from: {\n            x: mouseX - 5 * howMuch,\n            y: mouseY - 5 * howMuch,\n            width: 10 * howMuch,\n            height: 10 * howMuch\n        },\n        trigger: 'mousewheel'\n    });\n    if (hasZoomed) {\n        if (MouseWheelZoom_defined(wheelTimer)) {\n            clearTimeout(wheelTimer);\n        }\n        // Some time after the last mousewheel event, run drop. In case any of\n        // the affected axes had `startOnTick` or `endOnTick`, they will be\n        // re-adjusted now.\n        wheelTimer = setTimeout(function () {\n            var _a;\n            (_a = chart.pointer) === null || _a === void 0 ? void 0 : _a.drop();\n        }, 400);\n    }\n    return hasZoomed;\n};\n/**\n * @private\n */\nfunction onAfterGetContainer() {\n    var _this = this;\n    var wheelZoomOptions = optionsToObject(this.zooming.mouseWheel);\n    if (wheelZoomOptions.enabled) {\n        MouseWheelZoom_addEvent(this.container, 'wheel', function (e) {\n            var _a,\n                _b;\n            e = ((_a = _this.pointer) === null || _a === void 0 ? void 0 : _a.normalize(e)) || e;\n            var pointer = _this.pointer,\n                allowZoom = pointer && !pointer.inClass(e.target, 'highcharts-no-mousewheel');\n            // Firefox uses e.detail, WebKit and IE uses deltaX, deltaY, deltaZ.\n            if (_this.isInsidePlot(e.chartX - _this.plotLeft, e.chartY - _this.plotTop) && allowZoom) {\n                var wheelSensitivity = wheelZoomOptions.sensitivity || 1.1,\n                    delta = e.detail || ((e.deltaY || 0) / 120),\n                    xAxisCoords = MouseWheelZoom_getAssignedAxis(pointer.getCoordinates(e).xAxis),\n                    yAxisCoords = MouseWheelZoom_getAssignedAxis(pointer.getCoordinates(e).yAxis);\n                var hasZoomed = zoomBy(_this,\n                    Math.pow(wheelSensitivity,\n                    delta),\n                    xAxisCoords ? [xAxisCoords.axis] : _this.xAxis,\n                    yAxisCoords ? [yAxisCoords.axis] : _this.yAxis,\n                    e.chartX,\n                    e.chartY,\n                    wheelZoomOptions);\n                // Prevent page scroll\n                if (hasZoomed) {\n                    (_b = e.preventDefault) === null || _b === void 0 ? void 0 : _b.call(e);\n                }\n            }\n        });\n    }\n}\n/**\n * @private\n */\nfunction MouseWheelZoom_compose(ChartClass) {\n    if (composedClasses.indexOf(ChartClass) === -1) {\n        composedClasses.push(ChartClass);\n        MouseWheelZoom_addEvent(ChartClass, 'afterGetContainer', onAfterGetContainer);\n    }\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar MouseWheelZoomComposition = {\n    compose: MouseWheelZoom_compose\n};\n/* harmony default export */ var MouseWheelZoom = (MouseWheelZoomComposition);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * The mouse wheel zoom is a feature included in Highcharts Stock, but is also\n * available for Highcharts Core as a module. Zooming with the mouse wheel is\n * enabled by default in Highcharts Stock. In Highcharts Core it is enabled if\n * [chart.zooming.type](chart.zooming.type) is set. It can be disabled by\n * setting this option to `false`.\n *\n * @type      {boolean|object}\n * @since 11.1.0\n * @requires  modules/mouse-wheel-zoom\n * @sample    {highcharts} highcharts/mouse-wheel-zoom/enabled\n *            Enable or disable\n * @sample    {highstock} stock/mouse-wheel-zoom/enabled\n *            Enable or disable\n * @apioption chart.zooming.mouseWheel\n */\n/**\n * Zooming with the mouse wheel can be disabled by setting this option to\n * `false`.\n *\n * @type      {boolean}\n * @default   true\n * @since 11.1.0\n * @requires  modules/mouse-wheel-zoom\n * @apioption chart.zooming.mouseWheel.enabled\n */\n/**\n * Adjust the sensitivity of the zoom. Sensitivity of mouse wheel or trackpad\n * scrolling. `1` is no sensitivity, while with `2`, one mouse wheel delta will\n * zoom in `50%`.\n *\n * @type      {number}\n * @default   1.1\n * @since 11.1.0\n * @requires  modules/mouse-wheel-zoom\n * @sample    {highcharts} highcharts/mouse-wheel-zoom/sensitivity\n *            Change mouse wheel zoom sensitivity\n * @sample    {highstock} stock/mouse-wheel-zoom/sensitivity\n *            Change mouse wheel zoom sensitivity\n * @apioption chart.zooming.mouseWheel.sensitivity\n */\n/**\n * Decides in what dimensions the user can zoom scrolling the wheel. Can be one\n * of `x`, `y` or `xy`. In Highcharts Core, if not specified here, it will\n * inherit the type from [chart.zooming.type](chart.zooming.type). In Highcharts\n * Stock, it defaults to `x`.\n *\n * Note that particularly with mouse wheel in the y direction, the zoom is\n * affected by the default [yAxis.startOnTick](#yAxis.startOnTick) and\n * [endOnTick]((#yAxis.endOnTick)) settings. In order to respect these settings,\n * the zoom level will adjust after the user has stopped zooming. To prevent\n * this, consider setting `startOnTick` and `endOnTick` to `false`.\n *\n * @type      {string}\n * @default   {highcharts} undefined\n * @default   {highstock} x\n * @validvalue [\"x\", \"y\", \"xy\"]\n * @since 11.1.0\n * @requires  modules/mouse-wheel-zoom\n * @apioption chart.zooming.mouseWheel.type\n */\n(''); // Keeps doclets above in JS file\n\n;// ./code/es5/es-modules/masters/modules/mouse-wheel-zoom.src.js\n/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/mouse-wheel-zoom\n * @requires highcharts\n *\n * Mousewheel zoom module\n *\n * (c) 2023 Askel Eirik Johansson\n *\n * License: www.highcharts.com/license\n */\n\n\n\nvar mouse_wheel_zoom_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nmouse_wheel_zoom_src_G.MouseWheelZoom = mouse_wheel_zoom_src_G.MouseWheelZoom || MouseWheelZoom;\nmouse_wheel_zoom_src_G.MouseWheelZoom.compose(mouse_wheel_zoom_src_G.Chart);\n/* harmony default export */ var mouse_wheel_zoom_src = ((/* unused pure expression or super */ null && (Highcharts)));\n\n;// ./code/es5/es-modules/masters/modules/stock.src.js\n/**\n * @license Highstock JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/stock\n * @requires highcharts\n *\n * Highcharts Stock as a plugin for Highcharts\n *\n * (c) 2010-2024 Torstein Honsi\n *\n * License: www.highcharts.com/license\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar stock_src_G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\n// Classes\nstock_src_G.Navigator = stock_src_G.Navigator || Navigator_Navigator;\nstock_src_G.OrdinalAxis = stock_src_G.OrdinalAxis || Axis_OrdinalAxis;\nstock_src_G.RangeSelector = stock_src_G.RangeSelector || RangeSelector_RangeSelector;\nstock_src_G.Scrollbar = stock_src_G.Scrollbar || Scrollbar_Scrollbar;\n// Functions\nstock_src_G.stockChart = stock_src_G.stockChart || Chart_StockChart.stockChart;\nstock_src_G.StockChart = stock_src_G.StockChart || stock_src_G.stockChart;\nstock_src_G.extend(stock_src_G.StockChart, Chart_StockChart);\n// Compositions\nSeries_DataModifyComposition.compose(stock_src_G.Series, stock_src_G.Axis, stock_src_G.Point);\nFlags_FlagsSeries.compose(stock_src_G.Renderer);\nOHLC_OHLCSeries.compose(stock_src_G.Series);\nstock_src_G.Navigator.compose(stock_src_G.Chart, stock_src_G.Axis, stock_src_G.Series);\nstock_src_G.OrdinalAxis.compose(stock_src_G.Axis, stock_src_G.Series, stock_src_G.Chart);\nstock_src_G.RangeSelector.compose(stock_src_G.Axis, stock_src_G.Chart);\nstock_src_G.Scrollbar.compose(stock_src_G.Axis);\nstock_src_G.StockChart.compose(stock_src_G.Chart, stock_src_G.Axis, stock_src_G.Series, stock_src_G.SVGRenderer);\n/* harmony default export */ var stock_src = ((highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()));\n\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});"],"names":["root","factory","exports","module","require","define","amd","__WEBPACK_EXTERNAL_MODULE__944__","__WEBPACK_EXTERNAL_MODULE__532__","__WEBPACK_EXTERNAL_MODULE__260__","__WEBPACK_EXTERNAL_MODULE__820__","__WEBPACK_EXTERNAL_MODULE__620__","__WEBPACK_EXTERNAL_MODULE__512__","__WEBPACK_EXTERNAL_MODULE__608__","__WEBPACK_EXTERNAL_MODULE__540__","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__960__","__WEBPACK_EXTERNAL_MODULE__984__","__WEBPACK_EXTERNAL_MODULE__448__","__WEBPACK_EXTERNAL_MODULE__184__","extendStatics","DataModifyComposition","NavigatorConstructor","ScrollbarAxis","OrdinalAxis","RangeSelectorConstructor","FlagsSymbols","OnSeriesComposition","BrokenAxis","AxisConstructor","DateTimeAxis","wheelTimer","__webpack_modules__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","__webpack_exports__","stock_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_","highcharts_Axis_commonjs_highcharts_Axis_commonjs2_highcharts_Axis_root_Highcharts_Axis_default","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_","highcharts_Point_commonjs_highcharts_Point_commonjs2_highcharts_Point_root_Highcharts_Point_default","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_","highcharts_Series_commonjs_highcharts_Series_commonjs2_highcharts_Series_root_Highcharts_Series_default","pointTooltipFormatter","tooltipFormatter","addEvent","arrayMax","arrayMin","correctFloat","defined","isArray","isNumber","isString","pick","setModifier","mode","modeState","redraw","isXAxis","series","forEach","setCompare","setCumulative","chart","pointFormat","point","numberFormatter","replace","value","tooltipOptions","changeDecimals","change","cumulativeSum","apply","afterInit","dataModify","compare","options","cumulative","Additions","initCompare","initCumulative","afterGetExtremes","e","dataExtremes","activeYData","extremes","modifyValue","dataMin","dataMax","length","getCumulativeExtremes","seriesSetCompare","userOptions","update","points","afterProcessData","compareColumn","getColumn","pointArrayMap","pointValKey","xAxis","processedXData","length_1","dataTable","rowCount","compareStart","i","compareValue","min","axisSetCompare","seriesSetCumulative","axisSetCumulative","compose","SeriesClass","AxisClass","PointClass","axisProto","pointProto","seriesProto","cumulativeDataMin","Infinity","cumulativeDataMax","reduce","prev","cur","sum","Math","max","index","compareBase","prevPoint","cumulativeStart","withinRange","x","Series_DataModifyComposition","isTouchDevice","ChartNavigatorComposition_addEvent","merge","ChartNavigatorComposition_pick","composedMembers","onChartAfterAddSeries","navigator","setBaseSeries","onChartAfterSetChartSize","_a","legendOptions","yAxis","legend","scrollbarHeight","scrollButtonSize","inverted","left","opposite","chartWidth","height","spacing","top","plotTop","plotLeft","navigatorOptions","chartHeight","scrollbar","margin","rangeSelector","extraBottomMargin","getHeight","verticalAlign","layout","enabled","floating","legendHeight","titleOffset","setAxisSize","onChartAfterUpdate","event","scroller","animation","onChartBeforeRender","onChartBeforeShowResetZoom","chartOptions","zooming","type","pinchType","onChartCallback","getExtremes","render","onChartUpdate","scrollbarOptions","ChartClass","NavigatorClass","pushUnique","chartProto","callbacks","push","NavigatorAxisComposition_isTouchDevice","NavigatorAxisComposition_addEvent","NavigatorAxisComposition_correctFloat","NavigatorAxisComposition_defined","NavigatorAxisComposition_isNumber","NavigatorAxisComposition_pick","onAxisInit","axis","navigatorAxis","NavigatorAxisAdditions","onAxisSetExtremes","zoomed","zoomType","trigger","range","previousZoom","preventDefault","keepProps","includes","destroy","toFixedRange","pxMin","pxMax","fixedMin","fixedMax","halfPointRange","pointRange","newMin","translate","horiz","newMax","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_","highcharts_SeriesRegistry_commonjs_highcharts_SeriesRegistry_commonjs2_highcharts_SeriesRegistry_root_Highcharts_SeriesRegistry_default","color","parse","seriesTypes","NavigatorDefaults","maskInside","handles","width","borderRadius","symbols","lineWidth","backgroundColor","borderColor","maskFill","setOpacity","outlineColor","outlineWidth","areaspline","fillOpacity","sonification","dataGrouping","approximation","groupPixelWidth","firstAnchor","anchor","lastAnchor","units","dataLabels","zIndex","id","className","lineColor","marker","threshold","tickLength","gridLineColor","gridLineWidth","tickPixelInterval","labels","align","style","fontSize","opacity","textOutline","y","crosshair","startOnTick","endOnTick","minPadding","maxPadding","title","text","tickWidth","__spreadArray","to","from","pack","arguments","ar","l","Array","slice","concat","relativeLength","Navigator_NavigatorSymbols","_x","_y","w","h","r","halfWidth","markerPosition","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_","highcharts_RendererRegistry_commonjs_highcharts_RendererRegistry_commonjs2_highcharts_RendererRegistry_root_Highcharts_RendererRegistry_default","StockUtilities_defined","Utilities_StockUtilities","setFixedRange","fixedRange","setOptions","composed","getRendererType","NavigatorComposition_setFixedRange","NavigatorComposition_addEvent","extend","onSeriesAfterUpdate","isInternal","NavigatorAxisComposition","ScrollbarAxis_composed","ScrollbarAxis_addEvent","ScrollbarAxis_defined","ScrollbarAxis_pick","ScrollbarAxis_pushUnique","Scrollbar","axisMin","axisMax","scrollMin","scrollMax","onAxisAfterGetOffset","scrollbarsOffsets","axisOffset","size","onAxisAfterInit","vertical","renderer","unitedMin","unitedMax","reversed","shouldUpdateExtremes","DOMType","animate","setExtremes","setRange","onAxisAfterRender","offsetsIndex","offset","axisTitleMargin","axisMargin","position","xPosition","isNaN","interval","ScrollbarClass","Axis_ScrollbarAxis","Scrollbar_ScrollbarDefaults","barBorderRadius","buttonBorderRadius","buttonsEnabled","liveRedraw","minWidth","step","barBackgroundColor","barBorderWidth","barBorderColor","buttonArrowColor","buttonBackgroundColor","buttonBorderColor","buttonBorderWidth","rifleColor","trackBackgroundColor","trackBorderColor","trackBorderRadius","trackBorderWidth","defaultOptions","Scrollbar_addEvent","Scrollbar_correctFloat","crisp","Scrollbar_defined","destroyObjectProperties","fireEvent","Scrollbar_merge","Scrollbar_pick","removeEvent","_events","chartX","chartY","scrollbarButtons","scrollbarLeft","scrollbarStrokeWidth","scrollbarTop","init","swapXY","path","seg","temp","len","addEvents","buttonsOrder","buttons","bar","scrollbarGroup","element","track","mouseDownHandler","bind","mouseMoveHandler","mouseUpHandler","buttonToMinClick","buttonToMaxClick","trackClick","ownerDocument","args","updatePosition","DOMEvent","cursorToScrollbarPosition","normalizedEvent","minWidthDifference","calculatedWidth","xOffset","barWidth","yOffset","removeEvents","drawScrollbarButton","group","g","add","rect","addClass","styledMode","attr","stroke","fill","strokeWidth","arrow","pointer","normalize","mousePosition","initPositions","grabbedCenter","direction","touches","chartPosition","hasDragged","method","rendered","show","translateX","translateY","hide","scrollbarRifles","fromPX","newSize","fullWidth","toPX","ceil","newPos","floor","newRiflesPos","showFull","eventType","svg","boosted","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_","highcharts_SVGRenderer_commonjs_highcharts_SVGRenderer_commonjs2_highcharts_SVGRenderer_root_Highcharts_SVGRenderer_default","__assign","assign","t","s","p","Navigator_defaultOptions","Navigator_isTouchDevice","Navigator_addEvent","clamp","Navigator_correctFloat","Navigator_defined","Navigator_destroyObjectProperties","erase","Navigator_extend","find","Navigator_fireEvent","Navigator_isArray","Navigator_isNumber","Navigator_merge","Navigator_pick","Navigator_removeEvent","splat","numExt","extreme","_i","numbers","filter","Navigator","isDirty","Navigator_ChartNavigatorComposition","Navigator_NavigatorComposition","drawHandle","verb","round","parseInt","drawOutline","zoomedMin","zoomedMax","verticalMin","outline","halfOutline","outlineCorrection","navigatorSize","navigatorTop","lineTop","lineBtm","drawMasks","navigatorHeight","shades","shade","renderElements","_b","mouseCursor","cursor","navigatorGroup","visibility","hasMask","css","handlesOptions_1","height_1","width_1","symbolName","symbolUrl","isImg","symbolFn","symbol","addMouseEvents","rotation","rotationOriginX","rotationOriginY","_c","_d","_this","invertedUpdate","setOpposite","navigatorEnabled","adaptToUpdatedData","baseSeries","updatedDataHandler","eventsToUnbind","offsets","getXAxisOffsets","navigatorWidth","scrollbarXAxis","fake","minRange","maxRange","plotWidth","plotHeight","toPixels","abs","toValue","currentRange","grabbedLeft","grabbedRight","fixedWidth","container","onMouseMove","onMouseUp","getPartsEvents","renderTo","modifyNavigatorAxisExtremes","eventName","events","name","navigatorItem","shadesMousedown","ext","navigatorPosition","dragOffset","reversedExtremes","getUnionExtremes","eventArguments","handlesMousedown","baseXAxis","reverse","otherHandlePos","fixedExtreme","pageX","setTimeout","unionExtremes","triggerOp","keys","unbind","removeBaseSeriesEvents","modifyBaseAxisExtremes","scrollbarEnabled","xAxisIndex","yAxisIndex","baseXaxis","isDirtyBox","breaks","ordinal","overscroll","keepOrdinalPadding","zoomEnabled","alignTicks","data","updateNavigatorSeries","unbindRedraw","scrollTrackWidth","valueRange","addBaseSeriesEvents","addChartEvents","Boolean","returnFalseOnNoBaseSeries","ret","baseAxis","time","navAxis","navAxisOptions","baseAxisOptions","baseSeriesOptions","showInNavigator","baseOptions","mergedNavSeriesOptions","baseNavigatorOptions","navSeriesMixin","enableMouseTracking","linkedTo","padXAxis","showInLegend","stacking","states","inactive","navigatorSeries","navSeries","base","indexOf","chartNavigatorSeriesOptions","linkedNavSeries","userNavOptions","visible","plotOptions","navigatorSeriesData","hasNavigatorData","initSeries","setSortedData","userSeriesOptions","colors","setVisible","remove","getBaseSeriesMin","currentSeriesMin","baseExtremes","baseMin","baseMax","baseDataMin","baseDataMax","stickToMin","stickToMax","convertOverscroll","hasSetExtremes","eventArgs","xData","Number","MAX_VALUE","userMin","userMax","shouldStickToMax","shouldStickToMin","pointStart","setData","xDataMin","marginName","axes","coll","DataTableCore_fireEvent","DataTableCore_isArray","objectEach","uniqueKey","DataTableCore","autoId","columns","modified","versionTag","column","columnName","applyRowCount","asReference","getColumns","columnNames","getRow","rowIndex","map","setColumn","eventDetail","setColumns","silent","setRow","row","insert","indexRowCount","cellValue","addColumns","splice","OrdinalAxis_assign","OrdinalAxis_addEvent","OrdinalAxis_correctFloat","OrdinalAxis_defined","error","OrdinalAxis_isNumber","OrdinalAxis_pick","timeUnits","OrdinalAxis_isString","getTimeTicks","normalizedInterval","startOfWeek","positions","closestDistance","findHigherRanks","end","segmentPositions","hasCrossedHigherRank","info","outsideMax","higherRanks","tickPixelIntervalOption","segmentStarts","start","groupPositions","lastGroupPosition","posLength","shift","unitRange","hour","dateFormat","translatedArr","distances","itemToRemove","translated","lastTranslated","medianDistance","distance","sort","b","index2val","ordinalPositions","lin2val","val","localMin","old","localA","transA","getExtendedPositions","pixelVal","minPixelPadding","getIndexOfPoint","mantissa","leftNeighbour","rightNeighbour","getIndexInArray","findIndexOf","percent","onAxisFoundExtremes","originalOrdinalRange","onAxisAfterSetScale","isOrdinal","onAxisInitialAxisTranslation","beforeSetTickPositions","tickInterval","postProcessTickInterval","onChartPan","originalEvent","panning","runBase","mouseDownX","hoverPoints","closestPointRange","overscrollPointsRange","movedUnits","translationSlope","slope","extendedOrdinalPositions","extendedAxis","index2val_1","val2lin_1","val2lin","trimmedRange","setState","test","onSeriesUpdatedData","toIndex","ordinalIndex","ordinalLength","length_2","originalPositionsReference","diff","approximateIndexOffset","ordinal2lin","uniqueOrdinalPositions","dist","minIndex","maxIndex","hasBreaks","brokenAxis","useOrdinal","adjustOrdinalExtremesPoints","isBoosted","distanceBetweenPoint_1","reserveSpace","takeOrdinalPosition","unshift","pop","forceOrdinal","getOverscrollPositions","groupIntervalFactor","sortedArray","indirectSearch","middle","withOverscroll","fakeAxis","constructor","k","grouping","currentDataGrouping","count","unitName","fakeSeries","applyGrouping","getGroupPixelWidth","getGroupIntervalFactor","destroyGroupedData","noop","getProcessedData","forced","processData","hasExtremesChanged","basePointRange","xMin","xMax","median","ordinalArray","minX","indexOfMin","extraRange","ordinalSlope","calculateOverscroll","overscrollPercentage","overscrollValue","pixelToPercent","limitedOverscrollValue","Axis_OrdinalAxis","RangeSelector_RangeSelectorDefaults","lang","rangeSelectorZoom","rangeSelectorFrom","rangeSelectorTo","allButtonsEnabled","buttonSpacing","dropdown","buttonTheme","padding","inputBoxBorderColor","inputBoxHeight","inputBoxWidth","inputDateFormat","inputDateParser","inputEditDateFormat","inputEnabled","inputPosition","inputSpacing","selected","buttonPosition","inputStyle","labelStyle","RangeSelectorComposition_defaultOptions","RangeSelectorComposition_composed","RangeSelectorComposition_addEvent","RangeSelectorComposition_defined","RangeSelectorComposition_extend","RangeSelectorComposition_isNumber","RangeSelectorComposition_merge","RangeSelectorComposition_pick","RangeSelectorComposition_pushUnique","chartDestroyEvents","axisMinFromRange","rangeOptions","getTrueRange","original","toParts","makeTime","MIN_VALUE","_offsetMin","updateRangeSelectorButtons","redrawElements","createRangeSelector","RangeSelectorComposition_onChartBeforeRender","deferredYTDClick","clickButton","extraTopMargin","redrawRangeSelector","alignTo","display","spacingBox","placed","onChartDestroy","iEnd","onChartGetMargins","rangeSelectorHeight","marginBottom","RangeSelectorComposition_onChartUpdate","optionsRangeSelector","extraBottomMarginWas","extraTopMarginWas","RangeSelectorClass","minFromRange","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_","highcharts_SVGElement_commonjs_highcharts_SVGElement_commonjs2_highcharts_SVGElement_root_Highcharts_SVGElement_default","RangeSelector_defaultOptions","RangeSelector_addEvent","createElement","RangeSelector_css","RangeSelector_defined","RangeSelector_destroyObjectProperties","diffObjects","discardElement","RangeSelector_extend","RangeSelector_fireEvent","RangeSelector_isNumber","RangeSelector_isString","RangeSelector_merge","RangeSelector_objectEach","RangeSelector_pick","RangeSelector_splat","preferredInputType","format","hasTimeKey","char","RegExp","fractionalSecondDigits","date","some","dateStyle","day","month","year","timeStyle","minute","second","RangeSelector","buttonOptions","defaultButtons","initialButtonGroupWidth","maxButtonWidth","buttonWidth","button","bBox","getBBox","RangeSelector_RangeSelectorComposition","baseXAxisOptions","rangeMin","ctx","ytdExtremes","_range","addOffsetMin","setSelected","forcedDataGrouping","setDataGrouping","frozenStates","preserveDataGrouping","hasData","getYTDExtremes","_offsetMax","selectedIndex","rangeSelectorButton","axisRangeUpdateEvent_1","selectedOption","blurInputs","minInput","maxInput","blur","computeButtonRange","createElements","updateButtonStates","dropdownLabel","actualRange","hasNoData","hasVisibleSeries","ytdMin","ytdMax","buttonStates","selectedExists","isSelectedTooGreat","offsetRange","isSelected","isTooGreatRange","isTooSmallRange","isYTDButNotSelected","isSameRange","prevOrdinalPosition","nextOrdinalPosition","disable","select","state","disabled","bbox","fixedTimes","millisecond","week","offsetMin","offsetMax","getInputValue","input","defaultInputDateParser","timezone","setInputValue","inputTime","dateBox","minDateBox","maxDateBox","setAttribute","hcTimeAttr","getAttribute","updatedTime","previousTime","inputTypeFormats","setInputExtremes","showInput","inputGroup","isTextInput","_e","_f","border","offsetWidth","offsetHeight","hideInput","inputDate","useUTC","drawInput","div","chartStyle","isMin","updateExtremes","chartAxis","currentExtreme","label","on","focus","boxShadow","textAlign","fontFamily","onfocus","onblur","doc","activeElement","keyDown","onchange","onkeypress","keyCode","onkeydown","onkeyup","getPosition","buttonTop","inputTop","inputsZIndex","renderButtons","parentNode","insertBefore","createInputs","minElems","minLabel","maxElems","maxLabel","x_1","zoomText","alignElements","buttonGroup","userButtonTheme","paddingLeft","paddingRight","hover","mouseOver","isMS","mouseOut","textContent","textStr","createButtons","createButton","callDefaultEvent","buttonEvents","click","isActive","navButtonOptions","exporting","navigation","getXOffsetForExportButton","rightAligned","titleCollision","positionButtons","xOffsetForExportButton_1","alignButtonGroup","hasLoaded","xOffsetForExportButton","handleCollision","alignTranslateY","alignAttr","groupHeight","marginTop","_g","_h","isCollapsed","newButtonsOptions","btnLength","_j","btn","dropdownTranslateX","hasVisibleDropdown","buttonLeft","moveInputsDown","collapseButtons","expandButtons","showDropdown","hideDropdown","rangeSelectorGroup","yPosition","buttonPositionY","inputPositionY","minPosition","subtitle","rSelector","window","HTMLElement","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_","highcharts_Chart_commonjs_highcharts_Chart_commonjs2_highcharts_Chart_root_Highcharts_Chart_default","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_","highcharts_Templating_commonjs_highcharts_Templating_commonjs2_highcharts_Templating_root_Highcharts_Templating_default","__extends","setPrototypeOf","__proto__","__","create","getOptions","StockChart_setFixedRange","StockChart_addEvent","StockChart_clamp","StockChart_crisp","StockChart_defined","StockChart_extend","StockChart_find","StockChart_isNumber","StockChart_isString","StockChart_merge","StockChart_pick","StockChart_splat","getDefaultAxisOptions","showLastLabel","categories","getForcedAxisOptions","Navigator_NavigatorDefaults","axisOptions","StockChart","_super","callback","xAxisOptions","yAxisOptions","mouseWheel","tooltip","split","crosshairs","isStock","createAxis","onAxisAfterDrawCrosshair","cross","posx","posy","limit","log","logarithmic","tickInside","tickPosition","snap","crossLabel","formatOption","formatFormat","lin2log","labelAlign","shape","colorIndex","labelGroup","borderWidth","fontWeight","plotX","plotY","formatter","dateTime","isInside","isPointInside","crossBox","right","anchorX","anchorY","onAxisAfterHideCrosshair","onAxisAutoLabelAlign","panes","_labelPanes","labelOptions","side","onAxisDestroy","onAxisGetPlotLinePath","x1","y1","x2","y2","axes2","uniqueAxes","transVal","isLinked","linkedParent","axisLeft","axisTop","result","translatedValue","force","acrossPanes","otherColl","opt","axes2_1","A","_loop_1","axis2","unique","pos","axes_1","uniqueAxes_1","skip","transB","uniqueAxes_2","crispPolyLine","onSeriesSetOptions","overrides","is","shadow","radius","seriesForceCropping","dataGroupingOptions","allowDG","svgRendererCrispPolyLine","SVGRendererClass","forceCropping","stockChart","c","Chart_StockChart","HLCPoint_extends","TypeError","String","HLCPoint","pointClass","HLC_HLCSeriesDefaults","stickyTracking","HLCSeries_extends","ColumnSeries","HLCSeries_crisp","HLCSeries_extend","HLCSeries_merge","HLCSeries","extendStem","halfStrokeWidth","getPointPath","graphic","crispX","shapeArgs","yBottom","plotHigh","close","plotClose","drawSinglePoint","pointAttribs","getClassName","drawPoints","attribs","toYData","high","low","names","charAt","toUpperCase","tooltipPos","directTouch","keysAffectYAxis","pointAttrToOptions","registerSeriesType","OHLCPoint_extends","OHLCPoint","open","resolveUpColor","upColor","resolveColor","getZone","zone","applyOptions","OHLCPoint_HLCSeries","hlc","OHLC_OHLCSeriesDefaults","OHLCSeries_extends","OHLCSeries_composed","OHLCSeries_HLCSeries","OHLCSeries_addEvent","OHLCSeries_crisp","OHLCSeries_extend","OHLCSeries_merge","OHLCSeries_pushUnique","onSeriesAfterSetOptions","useOhlcData","onSeriesInit","eventOptions","OHLCSeries","_args","plotOpen","Candlestick_CandlestickSeriesDefaults","CandlestickSeries_extends","CandlestickSeries_ColumnSeries","CandlestickSeries_OHLCSeries","ohlc","CandlestickSeries_crisp","CandlestickSeries_merge","CandlestickSeries","isUp","upLineColor","stateOptions","reversedYAxis","points_1","topBox","bottomBox","hasTopWhisker","hasBottomWhisker","isNew","FlagsPoint_extends","FlagsPoint_ColumnPoint","FlagsPoint_isNumber","FlagsPoint","ttBelow","isValid","hasNewShapeType","symbolKey","Flags_FlagsSeriesDefaults","allowOverlapX","stackDistance","fillColor","modifiedMembers","flag","circle","createPinSymbol","labelX","startSeg","endSeg","labelY","RendererClass","Flags_FlagsSymbols","highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_","highcharts_Series_types_column_commonjs_highcharts_Series_types_column_commonjs2_highcharts_Series_types_column_root_Highcharts_Series_types_column_default","OnSeriesComposition_composed","columnProto","OnSeriesComposition_defined","OnSeriesComposition_pushUnique","stableSort","getPlotBox","onSeries","lastPoint","leftPoint","lastX","rightPoint","distanceRatio","optionsOnSeries","onData","onKey","pointXOffset","barW","totalRange","substr","state_1","p0_1","p3_1","p1_1","controlPoints","p2_1","calculateCoord","pow","tMin","tMax","i_1","tMid","xMid","stackIndex","seriesProto_1","Series_OnSeriesComposition","FlagsSeries_extends","distribute","Series","FlagsSeries_ColumnSeries","FlagsSeries_addEvent","FlagsSeries_defined","FlagsSeries_extend","FlagsSeries_isNumber","FlagsSeries_merge","FlagsSeries_objectEach","wrap","FlagsSeries","setClip","outsideRight","centered","optionsY","boxesMap","boxes","useHTML","markerGroup","target","maxDistance_1","box","point_1","plotX_1","graphic_1","proceed","drawTracker","unbindMouseOver","raised","points_3","otherPoint","points_2","clip","sharedClipKey","sharedClips","forceCrop","invertible","noSharedTooltip","sorted","trackerGroups","buildKDTree","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_","highcharts_StackItem_commonjs_highcharts_StackItem_commonjs2_highcharts_StackItem_root_Highcharts_StackItem_default","BrokenAxis_addEvent","BrokenAxis_find","BrokenAxis_fireEvent","BrokenAxis_isArray","BrokenAxis_isNumber","BrokenAxis_pick","setBreaks","onAxisAfterSetOptions","onAxisAfterSetTickPositions","tickPositions","newPositions","isInAnyBreak","onSeriesAfterGeneratePoints","connectNulls","isPointInBreak","onSeriesAfterRender","drawBreaks","seriesDrawBreaks","brokenAxis_1","breakArray","breaksOutOfRange","brk","isOut","otherBreak","seriesGappedPath","groupingSize","gapSize","gapUnit","current","next","xRange","isNull","stack","stacks","stackKey","stackLabels","total","getGraphPath","gappedPath","isInBreak","repeat","inclusive","lin2Val","nval","val2Lin","findBreakAt","testKeep","inbrk","keep","showPoints","forceRedraw","breaks_1","axisBreak","setAxisTranslation","unitLength","inBrk_1","repeat_1","start_1","breaks_2","breakArrayT_1","breakArray_1","pointRangePadding","min_1","max_1","move","breakSize","staticScale","minPointOffset","Axis_BrokenAxis","G","Axis","DataGrouping_ApproximationRegistry","ApproximationDefaults_arrayMax","ApproximationDefaults_arrayMin","ApproximationDefaults_correctFloat","ApproximationDefaults_extend","ApproximationDefaults_isNumber","average","arr","hasNulls","ApproximationDefaults","averages","DataGrouping_DataGroupingDefaults","common","dateTimeLabelFormats","seriesSpecific","line","spline","area","arearange","columnrange","candlestick","heikinashi","DataGroupingAxisComposition_addEvent","DataGroupingAxisComposition_extend","DataGroupingAxisComposition_merge","DataGroupingAxisComposition_pick","hasProcessed","dataLength","dgOptions","doGrouping","plotSizeX","onAfterSetScale","seriesOptions","DateTimeAxis_addEvent","getMagnitude","normalizeTickInterval","DateTimeAxis_timeUnits","onAfterSetType","normalizeTimeTickInterval","unitsOption","unit","multiples","getXDateFormat","getDateFormat","resolveDTLFormat","main","Axis_DateTimeAxis","DataGroupingSeriesComposition_seriesProto","DataGroupingSeriesComposition_addEvent","DataGroupingSeriesComposition_defined","DataGroupingSeriesComposition_error","DataGroupingSeriesComposition_extend","DataGroupingSeriesComposition_isNumber","DataGroupingSeriesComposition_merge","DataGroupingSeriesComposition_pick","DataGroupingSeriesComposition_splat","baseGeneratePoints","generatePoints","DataGroupingSeriesComposition_applyGrouping","hasGroupedData","croppedData","groupingEnabled","lastDataGrouping","revertRequireSorting","requireSorting","skipDataGrouping","isCartesian","table","groupAll","groupedXData","groupedData","groupData","smoothed","groupMap","anchorPoints","groupedDataLastIndex","anchorIndexIterator","anchorFirstIndex","groupStart","groupLength","firstGroupEnd","firstPoint","lastGroupStart","shiftInterval","allGroupedTable","cropData","cropStart","preventGraphAnimation","getDGApproximation","pointX","pointY","groupedY","yData","dataOptions","handleYData","values","pointArrayMapLength","extendedPointArrayMap","valueColumns","approximationFn","valuesLen","dataGroupInfo","optionsToObject","groupedValuesArr","j","onAfterSetOptions","useCommonDataGrouping","dataGroup","DataGrouping_format","DataGrouping_composed","DataGrouping_addEvent","DataGrouping_extend","DataGrouping_isNumber","DataGrouping_pick","DataGrouping_pushUnique","onTooltipHeaderFormatter","xDateFormatEnd","labelFormats","formattedKey","xDateFormat","formatString","isFooter","groupEnd","styledModeFormat","datagrouping_src_G","approximationDefaults","approximations","DataGrouping","TooltipClass","DataGrouping_DataGroupingAxisComposition","DataGrouping_DataGroupingSeriesComposition","Tooltip","NavigationBindingsUtilities_isNumber","NavigationBindingsUtilities_pick","MouseWheelZoom_addEvent","isObject","MouseWheelZoom_pick","MouseWheelZoom_defined","MouseWheelZoom_merge","MouseWheelZoom_getAssignedAxis","coords","coord","composedClasses","MouseWheelZoom_defaultOptions","sensitivity","zoomBy","howMuch","mouseX","mouseY","hasZoomed","transform","clearTimeout","drop","onAfterGetContainer","wheelZoomOptions","allowZoom","inClass","isInsidePlot","wheelSensitivity","delta","detail","deltaY","xAxisCoords","getCoordinates","yAxisCoords","mouse_wheel_zoom_src_G","MouseWheelZoom","Chart","stock_src_G","Point","Flags_FlagsSeries","Renderer","OHLC_OHLCSeries","SVGRenderer"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox