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/boost.js.map

{"version":3,"sources":["<anon>"],"sourcesContent":["/**\n * @license Highcharts JS v12.1.2 (2025-01-09)\n * @module highcharts/modules/boost\n * @requires highcharts\n *\n * Boost module\n *\n * (c) 2010-2024 Highsoft AS\n * Author: Torstein Honsi\n *\n * License: www.highcharts.com/license\n *\n * */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"highcharts\"), require(\"highcharts\")[\"Color\"]);\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"highcharts/modules/boost\", [[\"highcharts/highcharts\"], [\"highcharts/highcharts\",\"Color\"]], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"highcharts/modules/boost\"] = factory(require(\"highcharts\"), require(\"highcharts\")[\"Color\"]);\n\telse\n\t\troot[\"Highcharts\"] = factory(root[\"Highcharts\"], root[\"Highcharts\"][\"Color\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__944__, __WEBPACK_EXTERNAL_MODULE__620__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 620:\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__620__;\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 */ boost_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;// ./code/es5/es-modules/Extensions/Boost/Boostables.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n// These are the series we allow boosting for.\nvar Boostables = [\n    'area',\n    'areaspline',\n    'arearange',\n    'column',\n    'columnrange',\n    'bar',\n    'line',\n    'scatter',\n    'heatmap',\n    'bubble',\n    'treemap'\n];\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_Boostables = (Boostables);\n\n;// ./code/es5/es-modules/Extensions/Boost/BoostableMap.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Imports\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n// These are the series we allow boosting for.\nvar BoostableMap = {};\nBoost_Boostables.forEach(function (item) {\n    BoostableMap[item] = true;\n});\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_BoostableMap = (BoostableMap);\n\n;// ./code/es5/es-modules/Extensions/Boost/BoostChart.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\nvar composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed;\n\nvar addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction compose(ChartClass, wglMode) {\n    if (wglMode && pushUnique(composed, 'Boost.Chart')) {\n        ChartClass.prototype.callbacks.push(onChartCallback);\n    }\n    return ChartClass;\n}\n/**\n * Get the clip rectangle for a target, either a series or the chart.\n * For the chart, we need to consider the maximum extent of its Y axes,\n * in case of Highcharts Stock panes and navigator.\n *\n * @private\n * @function Highcharts.Chart#getBoostClipRect\n */\nfunction getBoostClipRect(chart, target) {\n    var navigator = chart.navigator;\n    var clipBox = {\n            x: chart.plotLeft,\n            y: chart.plotTop,\n            width: chart.plotWidth,\n            height: chart.plotHeight\n        };\n    if (navigator && chart.inverted) { // #17820, #20936\n        clipBox.width += navigator.top + navigator.height;\n        if (!navigator.opposite) {\n            clipBox.x = navigator.left;\n        }\n    }\n    else if (navigator && !chart.inverted) {\n        clipBox.height = navigator.top + navigator.height - chart.plotTop;\n    }\n    // Clipping of individual series (#11906, #19039).\n    if (target.getClipBox) {\n        var _a = target,\n            xAxis = _a.xAxis,\n            yAxis = _a.yAxis;\n        clipBox = target.getClipBox();\n        if (chart.inverted) {\n            var lateral = clipBox.width;\n            clipBox.width = clipBox.height;\n            clipBox.height = lateral;\n            clipBox.x = yAxis.pos;\n            clipBox.y = xAxis.pos;\n        }\n        else {\n            clipBox.x = xAxis.pos;\n            clipBox.y = yAxis.pos;\n        }\n    }\n    if (target === chart) {\n        var verticalAxes = chart.inverted ? chart.xAxis : chart.yAxis; // #14444\n            if (verticalAxes.length <= 1) {\n                clipBox.y = Math.min(verticalAxes[0].pos,\n            clipBox.y);\n            clipBox.height = (verticalAxes[0].pos -\n                chart.plotTop +\n                verticalAxes[0].len);\n        }\n    }\n    return clipBox;\n}\n/**\n * Returns true if the chart is in series boost mode.\n * @private\n * @param {Highcharts.Chart} chart\n * Chart to check.\n * @return {boolean}\n * `true` if the chart is in series boost mode.\n */\nfunction isChartSeriesBoosting(chart) {\n    var allSeries = chart.series,\n        boost = chart.boost = chart.boost || {},\n        boostOptions = chart.options.boost || {},\n        threshold = pick(boostOptions.seriesThreshold, 50);\n    if (allSeries.length >= threshold) {\n        return true;\n    }\n    if (allSeries.length === 1) {\n        return false;\n    }\n    var allowBoostForce = boostOptions.allowForce;\n    if (typeof allowBoostForce === 'undefined') {\n        allowBoostForce = true;\n        for (var _i = 0, _a = chart.xAxis; _i < _a.length; _i++) {\n            var axis = _a[_i];\n            if (pick(axis.min, -Infinity) > pick(axis.dataMin, -Infinity) ||\n                pick(axis.max, Infinity) < pick(axis.dataMax, Infinity)) {\n                allowBoostForce = false;\n                break;\n            }\n        }\n    }\n    if (typeof boost.forceChartBoost !== 'undefined') {\n        if (allowBoostForce) {\n            return boost.forceChartBoost;\n        }\n        boost.forceChartBoost = void 0;\n    }\n    // If there are more than five series currently boosting,\n    // we should boost the whole chart to avoid running out of webgl contexts.\n    var canBoostCount = 0,\n        needBoostCount = 0,\n        seriesOptions;\n    for (var _b = 0, allSeries_1 = allSeries; _b < allSeries_1.length; _b++) {\n        var series = allSeries_1[_b];\n        seriesOptions = series.options;\n        // Don't count series with boostThreshold set to 0\n        // See #8950\n        // Also don't count if the series is hidden.\n        // See #9046\n        if (seriesOptions.boostThreshold === 0 ||\n            series.visible === false) {\n            continue;\n        }\n        // Don't count heatmap series as they are handled differently.\n        // In the future we should make the heatmap/treemap path compatible\n        // with forcing. See #9636.\n        if (series.type === 'heatmap') {\n            continue;\n        }\n        if (Boost_BoostableMap[series.type]) {\n            ++canBoostCount;\n        }\n        if (patientMax(series.getColumn('x', true), seriesOptions.data, \n        /// series.xData,\n        series.points) >= (seriesOptions.boostThreshold || Number.MAX_VALUE)) {\n            ++needBoostCount;\n        }\n    }\n    boost.forceChartBoost = allowBoostForce && ((\n    // Even when the series that need a boost are less than or equal\n    // to 5, force a chart boost when all series are to be boosted.\n    // See #18815\n    canBoostCount === allSeries.length &&\n        needBoostCount === canBoostCount) ||\n        needBoostCount > 5);\n    return boost.forceChartBoost;\n}\n/**\n * Take care of the canvas blitting\n * @private\n */\nfunction onChartCallback(chart) {\n    /**\n     * Convert chart-level canvas to image.\n     * @private\n     */\n    function canvasToSVG() {\n        if (chart.boost &&\n            chart.boost.wgl &&\n            isChartSeriesBoosting(chart)) {\n            chart.boost.wgl.render(chart);\n        }\n    }\n    /**\n     * Clear chart-level canvas.\n     * @private\n     */\n    function preRender() {\n        var _a,\n            _b;\n        // Reset force state\n        chart.boost = chart.boost || {};\n        chart.boost.forceChartBoost = void 0;\n        chart.boosted = false;\n        // Clear the canvas\n        if (!chart.axes.some(function (axis) { return axis.isPanning; })) {\n            (_b = (_a = chart.boost).clear) === null || _b === void 0 ? void 0 : _b.call(_a);\n        }\n        if (chart.boost.canvas &&\n            chart.boost.wgl &&\n            isChartSeriesBoosting(chart)) {\n            // Allocate\n            chart.boost.wgl.allocateBuffer(chart);\n        }\n        // See #6518 + #6739\n        if (chart.boost.markerGroup &&\n            chart.xAxis &&\n            chart.xAxis.length > 0 &&\n            chart.yAxis &&\n            chart.yAxis.length > 0) {\n            chart.boost.markerGroup.translate(chart.xAxis[0].pos, chart.yAxis[0].pos);\n        }\n    }\n    addEvent(chart, 'predraw', preRender);\n    // Use the load event rather than redraw, otherwise user load events will\n    // fire too early (#18755)\n    addEvent(chart, 'load', canvasToSVG, { order: -1 });\n    addEvent(chart, 'redraw', canvasToSVG);\n    var prevX = -1;\n    var prevY = -1;\n    addEvent(chart.pointer, 'afterGetHoverData', function (e) {\n        var _a;\n        var series = (_a = e.hoverPoint) === null || _a === void 0 ? void 0 : _a.series;\n        chart.boost = chart.boost || {};\n        if (chart.boost.markerGroup && series) {\n            var xAxis = chart.inverted ? series.yAxis : series.xAxis;\n            var yAxis = chart.inverted ? series.xAxis : series.yAxis;\n            if ((xAxis && xAxis.pos !== prevX) ||\n                (yAxis && yAxis.pos !== prevY)) {\n                // #21176: If the axis is changed, hide teh halo without\n                // animation  to prevent flickering of halos sharing the\n                // same marker group\n                chart.series.forEach(function (s) {\n                    var _a;\n                    (_a = s.halo) === null || _a === void 0 ? void 0 : _a.hide();\n                });\n                // #10464: Keep the marker group position in sync with the\n                // position of the hovered series axes since there is only\n                // one shared marker group when boosting.\n                chart.boost.markerGroup.translate(xAxis.pos, yAxis.pos);\n                prevX = xAxis.pos;\n                prevY = yAxis.pos;\n            }\n        }\n    });\n}\n/**\n * Tolerant max() function.\n *\n * @private\n * @param {...Array<Array<unknown>>} args\n * Max arguments\n * @return {number}\n * Max value\n */\nfunction patientMax() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    var r = -Number.MAX_VALUE;\n    args.forEach(function (t) {\n        if (typeof t !== 'undefined' &&\n            t !== null &&\n            typeof t.length !== 'undefined') {\n            if (t.length > 0) {\n                r = t.length;\n                return true;\n            }\n        }\n    });\n    return r;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar BoostChart = {\n    compose: compose,\n    getBoostClipRect: getBoostClipRect,\n    isChartSeriesBoosting: isChartSeriesBoosting\n};\n/* harmony default export */ var Boost_BoostChart = (BoostChart);\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;// ./code/es5/es-modules/Extensions/Boost/WGLDrawMode.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\nvar WGLDrawMode = {\n    'area': 'LINES',\n    'arearange': 'LINES',\n    'areaspline': 'LINES',\n    'column': 'LINES',\n    'columnrange': 'LINES',\n    'bar': 'LINES',\n    'line': 'LINE_STRIP',\n    'scatter': 'POINTS',\n    'heatmap': 'TRIANGLES',\n    'treemap': 'TRIANGLES',\n    'bubble': 'POINTS'\n};\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_WGLDrawMode = (WGLDrawMode);\n\n;// ./code/es5/es-modules/Extensions/Boost/WGLShader.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\nvar clamp = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).clamp, error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, WGLShader_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n/* *\n *\n *  Constants\n *\n * */\nvar fragmentShader = [\n    /* eslint-disable max-len, @typescript-eslint/indent */\n    'precision highp float;',\n    'uniform vec4 fillColor;',\n    'varying highp vec2 position;',\n    'varying highp vec4 vColor;',\n    'uniform sampler2D uSampler;',\n    'uniform bool isCircle;',\n    'uniform bool hasColor;',\n    // 'vec4 toColor(float value, vec2 point) {',\n    //     'return vec4(0.0, 0.0, 0.0, 0.0);',\n    // '}',\n    'void main(void) {',\n    'vec4 col = fillColor;',\n    'vec4 tcol = texture2D(uSampler, gl_PointCoord.st);',\n    'if (hasColor) {',\n    'col = vColor;',\n    '}',\n    'if (isCircle) {',\n    'col *= tcol;',\n    'if (tcol.r < 0.0) {',\n    'discard;',\n    '} else {',\n    'gl_FragColor = col;',\n    '}',\n    '} else {',\n    'gl_FragColor = col;',\n    '}',\n    '}'\n    /* eslint-enable max-len, @typescript-eslint/indent */\n].join('\\n');\nvar vertexShader = [\n    /* eslint-disable max-len, @typescript-eslint/indent */\n    '#version 100',\n    '#define LN10 2.302585092994046',\n    'precision highp float;',\n    'attribute vec4 aVertexPosition;',\n    'attribute vec4 aColor;',\n    'varying highp vec2 position;',\n    'varying highp vec4 vColor;',\n    'uniform mat4 uPMatrix;',\n    'uniform float pSize;',\n    'uniform float translatedThreshold;',\n    'uniform bool hasThreshold;',\n    'uniform bool skipTranslation;',\n    'uniform float xAxisTrans;',\n    'uniform float xAxisMin;',\n    'uniform float xAxisMinPad;',\n    'uniform float xAxisPointRange;',\n    'uniform float xAxisLen;',\n    'uniform bool  xAxisPostTranslate;',\n    'uniform float xAxisOrdinalSlope;',\n    'uniform float xAxisOrdinalOffset;',\n    'uniform float xAxisPos;',\n    'uniform bool  xAxisCVSCoord;',\n    'uniform bool  xAxisIsLog;',\n    'uniform bool  xAxisReversed;',\n    'uniform float yAxisTrans;',\n    'uniform float yAxisMin;',\n    'uniform float yAxisMinPad;',\n    'uniform float yAxisPointRange;',\n    'uniform float yAxisLen;',\n    'uniform bool  yAxisPostTranslate;',\n    'uniform float yAxisOrdinalSlope;',\n    'uniform float yAxisOrdinalOffset;',\n    'uniform float yAxisPos;',\n    'uniform bool  yAxisCVSCoord;',\n    'uniform bool  yAxisIsLog;',\n    'uniform bool  yAxisReversed;',\n    'uniform bool  isBubble;',\n    'uniform bool  bubbleSizeByArea;',\n    'uniform float bubbleZMin;',\n    'uniform float bubbleZMax;',\n    'uniform float bubbleZThreshold;',\n    'uniform float bubbleMinSize;',\n    'uniform float bubbleMaxSize;',\n    'uniform bool  bubbleSizeAbs;',\n    'uniform bool  isInverted;',\n    'float bubbleRadius(){',\n    'float value = aVertexPosition.w;',\n    'float zMax = bubbleZMax;',\n    'float zMin = bubbleZMin;',\n    'float radius = 0.0;',\n    'float pos = 0.0;',\n    'float zRange = zMax - zMin;',\n    'if (bubbleSizeAbs){',\n    'value = value - bubbleZThreshold;',\n    'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);',\n    'zMin = 0.0;',\n    '}',\n    'if (value < zMin){',\n    'radius = bubbleZMin / 2.0 - 1.0;',\n    '} else {',\n    'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;',\n    'if (bubbleSizeByArea && pos > 0.0){',\n    'pos = sqrt(pos);',\n    '}',\n    'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;',\n    '}',\n    'return radius * 2.0;',\n    '}',\n    'float translate(float val,',\n    'float pointPlacement,',\n    'float localA,',\n    'float localMin,',\n    'float minPixelPadding,',\n    'float pointRange,',\n    'float len,',\n    'bool  cvsCoord,',\n    'bool  isLog,',\n    'bool  reversed',\n    '){',\n    'float sign = 1.0;',\n    'float cvsOffset = 0.0;',\n    'if (cvsCoord) {',\n    'sign *= -1.0;',\n    'cvsOffset = len;',\n    '}',\n    'if (isLog) {',\n    'val = log(val) / LN10;',\n    '}',\n    'if (reversed) {',\n    'sign *= -1.0;',\n    'cvsOffset -= sign * len;',\n    '}',\n    'return sign * (val - localMin) * localA + cvsOffset + ',\n    '(sign * minPixelPadding);', // ' + localA * pointPlacement * pointRange;',\n    '}',\n    'float xToPixels(float value) {',\n    'if (skipTranslation){',\n    'return value;// + xAxisPos;',\n    '}',\n    'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;',\n    '}',\n    'float yToPixels(float value, float checkTreshold) {',\n    'float v;',\n    'if (skipTranslation){',\n    'v = value;// + yAxisPos;',\n    '} else {',\n    'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;',\n    'if (v > yAxisLen) {',\n    'v = yAxisLen;',\n    '}',\n    '}',\n    'if (checkTreshold > 0.0 && hasThreshold) {',\n    'v = min(v, translatedThreshold);',\n    '}',\n    'return v;',\n    '}',\n    'void main(void) {',\n    'if (isBubble){',\n    'gl_PointSize = bubbleRadius();',\n    '} else {',\n    'gl_PointSize = pSize;',\n    '}',\n    // 'gl_PointSize = 10.0;',\n    'vColor = aColor;',\n    'if (skipTranslation && isInverted) {',\n    // If we get translated values from JS, just swap them (x, y)\n    'gl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);',\n    '} else if (isInverted) {',\n    // But when calculating pixel positions directly,\n    // swap axes and values (x, y)\n    'gl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);',\n    '} else {',\n    'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);',\n    '}',\n    // 'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);',\n    '}'\n    /* eslint-enable max-len, @typescript-eslint/indent */\n].join('\\n');\n/* *\n *\n *  Class\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * A static shader mimicing axis translation functions found in Core/Axis\n *\n * @private\n *\n * @param {WebGLContext} gl\n * the context in which the shader is active\n */\nvar WGLShader = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function WGLShader(gl) {\n        // Error stack\n        this.errors = [];\n        this.uLocations = {};\n        this.gl = gl;\n        if (gl && !this.createShader()) {\n            return void 0;\n        }\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Bind the shader.\n     * This makes the shader the active one until another one is bound,\n     * or until 0 is bound.\n     * @private\n     */\n    WGLShader.prototype.bind = function () {\n        if (this.gl && this.shaderProgram) {\n            this.gl.useProgram(this.shaderProgram);\n        }\n    };\n    /**\n     * Create the shader.\n     * Loads the shader program statically defined above\n     * @private\n     */\n    WGLShader.prototype.createShader = function () {\n        var _this = this;\n        var v = this.stringToProgram(vertexShader, 'vertex'), f = this.stringToProgram(fragmentShader, 'fragment'), uloc = function (n) { return (_this.gl.getUniformLocation(_this.shaderProgram, n)); };\n        if (!v || !f) {\n            this.shaderProgram = false;\n            this.handleErrors();\n            return false;\n        }\n        this.shaderProgram = this.gl.createProgram();\n        this.gl.attachShader(this.shaderProgram, v);\n        this.gl.attachShader(this.shaderProgram, f);\n        this.gl.linkProgram(this.shaderProgram);\n        if (!this.gl.getProgramParameter(this.shaderProgram, this.gl.LINK_STATUS)) {\n            this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram));\n            this.handleErrors();\n            this.shaderProgram = false;\n            return false;\n        }\n        this.gl.useProgram(this.shaderProgram);\n        this.gl.bindAttribLocation(this.shaderProgram, 0, 'aVertexPosition');\n        this.pUniform = uloc('uPMatrix');\n        this.psUniform = uloc('pSize');\n        this.fcUniform = uloc('fillColor');\n        this.isBubbleUniform = uloc('isBubble');\n        this.bubbleSizeAbsUniform = uloc('bubbleSizeAbs');\n        this.bubbleSizeAreaUniform = uloc('bubbleSizeByArea');\n        this.uSamplerUniform = uloc('uSampler');\n        this.skipTranslationUniform = uloc('skipTranslation');\n        this.isCircleUniform = uloc('isCircle');\n        this.isInverted = uloc('isInverted');\n        return true;\n    };\n    /**\n     * Handle errors accumulated in errors stack\n     * @private\n     */\n    WGLShader.prototype.handleErrors = function () {\n        if (this.errors.length) {\n            error('[highcharts boost] shader error - ' +\n                this.errors.join('\\n'));\n        }\n    };\n    /**\n     * String to shader program\n     * @private\n     * @param {string} str\n     * Program source\n     * @param {string} type\n     * Program type: either `vertex` or `fragment`\n     */\n    WGLShader.prototype.stringToProgram = function (str, type) {\n        var shader = this.gl.createShader(type === 'vertex' ? this.gl.VERTEX_SHADER : this.gl.FRAGMENT_SHADER);\n        this.gl.shaderSource(shader, str);\n        this.gl.compileShader(shader);\n        if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {\n            this.errors.push('when compiling ' +\n                type +\n                ' shader:\\n' +\n                this.gl.getShaderInfoLog(shader));\n            return false;\n        }\n        return shader;\n    };\n    /**\n     * Destroy the shader\n     * @private\n     */\n    WGLShader.prototype.destroy = function () {\n        if (this.gl && this.shaderProgram) {\n            this.gl.deleteProgram(this.shaderProgram);\n            this.shaderProgram = false;\n        }\n    };\n    WGLShader.prototype.fillColorUniform = function () {\n        return this.fcUniform;\n    };\n    /**\n     * Get the shader program handle\n     * @private\n     * @return {WebGLProgram}\n     * The handle for the program\n     */\n    WGLShader.prototype.getProgram = function () {\n        return this.shaderProgram;\n    };\n    WGLShader.prototype.pointSizeUniform = function () {\n        return this.psUniform;\n    };\n    WGLShader.prototype.perspectiveUniform = function () {\n        return this.pUniform;\n    };\n    /**\n     * Flush\n     * @private\n     */\n    WGLShader.prototype.reset = function () {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1i(this.isBubbleUniform, 0);\n            this.gl.uniform1i(this.isCircleUniform, 0);\n        }\n    };\n    /**\n     * Set bubble uniforms\n     * @private\n     * @param {Highcharts.Series} series\n     * Series to use\n     */\n    WGLShader.prototype.setBubbleUniforms = function (series, zCalcMin, zCalcMax, pixelRatio) {\n        if (pixelRatio === void 0) { pixelRatio = 1; }\n        var seriesOptions = series.options;\n        var zMin = Number.MAX_VALUE,\n            zMax = -Number.MAX_VALUE;\n        if (this.gl && this.shaderProgram && series.is('bubble')) {\n            var pxSizes = series.getPxExtremes();\n            zMin = WGLShader_pick(seriesOptions.zMin, clamp(zCalcMin, seriesOptions.displayNegative === false ?\n                seriesOptions.zThreshold : -Number.MAX_VALUE, zMin));\n            zMax = WGLShader_pick(seriesOptions.zMax, Math.max(zMax, zCalcMax));\n            this.gl.uniform1i(this.isBubbleUniform, 1);\n            this.gl.uniform1i(this.isCircleUniform, 1);\n            this.gl.uniform1i(this.bubbleSizeAreaUniform, (series.options.sizeBy !== 'width'));\n            this.gl.uniform1i(this.bubbleSizeAbsUniform, series.options\n                .sizeByAbsoluteValue);\n            this.setUniform('bubbleMinSize', pxSizes.minPxSize * pixelRatio);\n            this.setUniform('bubbleMaxSize', pxSizes.maxPxSize * pixelRatio);\n            this.setUniform('bubbleZMin', zMin);\n            this.setUniform('bubbleZMax', zMax);\n            this.setUniform('bubbleZThreshold', series.options.zThreshold);\n        }\n    };\n    /**\n     * Set the Color uniform.\n     * @private\n     * @param {Array<number>} color\n     * Array with RGBA values.\n     */\n    WGLShader.prototype.setColor = function (color) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform4f(this.fcUniform, color[0] / 255.0, color[1] / 255.0, color[2] / 255.0, color[3]);\n        }\n    };\n    /**\n     * Enable/disable circle drawing\n     * @private\n     */\n    WGLShader.prototype.setDrawAsCircle = function (flag) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1i(this.isCircleUniform, flag ? 1 : 0);\n        }\n    };\n    /**\n     * Set if inversion state\n     * @private\n     * @param {number} flag\n     * Inversion flag\n     */\n    WGLShader.prototype.setInverted = function (flag) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1i(this.isInverted, flag);\n        }\n    };\n    /**\n     * Set the perspective matrix\n     * @private\n     * @param {Float32List} m\n     * Matrix 4 x 4\n     */\n    WGLShader.prototype.setPMatrix = function (m) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniformMatrix4fv(this.pUniform, false, m);\n        }\n    };\n    /**\n     * Set the point size.\n     * @private\n     * @param {number} p\n     * Point size\n     */\n    WGLShader.prototype.setPointSize = function (p) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1f(this.psUniform, p);\n        }\n    };\n    /**\n     * Set skip translation\n     * @private\n     */\n    WGLShader.prototype.setSkipTranslation = function (flag) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1i(this.skipTranslationUniform, flag === true ? 1 : 0);\n        }\n    };\n    /**\n     * Set the active texture\n     * @private\n     * @param {number} texture\n     * Texture to activate\n     */\n    WGLShader.prototype.setTexture = function (texture) {\n        if (this.gl && this.shaderProgram) {\n            this.gl.uniform1i(this.uSamplerUniform, texture);\n        }\n    };\n    /**\n     * Set a uniform value.\n     * This uses a hash map to cache uniform locations.\n     * @private\n     * @param {string} name\n     * Name of the uniform to set.\n     * @param {number} val\n     * Value to set\n     */\n    WGLShader.prototype.setUniform = function (name, val) {\n        if (this.gl && this.shaderProgram) {\n            var u = this.uLocations[name] = (this.uLocations[name] ||\n                    this.gl.getUniformLocation(this.shaderProgram,\n                name));\n            this.gl.uniform1f(u, val);\n        }\n    };\n    return WGLShader;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_WGLShader = (WGLShader);\n\n;// ./code/es5/es-modules/Extensions/Boost/WGLVertexBuffer.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Class\n *\n * */\n/**\n * Vertex Buffer abstraction.\n * A vertex buffer is a set of vertices which are passed to the GPU\n * in a single call.\n *\n * @private\n * @class\n * @name WGLVertexBuffer\n *\n * @param {WebGLContext} gl\n * Context in which to create the buffer.\n * @param {WGLShader} shader\n * Shader to use.\n */\nvar WGLVertexBuffer = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function WGLVertexBuffer(gl, shader, dataComponents\n    /* , type */\n    ) {\n        /* *\n         *\n         *  Properties\n         *\n         * */\n        this.buffer = false;\n        this.iterator = 0;\n        this.preAllocated = false;\n        this.vertAttribute = false;\n        this.components = dataComponents || 2;\n        this.dataComponents = dataComponents;\n        this.gl = gl;\n        this.shader = shader;\n    }\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * Note about pre-allocated buffers:\n     *     - This is slower for charts with many series\n     * @private\n     */\n    WGLVertexBuffer.prototype.allocate = function (size) {\n        this.iterator = -1;\n        this.preAllocated = new Float32Array(size * 4);\n    };\n    /**\n     * Bind the buffer\n     * @private\n     */\n    WGLVertexBuffer.prototype.bind = function () {\n        if (!this.buffer) {\n            return false;\n        }\n        /// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');\n        // gl.enableVertexAttribArray(vertAttribute);\n        // gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n        this.gl.vertexAttribPointer(this.vertAttribute, this.components, this.gl.FLOAT, false, 0, 0);\n        /// gl.enableVertexAttribArray(vertAttribute);\n    };\n    /**\n     * Build the buffer\n     * @private\n     * @param {Array<number>} dataIn\n     * Zero padded array of indices\n     * @param {string} attrib\n     * Name of the Attribute to bind the buffer to\n     * @param {number} dataComponents\n     * Number of components per. indice\n     */\n    WGLVertexBuffer.prototype.build = function (dataIn, attrib, dataComponents) {\n        var farray;\n        this.data = dataIn || [];\n        if ((!this.data || this.data.length === 0) && !this.preAllocated) {\n            /// console.error('trying to render empty vbuffer');\n            this.destroy();\n            return false;\n        }\n        this.components = dataComponents || this.components;\n        if (this.buffer) {\n            this.gl.deleteBuffer(this.buffer);\n        }\n        if (!this.preAllocated) {\n            farray = new Float32Array(this.data);\n        }\n        this.buffer = this.gl.createBuffer();\n        this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.buffer);\n        this.gl.bufferData(this.gl.ARRAY_BUFFER, this.preAllocated || farray, this.gl.STATIC_DRAW);\n        /// gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');\n        this.vertAttribute = this.gl\n            .getAttribLocation(this.shader.getProgram(), attrib);\n        this.gl.enableVertexAttribArray(this.vertAttribute);\n        // Trigger cleanup\n        farray = false;\n        return true;\n    };\n    /**\n     * @private\n     */\n    WGLVertexBuffer.prototype.destroy = function () {\n        if (this.buffer) {\n            this.gl.deleteBuffer(this.buffer);\n            this.buffer = false;\n            this.vertAttribute = false;\n        }\n        this.iterator = 0;\n        this.components = this.dataComponents || 2;\n        this.data = [];\n    };\n    /**\n     * Adds data to the pre-allocated buffer.\n     * @private\n     * @param {number} x\n     * X data\n     * @param {number} y\n     * Y data\n     * @param {number} a\n     * A data\n     * @param {number} b\n     * B data\n     */\n    WGLVertexBuffer.prototype.push = function (x, y, a, b) {\n        if (this.preAllocated) { // && iterator <= preAllocated.length - 4) {\n            this.preAllocated[++this.iterator] = x;\n            this.preAllocated[++this.iterator] = y;\n            this.preAllocated[++this.iterator] = a;\n            this.preAllocated[++this.iterator] = b;\n        }\n    };\n    /**\n     * Render the buffer\n     *\n     * @private\n     * @param {number} from\n     * Start indice.\n     * @param {number} to\n     * End indice.\n     * @param {WGLDrawModeValue} drawMode\n     * Draw mode.\n     */\n    WGLVertexBuffer.prototype.render = function (from, to, drawMode) {\n        var length = this.preAllocated ?\n                this.preAllocated.length : this.data.length;\n        if (!this.buffer) {\n            return false;\n        }\n        if (!length) {\n            return false;\n        }\n        if (!from || from > length || from < 0) {\n            from = 0;\n        }\n        if (!to || to > length) {\n            to = length;\n        }\n        if (from >= to) {\n            return false;\n        }\n        drawMode = drawMode || 'POINTS';\n        this.gl.drawArrays(this.gl[drawMode], from / this.components, (to - from) / this.components);\n        return true;\n    };\n    return WGLVertexBuffer;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_WGLVertexBuffer = (WGLVertexBuffer);\n\n;// ./code/es5/es-modules/Extensions/Boost/WGLRenderer.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: 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 doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\nvar isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, isObject = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isObject, merge = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).merge, objectEach = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).objectEach, WGLRenderer_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick;\n\n\n\n/* *\n *\n *  Constants\n *\n * */\n// Things to draw as \"rectangles\" (i.e lines)\nvar asBar = {\n    'column': true,\n    'columnrange': true,\n    'bar': true,\n    'area': true,\n    'areaspline': true,\n    'arearange': true\n};\nvar asCircle = {\n    'scatter': true,\n    'bubble': true\n};\nvar contexts = [\n    'webgl',\n    'experimental-webgl',\n    'moz-webgl',\n    'webkit-3d'\n];\n/* *\n *\n *  Class\n *\n * */\n/* eslint-disable valid-jsdoc */\n/**\n * Main renderer. Used to render series.\n *\n * Notes to self:\n * - May be able to build a point map by rendering to a separate canvas and\n *   encoding values in the color data.\n * - Need to figure out a way to transform the data quicker\n *\n * @private\n *\n * @param {Function} postRenderCallback\n */\nvar WGLRenderer = /** @class */ (function () {\n    /* *\n     *\n     *  Constructor\n     *\n     * */\n    function WGLRenderer(postRenderCallback) {\n        /**\n         * The data to render - array of coordinates.\n         * Repeating sequence of [x, y, checkThreshold, pointSize].\n         */\n        this.data = [];\n        // Height of our viewport in pixels\n        this.height = 0;\n        // Is it inited?\n        this.isInited = false;\n        // The marker data\n        this.markerData = [];\n        // The series stack\n        this.series = [];\n        // Texture handles\n        this.textureHandles = {};\n        // Width of our viewport in pixels\n        this.width = 0;\n        this.postRenderCallback = postRenderCallback;\n        this.settings = {\n            pointSize: 1,\n            lineWidth: 1,\n            fillColor: '#AA00AA',\n            useAlpha: true,\n            usePreallocated: false,\n            useGPUTranslations: false,\n            debug: {\n                timeRendering: false,\n                timeSeriesProcessing: false,\n                timeSetup: false,\n                timeBufferCopy: false,\n                timeKDTree: false,\n                showSkipSummary: false\n            }\n        };\n    }\n    /* *\n     *\n     *  Static Functions\n     *\n     * */\n    /**\n     * Returns an orthographic perspective matrix\n     * @private\n     * @param {number} width\n     * the width of the viewport in pixels\n     * @param {number} height\n     * the height of the viewport in pixels\n     */\n    WGLRenderer.orthoMatrix = function (width, height) {\n        var near = 0,\n            far = 1;\n        return [\n            2 / width, 0, 0, 0,\n            0, -(2 / height), 0, 0,\n            0, 0, -2 / (far - near), 0,\n            -1, 1, -(far + near) / (far - near), 1\n        ];\n    };\n    /**\n     * @private\n     */\n    WGLRenderer.seriesPointCount = function (series) {\n        var isStacked,\n            xData,\n            s;\n        if (series.boosted) {\n            isStacked = !!series.options.stacking;\n            xData = ((series.getColumn('x').length ?\n                series.getColumn('x') :\n                void 0) ||\n                series.options.xData ||\n                series.getColumn('x', true));\n            s = (isStacked ? series.data : (xData || series.options.data))\n                .length;\n            if (series.type === 'treemap') {\n                s *= 12;\n            }\n            else if (series.type === 'heatmap') {\n                s *= 6;\n            }\n            else if (asBar[series.type]) {\n                s *= 2;\n            }\n            return s;\n        }\n        return 0;\n    };\n    /* *\n     *\n     *  Functions\n     *\n     * */\n    /**\n     * @private\n     */\n    WGLRenderer.prototype.getPixelRatio = function () {\n        return this.settings.pixelRatio || win.devicePixelRatio || 1;\n    };\n    /**\n     * @private\n     */\n    WGLRenderer.prototype.setOptions = function (options) {\n        // The pixelRatio defaults to 1. This is an antipattern, we should\n        // refactor the Boost options to include an object of default options as\n        // base for the merge, like other components.\n        if (!('pixelRatio' in options)) {\n            options.pixelRatio = 1;\n        }\n        merge(true, this.settings, options);\n    };\n    /**\n     * Allocate a float buffer to fit all series\n     * @private\n     */\n    WGLRenderer.prototype.allocateBuffer = function (chart) {\n        var vbuffer = this.vbuffer;\n        var s = 0;\n        if (!this.settings.usePreallocated) {\n            return;\n        }\n        chart.series.forEach(function (series) {\n            if (series.boosted) {\n                s += WGLRenderer.seriesPointCount(series);\n            }\n        });\n        vbuffer && vbuffer.allocate(s);\n    };\n    /**\n     * @private\n     */\n    WGLRenderer.prototype.allocateBufferForSingleSeries = function (series) {\n        var vbuffer = this.vbuffer;\n        var s = 0;\n        if (!this.settings.usePreallocated) {\n            return;\n        }\n        if (series.boosted) {\n            s = WGLRenderer.seriesPointCount(series);\n        }\n        vbuffer && vbuffer.allocate(s);\n    };\n    /**\n     * Clear the depth and color buffer\n     * @private\n     */\n    WGLRenderer.prototype.clear = function () {\n        var gl = this.gl;\n        gl && gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n    };\n    /**\n     * Push data for a single series\n     * This calculates additional vertices and transforms the data to be\n     * aligned correctly in memory\n     * @private\n     */\n    WGLRenderer.prototype.pushSeriesData = function (series, inst) {\n        var _this = this;\n        var _a,\n            _b;\n        var data = this.data, settings = this.settings, vbuffer = this.vbuffer, isRange = (series.pointArrayMap &&\n                series.pointArrayMap.join(',') === 'low,high'), chart = series.chart, options = series.options, sorted = series.sorted, xAxis = series.xAxis, yAxis = series.yAxis, isStacked = !!options.stacking, rawData = options.data, xExtremes = series.xAxis.getExtremes(), \n            // Taking into account the offset of the min point #19497\n            xMin = xExtremes.min - (series.xAxis.minPointOffset || 0), xMax = xExtremes.max + (series.xAxis.minPointOffset || 0), yExtremes = series.yAxis.getExtremes(), yMin = yExtremes.min - (series.yAxis.minPointOffset || 0), yMax = yExtremes.max + (series.yAxis.minPointOffset || 0), xData = (series.getColumn('x').length ? series.getColumn('x') : void 0) || options.xData || series.getColumn('x', true), yData = (series.getColumn('y').length ? series.getColumn('y') : void 0) || options.yData || series.getColumn('y', true), zData = (series.getColumn('z').length ? series.getColumn('z') : void 0) || options.zData || series.getColumn('z', true), useRaw = !xData || xData.length === 0, \n            /// threshold = options.threshold,\n            // yBottom = chart.yAxis[0].getThreshold(threshold),\n            // hasThreshold = isNumber(threshold),\n            // colorByPoint = series.options.colorByPoint,\n            // This is required for color by point, so make sure this is\n            // uncommented if enabling that\n            // colorIndex = 0,\n            // Required for color axis support\n            // caxis,\n            connectNulls = options.connectNulls, \n            // For some reason eslint/TypeScript don't pick up that this is\n            // actually used: --- bre1470: it is never read, just set\n            // maxVal: (number|undefined), // eslint-disable-line no-unused-vars\n            points = series.points || false, sdata = isStacked ? series.data : (xData || rawData), closestLeft = { x: Number.MAX_VALUE, y: 0 }, closestRight = { x: -Number.MAX_VALUE, y: 0 }, cullXThreshold = 1, cullYThreshold = 1, chartDestroyed = typeof chart.index === 'undefined', drawAsBar = asBar[series.type], zoneAxis = options.zoneAxis || 'y', zones = options.zones || false, threshold = options.threshold, pixelRatio = this.getPixelRatio();\n        var plotWidth = series.chart.plotWidth,\n            lastX = false,\n            lastY = false,\n            minVal,\n            scolor, \n            //\n            skipped = 0,\n            hadPoints = false, \n            // The following are used in the builder while loop\n            x,\n            y,\n            d,\n            z,\n            i = -1,\n            px = false,\n            nx = false,\n            low,\n            nextInside = false,\n            prevInside = false,\n            pcolor = false,\n            isXInside = false,\n            isYInside = true,\n            firstPoint = true,\n            zoneColors,\n            zoneDefColor = false,\n            gapSize = false,\n            vlen = 0;\n        if (options.boostData && options.boostData.length > 0) {\n            return;\n        }\n        if (options.gapSize) {\n            gapSize = options.gapUnit !== 'value' ?\n                options.gapSize * series.closestPointRange :\n                options.gapSize;\n        }\n        if (zones) {\n            zoneColors = [];\n            zones.forEach(function (zone, i) {\n                if (zone.color) {\n                    var zoneColor = color(zone.color).rgba;\n                    zoneColor[0] /= 255.0;\n                    zoneColor[1] /= 255.0;\n                    zoneColor[2] /= 255.0;\n                    zoneColors[i] = zoneColor;\n                    if (!zoneDefColor && typeof zone.value === 'undefined') {\n                        zoneDefColor = zoneColor;\n                    }\n                }\n            });\n            if (!zoneDefColor) {\n                var seriesColor = ((series.pointAttribs && series.pointAttribs().fill) ||\n                        series.color);\n                zoneDefColor = color(seriesColor).rgba;\n                zoneDefColor[0] /= 255.0;\n                zoneDefColor[1] /= 255.0;\n                zoneDefColor[2] /= 255.0;\n            }\n        }\n        if (chart.inverted) {\n            plotWidth = series.chart.plotHeight;\n        }\n        series.closestPointRangePx = Number.MAX_VALUE;\n        /**\n         * Push color to color buffer - need to do this per vertex.\n         * @private\n         */\n        var pushColor = function (color) {\n                if (color) {\n                    inst.colorData.push(color[0]);\n                inst.colorData.push(color[1]);\n                inst.colorData.push(color[2]);\n                inst.colorData.push(color[3]);\n            }\n        };\n        /**\n         * Push a vertice to the data buffer.\n         * @private\n         */\n        var vertice = function (x,\n            y,\n            checkTreshold,\n            pointSize,\n            color) {\n                if (pointSize === void 0) { pointSize = 1; }\n                pushColor(color);\n            // Correct for pixel ratio\n            if (pixelRatio !== 1 && (!settings.useGPUTranslations ||\n                inst.skipTranslation)) {\n                x *= pixelRatio;\n                y *= pixelRatio;\n                pointSize *= pixelRatio;\n            }\n            if (settings.usePreallocated && vbuffer) {\n                vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize);\n                vlen += 4;\n            }\n            else {\n                data.push(x);\n                data.push(y);\n                data.push(checkTreshold ? pixelRatio : 0);\n                data.push(pointSize);\n            }\n        };\n        /**\n         * @private\n         */\n        var closeSegment = function () {\n                if (inst.segments.length) {\n                    inst.segments[inst.segments.length - 1].to = data.length || vlen;\n            }\n        };\n        /**\n         * Create a new segment for the current set.\n         * @private\n         */\n        var beginSegment = function () {\n                // Insert a segment on the series.\n                // A segment is just a start indice.\n                // When adding a segment, if one exists from before, it should\n                // set the previous segment's end\n                if (inst.segments.length &&\n                    inst.segments[inst.segments.length - 1].from === (data.length || vlen)) {\n                    return;\n            }\n            closeSegment();\n            inst.segments.push({\n                from: data.length || vlen\n            });\n        };\n        /**\n         * Push a rectangle to the data buffer.\n         * @private\n         */\n        var pushRect = function (x,\n            y,\n            w,\n            h,\n            color) {\n                pushColor(color);\n            vertice(x + w, y);\n            pushColor(color);\n            vertice(x, y);\n            pushColor(color);\n            vertice(x, y + h);\n            pushColor(color);\n            vertice(x, y + h);\n            pushColor(color);\n            vertice(x + w, y + h);\n            pushColor(color);\n            vertice(x + w, y);\n        };\n        // Create the first segment\n        beginSegment();\n        // Special case for point shapes\n        if (points && points.length > 0) {\n            // If we're doing points, we assume that the points are already\n            // translated, so we skip the shader translation.\n            inst.skipTranslation = true;\n            // Force triangle draw mode\n            inst.drawMode = 'TRIANGLES';\n            // We don't have a z component in the shader, so we need to sort.\n            if (points[0].node && points[0].node.levelDynamic) {\n                points.sort(function (a, b) {\n                    if (a.node) {\n                        if (a.node.levelDynamic >\n                            b.node.levelDynamic) {\n                            return 1;\n                        }\n                        if (a.node.levelDynamic <\n                            b.node.levelDynamic) {\n                            return -1;\n                        }\n                    }\n                    return 0;\n                });\n            }\n            points.forEach(function (point) {\n                var plotY = point.plotY;\n                var swidth,\n                    pointAttr;\n                if (typeof plotY !== 'undefined' &&\n                    !isNaN(plotY) &&\n                    point.y !== null &&\n                    point.shapeArgs) {\n                    var _a = point.shapeArgs,\n                        _b = _a.x,\n                        x_1 = _b === void 0 ? 0 : _b,\n                        _c = _a.y,\n                        y_1 = _c === void 0 ? 0 : _c,\n                        _d = _a.width,\n                        width = _d === void 0 ? 0 : _d,\n                        _e = _a.height,\n                        height = _e === void 0 ? 0 : _e;\n                    pointAttr = chart.styledMode ?\n                        point.series\n                            .colorAttribs(point) :\n                        pointAttr = point.series.pointAttribs(point);\n                    swidth = pointAttr['stroke-width'] || 0;\n                    // Handle point colors\n                    pcolor = color(pointAttr.fill).rgba;\n                    pcolor[0] /= 255.0;\n                    pcolor[1] /= 255.0;\n                    pcolor[2] /= 255.0;\n                    // So there are two ways of doing this. Either we can\n                    // create a rectangle of two triangles, or we can do a\n                    // point and use point size. Latter is faster, but\n                    // only supports squares. So we're doing triangles.\n                    // We could also use one color per. vertice to get\n                    // better color interpolation.\n                    // If there's stroking, we do an additional rect\n                    if (series.is('treemap')) {\n                        swidth = swidth || 1;\n                        scolor = color(pointAttr.stroke).rgba;\n                        scolor[0] /= 255.0;\n                        scolor[1] /= 255.0;\n                        scolor[2] /= 255.0;\n                        pushRect(x_1, y_1, width, height, scolor);\n                        swidth /= 2;\n                    }\n                    // } else {\n                    //     swidth = 0;\n                    // }\n                    // Fixes issues with inverted heatmaps (see #6981). The root\n                    // cause is that the coordinate system is flipped. In other\n                    // words, instead of [0,0] being top-left, it's\n                    // bottom-right. This causes a vertical and horizontal flip\n                    // in the resulting image, making it rotated 180 degrees.\n                    if (series.is('heatmap') && chart.inverted) {\n                        x_1 = xAxis.len - x_1;\n                        y_1 = yAxis.len - y_1;\n                        width = -width;\n                        height = -height;\n                    }\n                    pushRect(x_1 + swidth, y_1 + swidth, width - (swidth * 2), height - (swidth * 2), pcolor);\n                }\n            });\n            closeSegment();\n            return;\n        }\n        var _loop_1 = function () {\n                d = sdata[++i];\n            if (typeof d === 'undefined') {\n                return \"continue\";\n            }\n            /// px = x = y = z = nx = low = false;\n            // chartDestroyed = typeof chart.index === 'undefined';\n            // nextInside = prevInside = pcolor = isXInside = isYInside = false;\n            // drawAsBar = asBar[series.type];\n            if (chartDestroyed) {\n                return \"break\";\n            }\n            // Uncomment this to enable color by point.\n            // This currently left disabled as the charts look really ugly\n            // when enabled and there's a lot of points.\n            // Leaving in for the future (tm).\n            // if (colorByPoint) {\n            //     colorIndex = ++colorIndex %\n            //         series.chart.options.colors.length;\n            //     pcolor = toRGBAFast(series.chart.options.colors[colorIndex]);\n            //     pcolor[0] /= 255.0;\n            //     pcolor[1] /= 255.0;\n            //     pcolor[2] /= 255.0;\n            // }\n            // Handle the point.color option (#5999)\n            var pointOptions = rawData && rawData[i];\n            if (!useRaw && isObject(pointOptions, true)) {\n                if (pointOptions.color) {\n                    pcolor = color(pointOptions.color).rgba;\n                    pcolor[0] /= 255.0;\n                    pcolor[1] /= 255.0;\n                    pcolor[2] /= 255.0;\n                }\n            }\n            if (useRaw) {\n                x = d[0];\n                y = d[1];\n                if (sdata[i + 1]) {\n                    nx = sdata[i + 1][0];\n                }\n                if (sdata[i - 1]) {\n                    px = sdata[i - 1][0];\n                }\n                if (d.length >= 3) {\n                    z = d[2];\n                    if (d[2] > inst.zMax) {\n                        inst.zMax = d[2];\n                    }\n                    if (d[2] < inst.zMin) {\n                        inst.zMin = d[2];\n                    }\n                }\n            }\n            else {\n                x = d;\n                y = yData === null || yData === void 0 ? void 0 : yData[i];\n                if (sdata[i + 1]) {\n                    nx = sdata[i + 1];\n                }\n                if (sdata[i - 1]) {\n                    px = sdata[i - 1];\n                }\n                if (zData && zData.length) {\n                    z = zData[i];\n                    if (zData[i] > inst.zMax) {\n                        inst.zMax = zData[i];\n                    }\n                    if (zData[i] < inst.zMin) {\n                        inst.zMin = zData[i];\n                    }\n                }\n            }\n            if (!connectNulls && (x === null || y === null)) {\n                beginSegment();\n                return \"continue\";\n            }\n            if (nx && nx >= xMin && nx <= xMax) {\n                nextInside = true;\n            }\n            if (px && px >= xMin && px <= xMax) {\n                prevInside = true;\n            }\n            if (isRange) {\n                if (useRaw) {\n                    y = d.slice(1, 3);\n                }\n                low = (_a = series.getColumn('low', true)) === null || _a === void 0 ? void 0 : _a[i];\n                y = ((_b = series.getColumn('high', true)) === null || _b === void 0 ? void 0 : _b[i]) || 0;\n            }\n            else if (isStacked) {\n                x = d.x;\n                y = d.stackY;\n                low = y - d.y;\n            }\n            if (yMin !== null &&\n                typeof yMin !== 'undefined' &&\n                yMax !== null &&\n                typeof yMax !== 'undefined') {\n                isYInside = y >= yMin && y <= yMax;\n            }\n            // Do not render points outside the zoomed range (#19701)\n            if (!sorted && !isYInside) {\n                return \"continue\";\n            }\n            if (x > xMax && closestRight.x < xMax) {\n                closestRight.x = x;\n                closestRight.y = y;\n            }\n            if (x < xMin && closestLeft.x > xMin) {\n                closestLeft.x = x;\n                closestLeft.y = y;\n            }\n            if (y === null && connectNulls) {\n                return \"continue\";\n            }\n            // Cull points outside the extremes\n            if (y === null || (!isYInside && !nextInside && !prevInside)) {\n                beginSegment();\n                return \"continue\";\n            }\n            // The first point before and first after extremes should be\n            // rendered (#9962, 19701)\n            // Make sure series with a single point are rendered (#21897)\n            if (sorted && ((nx >= xMin || x >= xMin) &&\n                (px <= xMax || x <= xMax)) ||\n                !sorted && ((x >= xMin) && (x <= xMax))) {\n                isXInside = true;\n            }\n            if (!isXInside && !nextInside && !prevInside) {\n                return \"continue\";\n            }\n            if (gapSize && x - px > gapSize) {\n                beginSegment();\n            }\n            // Note: Boost requires that zones are sorted!\n            if (zones) {\n                var zoneColor_1;\n                zones.some(function (// eslint-disable-line no-loop-func\n                zone, i) {\n                    var last = zones[i - 1];\n                    if (zoneAxis === 'x') {\n                        if (typeof zone.value !== 'undefined' &&\n                            x <= zone.value) {\n                            if (zoneColors[i] &&\n                                (!last || x >= last.value)) {\n                                zoneColor_1 = zoneColors[i];\n                            }\n                            return true;\n                        }\n                        return false;\n                    }\n                    if (typeof zone.value !== 'undefined' && y <= zone.value) {\n                        if (zoneColors[i] &&\n                            (!last || y >= last.value)) {\n                            zoneColor_1 = zoneColors[i];\n                        }\n                        return true;\n                    }\n                    return false;\n                });\n                pcolor = zoneColor_1 || zoneDefColor || pcolor;\n            }\n            // Skip translations - temporary floating point fix\n            if (!settings.useGPUTranslations) {\n                inst.skipTranslation = true;\n                x = xAxis.toPixels(x, true);\n                y = yAxis.toPixels(y, true);\n                // Make sure we're not drawing outside of the chart area.\n                // See #6594. Update: this is no longer required as far as I\n                // can tell. Leaving in for git blame in case there are edge\n                // cases I've not found. Having this in breaks #10246.\n                // if (y > plotHeight) {\n                // y = plotHeight;\n                // }\n                if (x > plotWidth) {\n                    // If this is rendered as a point, just skip drawing it\n                    // entirely, as we're not dependant on lineTo'ing to it.\n                    // See #8197\n                    if (inst.drawMode === 'POINTS') {\n                        return \"continue\";\n                    }\n                    // Having this here will clamp markers and make the angle\n                    // of the last line wrong. See 9166.\n                    // x = plotWidth;\n                }\n            }\n            // No markers on out of bounds things.\n            // Out of bound things are shown if and only if the next\n            // or previous point is inside the rect.\n            if (inst.hasMarkers && isXInside) {\n                /// x = Highcharts.correctFloat(\n                //     Math.min(Math.max(-1e5, xAxis.translate(\n                //         x,\n                //         0,\n                //         0,\n                //         0,\n                //         1,\n                //         0.5,\n                //         false\n                //     )), 1e5)\n                // );\n                if (lastX !== false) {\n                    series.closestPointRangePx = Math.min(series.closestPointRangePx, Math.abs(x - lastX));\n                }\n            }\n            // If the last _drawn_ point is closer to this point than the\n            // threshold, skip it. Shaves off 20-100ms in processing.\n            if (!settings.useGPUTranslations &&\n                !settings.usePreallocated &&\n                (lastX && Math.abs(x - lastX) < cullXThreshold) &&\n                (lastY && Math.abs(y - lastY) < cullYThreshold)) {\n                if (settings.debug.showSkipSummary) {\n                    ++skipped;\n                }\n                return \"continue\";\n            }\n            if (drawAsBar) {\n                minVal = low || 0;\n                if (low === false || typeof low === 'undefined') {\n                    if (y < 0) {\n                        minVal = y;\n                    }\n                    else {\n                        minVal = 0;\n                    }\n                }\n                if ((!isRange && !isStacked) ||\n                    yAxis.logarithmic // #16850\n                ) {\n                    minVal = Math.max(threshold === null ? yMin : threshold, // #5268\n                    yMin); // #8731\n                }\n                if (!settings.useGPUTranslations) {\n                    minVal = yAxis.toPixels(minVal, true);\n                }\n                // Need to add an extra point here\n                vertice(x, minVal, 0, 0, pcolor);\n            }\n            // Do step line if enabled.\n            // Draws an additional point at the old Y at the new X.\n            // See #6976.\n            if (options.step && !firstPoint) {\n                vertice(x, lastY, 0, 2, pcolor);\n            }\n            vertice(x, y, 0, series.type === 'bubble' ? (z || 1) : 2, pcolor);\n            // Uncomment this to support color axis.\n            // if (caxis) {\n            //     pcolor = color(caxis.toColor(y)).rgba;\n            //     inst.colorData.push(color[0] / 255.0);\n            //     inst.colorData.push(color[1] / 255.0);\n            //     inst.colorData.push(color[2] / 255.0);\n            //     inst.colorData.push(color[3]);\n            // }\n            lastX = x;\n            lastY = y;\n            hadPoints = true;\n            firstPoint = false;\n        };\n        // Extract color axis\n        // (chart.axes || []).forEach((a): void => {\n        //     if (H.ColorAxis && a instanceof H.ColorAxis) {\n        //         caxis = a;\n        //     }\n        // });\n        while (i < sdata.length - 1) {\n            var state_1 = _loop_1();\n            if (state_1 === \"break\")\n                break;\n        }\n        if (settings.debug.showSkipSummary) {\n            console.log('skipped points:', skipped); // eslint-disable-line no-console\n        }\n        var pushSupplementPoint = function (point,\n            atStart) {\n                if (!settings.useGPUTranslations) {\n                    inst.skipTranslation = true;\n                point.x = xAxis.toPixels(point.x, true);\n                point.y = yAxis.toPixels(point.y, true);\n            }\n            // We should only do this for lines, and we should ignore markers\n            // since there's no point here that would have a marker.\n            if (atStart) {\n                _this.data = [point.x, point.y, 0, 2].concat(_this.data);\n                return;\n            }\n            vertice(point.x, point.y, 0, 2);\n        };\n        if (!hadPoints &&\n            connectNulls !== false &&\n            series.drawMode === 'line_strip') {\n            if (closestLeft.x < Number.MAX_VALUE) {\n                // We actually need to push this *before* the complete buffer.\n                pushSupplementPoint(closestLeft, true);\n            }\n            if (closestRight.x > -Number.MAX_VALUE) {\n                pushSupplementPoint(closestRight);\n            }\n        }\n        closeSegment();\n    };\n    /**\n     * Push a series to the renderer\n     * If we render the series immediately, we don't have to loop later\n     * @private\n     * @param {Highchart.Series} s\n     * The series to push.\n     */\n    WGLRenderer.prototype.pushSeries = function (s) {\n        var markerData = this.markerData,\n            series = this.series,\n            settings = this.settings;\n        if (series.length > 0) {\n            if (series[series.length - 1].hasMarkers) {\n                series[series.length - 1].markerTo = markerData.length;\n            }\n        }\n        if (settings.debug.timeSeriesProcessing) {\n            console.time('building ' + s.type + ' series'); // eslint-disable-line no-console\n        }\n        var obj = {\n                segments: [],\n                markerFrom: markerData.length,\n                // Push RGBA values to this array to use per. point coloring.\n                // It should be 0-padded, so each component should be pushed in\n                // succession.\n                colorData: [],\n                series: s,\n                zMin: Number.MAX_VALUE,\n                zMax: -Number.MAX_VALUE,\n                hasMarkers: s.options.marker ?\n                    s.options.marker.enabled !== false :\n                    false,\n                showMarkers: true,\n                drawMode: Boost_WGLDrawMode[s.type] || 'LINE_STRIP'\n            };\n        if (s.index >= series.length) {\n            series.push(obj);\n        }\n        else {\n            series[s.index] = obj;\n        }\n        // Add the series data to our buffer(s)\n        this.pushSeriesData(s, obj);\n        if (settings.debug.timeSeriesProcessing) {\n            console.timeEnd('building ' + s.type + ' series'); // eslint-disable-line no-console\n        }\n    };\n    /**\n     * Flush the renderer.\n     * This removes pushed series and vertices.\n     * Should be called after clearing and before rendering\n     * @private\n     */\n    WGLRenderer.prototype.flush = function () {\n        var vbuffer = this.vbuffer;\n        this.data = [];\n        this.markerData = [];\n        this.series = [];\n        if (vbuffer) {\n            vbuffer.destroy();\n        }\n    };\n    /**\n     * Pass x-axis to shader\n     * @private\n     * @param {Highcharts.Axis} axis\n     * The x-axis.\n     */\n    WGLRenderer.prototype.setXAxis = function (axis) {\n        var shader = this.shader;\n        if (!shader) {\n            return;\n        }\n        var pixelRatio = this.getPixelRatio();\n        shader.setUniform('xAxisTrans', axis.transA * pixelRatio);\n        shader.setUniform('xAxisMin', axis.min);\n        shader.setUniform('xAxisMinPad', axis.minPixelPadding * pixelRatio);\n        shader.setUniform('xAxisPointRange', axis.pointRange);\n        shader.setUniform('xAxisLen', axis.len * pixelRatio);\n        shader.setUniform('xAxisPos', axis.pos * pixelRatio);\n        shader.setUniform('xAxisCVSCoord', (!axis.horiz));\n        shader.setUniform('xAxisIsLog', (!!axis.logarithmic));\n        shader.setUniform('xAxisReversed', (!!axis.reversed));\n    };\n    /**\n     * Pass y-axis to shader\n     * @private\n     * @param {Highcharts.Axis} axis\n     * The y-axis.\n     */\n    WGLRenderer.prototype.setYAxis = function (axis) {\n        var shader = this.shader;\n        if (!shader) {\n            return;\n        }\n        var pixelRatio = this.getPixelRatio();\n        shader.setUniform('yAxisTrans', axis.transA * pixelRatio);\n        shader.setUniform('yAxisMin', axis.min);\n        shader.setUniform('yAxisMinPad', axis.minPixelPadding * pixelRatio);\n        shader.setUniform('yAxisPointRange', axis.pointRange);\n        shader.setUniform('yAxisLen', axis.len * pixelRatio);\n        shader.setUniform('yAxisPos', axis.pos * pixelRatio);\n        shader.setUniform('yAxisCVSCoord', (!axis.horiz));\n        shader.setUniform('yAxisIsLog', (!!axis.logarithmic));\n        shader.setUniform('yAxisReversed', (!!axis.reversed));\n    };\n    /**\n     * Set the translation threshold\n     * @private\n     * @param {boolean} has\n     * Has threshold flag.\n     * @param {numbe} translation\n     * The threshold.\n     */\n    WGLRenderer.prototype.setThreshold = function (has, translation) {\n        var shader = this.shader;\n        if (!shader) {\n            return;\n        }\n        shader.setUniform('hasThreshold', has);\n        shader.setUniform('translatedThreshold', translation);\n    };\n    /**\n     * Render the data\n     * This renders all pushed series.\n     * @private\n     */\n    WGLRenderer.prototype.renderChart = function (chart) {\n        var _this = this;\n        var gl = this.gl,\n            settings = this.settings,\n            shader = this.shader,\n            vbuffer = this.vbuffer;\n        var pixelRatio = this.getPixelRatio();\n        if (chart) {\n            this.width = chart.chartWidth * pixelRatio;\n            this.height = chart.chartHeight * pixelRatio;\n        }\n        else {\n            return false;\n        }\n        var height = this.height,\n            width = this.width;\n        if (!gl || !shader || !width || !height) {\n            return false;\n        }\n        if (settings.debug.timeRendering) {\n            console.time('gl rendering'); // eslint-disable-line no-console\n        }\n        gl.canvas.width = width;\n        gl.canvas.height = height;\n        shader.bind();\n        gl.viewport(0, 0, width, height);\n        shader.setPMatrix(WGLRenderer.orthoMatrix(width, height));\n        if (settings.lineWidth > 1 && !(highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isMS) {\n            gl.lineWidth(settings.lineWidth);\n        }\n        if (vbuffer) {\n            vbuffer.build(this.data, 'aVertexPosition', 4);\n            vbuffer.bind();\n        }\n        shader.setInverted(chart.inverted);\n        // Render the series\n        this.series.forEach(function (s, si) {\n            var _a,\n                _b,\n                _c;\n            var options = s.series.options,\n                shapeOptions = options.marker,\n                lineWidth = (typeof options.lineWidth !== 'undefined' ?\n                    options.lineWidth :\n                    1),\n                threshold = options.threshold,\n                hasThreshold = isNumber(threshold),\n                yBottom = s.series.yAxis.getThreshold(threshold),\n                translatedThreshold = yBottom,\n                showMarkers = WGLRenderer_pick(options.marker ? options.marker.enabled : null,\n                s.series.xAxis.isRadial ? true : null,\n                s.series.closestPointRangePx >\n                    2 * ((options.marker ?\n                        options.marker.radius :\n                        10) || 10)),\n                shapeTexture = _this.textureHandles[(shapeOptions && shapeOptions.symbol) ||\n                    s.series.symbol] || _this.textureHandles.circle;\n            var sindex,\n                cbuffer,\n                fillColor,\n                scolor = [];\n            if (s.segments.length === 0 ||\n                s.segments[0].from === s.segments[0].to) {\n                return;\n            }\n            if (shapeTexture.isReady) {\n                gl.bindTexture(gl.TEXTURE_2D, shapeTexture.handle);\n                shader.setTexture(shapeTexture.handle);\n            }\n            if (chart.styledMode) {\n                if (s.series.markerGroup === ((_a = s.series.chart.boost) === null || _a === void 0 ? void 0 : _a.markerGroup)) {\n                    // Create a temporary markerGroup to get the fill color\n                    delete s.series.markerGroup;\n                    s.series.markerGroup = s.series.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');\n                    fillColor = s.series.markerGroup.getStyle('fill');\n                    s.series.markerGroup.destroy();\n                    s.series.markerGroup = (_b = s.series.chart.boost) === null || _b === void 0 ? void 0 : _b.markerGroup;\n                }\n                else {\n                    fillColor = (_c = s.series.markerGroup) === null || _c === void 0 ? void 0 : _c.getStyle('fill');\n                }\n            }\n            else {\n                fillColor =\n                    (s.drawMode === 'POINTS' && // #14260\n                        s.series.pointAttribs &&\n                        s.series.pointAttribs().fill) ||\n                        s.series.color;\n                if (options.colorByPoint) {\n                    fillColor = s.series.chart.options.colors[si];\n                }\n            }\n            if (s.series.fillOpacity && options.fillOpacity) {\n                fillColor = new (highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default())(fillColor).setOpacity(WGLRenderer_pick(options.fillOpacity, 1.0)).get();\n            }\n            scolor = color(fillColor).rgba;\n            if (!settings.useAlpha) {\n                scolor[3] = 1.0;\n            }\n            // Blending\n            if (options.boostBlending === 'add') {\n                gl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n                gl.blendEquation(gl.FUNC_ADD);\n            }\n            else if (options.boostBlending === 'mult' ||\n                options.boostBlending === 'multiply') {\n                gl.blendFunc(gl.DST_COLOR, gl.ZERO);\n            }\n            else if (options.boostBlending === 'darken') {\n                gl.blendFunc(gl.ONE, gl.ONE);\n                gl.blendEquation(gl.FUNC_MIN);\n            }\n            else {\n                /// gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n                // gl.blendEquation(gl.FUNC_ADD);\n                gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n            }\n            shader.reset();\n            // If there are entries in the colorData buffer, build and bind it.\n            if (s.colorData.length > 0) {\n                shader.setUniform('hasColor', 1);\n                cbuffer = new Boost_WGLVertexBuffer(gl, shader);\n                cbuffer.build(\n                // The color array attribute for vertex is assigned from 0,\n                // so it needs to be shifted to be applied to further\n                // segments. #18858\n                Array(s.segments[0].from).concat(s.colorData), 'aColor', 4);\n                cbuffer.bind();\n            }\n            else {\n                // Set the hasColor uniform to false (0) when the series\n                // contains no colorData buffer points. #18858\n                shader.setUniform('hasColor', 0);\n                // #15869, a buffer with fewer points might already be bound by\n                // a different series/chart causing out of range errors\n                gl.disableVertexAttribArray(gl.getAttribLocation(shader.getProgram(), 'aColor'));\n            }\n            // Set series specific uniforms\n            shader.setColor(scolor);\n            _this.setXAxis(s.series.xAxis);\n            _this.setYAxis(s.series.yAxis);\n            _this.setThreshold(hasThreshold, translatedThreshold);\n            if (s.drawMode === 'POINTS') {\n                shader.setPointSize(WGLRenderer_pick(options.marker && options.marker.radius, 0.5) * 2 * pixelRatio);\n            }\n            // If set to true, the toPixels translations in the shader\n            // is skipped, i.e it's assumed that the value is a pixel coord.\n            shader.setSkipTranslation(s.skipTranslation);\n            if (s.series.type === 'bubble') {\n                shader.setBubbleUniforms(s.series, s.zMin, s.zMax, pixelRatio);\n            }\n            shader.setDrawAsCircle(asCircle[s.series.type] || false);\n            if (!vbuffer) {\n                return;\n            }\n            // Do the actual rendering\n            // If the line width is < 0, skip rendering of the lines. See #7833.\n            if (lineWidth > 0 || s.drawMode !== 'LINE_STRIP') {\n                for (sindex = 0; sindex < s.segments.length; sindex++) {\n                    vbuffer.render(s.segments[sindex].from, s.segments[sindex].to, s.drawMode);\n                }\n            }\n            if (s.hasMarkers && showMarkers) {\n                shader.setPointSize(WGLRenderer_pick(options.marker && options.marker.radius, 5) * 2 * pixelRatio);\n                shader.setDrawAsCircle(true);\n                for (sindex = 0; sindex < s.segments.length; sindex++) {\n                    vbuffer.render(s.segments[sindex].from, s.segments[sindex].to, 'POINTS');\n                }\n            }\n        });\n        if (settings.debug.timeRendering) {\n            console.timeEnd('gl rendering'); // eslint-disable-line no-console\n        }\n        if (this.postRenderCallback) {\n            this.postRenderCallback(this);\n        }\n        this.flush();\n    };\n    /**\n     * Render the data when ready\n     * @private\n     */\n    WGLRenderer.prototype.render = function (chart) {\n        var _this = this;\n        this.clear();\n        if (chart.renderer.forExport) {\n            return this.renderChart(chart);\n        }\n        if (this.isInited) {\n            this.renderChart(chart);\n        }\n        else {\n            setTimeout(function () {\n                _this.render(chart);\n            }, 1);\n        }\n    };\n    /**\n     * Set the viewport size in pixels\n     * Creates an orthographic perspective matrix and applies it.\n     * @private\n     */\n    WGLRenderer.prototype.setSize = function (width, height) {\n        var shader = this.shader;\n        // Skip if there's no change, or if we have no valid shader\n        if (!shader || (this.width === width && this.height === height)) {\n            return;\n        }\n        this.width = width;\n        this.height = height;\n        shader.bind();\n        shader.setPMatrix(WGLRenderer.orthoMatrix(width, height));\n    };\n    /**\n     * Init OpenGL\n     * @private\n     */\n    WGLRenderer.prototype.init = function (canvas, noFlush) {\n        var _this = this;\n        var settings = this.settings;\n        this.isInited = false;\n        if (!canvas) {\n            return false;\n        }\n        if (settings.debug.timeSetup) {\n            console.time('gl setup'); // eslint-disable-line no-console\n        }\n        for (var i = 0; i < contexts.length; ++i) {\n            this.gl = canvas.getContext(contexts[i], {\n            //    /premultipliedAlpha: false\n            });\n            if (this.gl) {\n                break;\n            }\n        }\n        var gl = this.gl;\n        if (gl) {\n            if (!noFlush) {\n                this.flush();\n            }\n        }\n        else {\n            return false;\n        }\n        gl.enable(gl.BLEND);\n        /// gl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n        gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n        gl.disable(gl.DEPTH_TEST);\n        /// gl.depthMask(gl.FALSE);\n        gl.depthFunc(gl.LESS);\n        var shader = this.shader = new Boost_WGLShader(gl);\n        if (!shader) {\n            // We need to abort, there's no shader context\n            return false;\n        }\n        this.vbuffer = new Boost_WGLVertexBuffer(gl, shader);\n        var createTexture = function (name,\n            fn) {\n                var props = {\n                    isReady: false,\n                    texture: doc.createElement('canvas'),\n                    handle: gl.createTexture()\n                },\n            ctx = props.texture.getContext('2d');\n            _this.textureHandles[name] = props;\n            props.texture.width = 512;\n            props.texture.height = 512;\n            ctx.mozImageSmoothingEnabled = false;\n            ctx.webkitImageSmoothingEnabled = false;\n            ctx.msImageSmoothingEnabled = false;\n            ctx.imageSmoothingEnabled = false;\n            ctx.strokeStyle = 'rgba(255, 255, 255, 0)';\n            ctx.fillStyle = '#FFF';\n            fn(ctx);\n            try {\n                gl.activeTexture(gl.TEXTURE0);\n                gl.bindTexture(gl.TEXTURE_2D, props.handle);\n                /// gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n                gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, props.texture);\n                gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n                gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n                gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n                gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n                /// gl.generateMipmap(gl.TEXTURE_2D);\n                gl.bindTexture(gl.TEXTURE_2D, null);\n                props.isReady = true;\n            }\n            catch (e) {\n                // Silent error\n            }\n        };\n        // Circle shape\n        createTexture('circle', function (ctx) {\n            ctx.beginPath();\n            ctx.arc(256, 256, 256, 0, 2 * Math.PI);\n            ctx.stroke();\n            ctx.fill();\n        });\n        // Square shape\n        createTexture('square', function (ctx) {\n            ctx.fillRect(0, 0, 512, 512);\n        });\n        // Diamond shape\n        createTexture('diamond', function (ctx) {\n            ctx.beginPath();\n            ctx.moveTo(256, 0);\n            ctx.lineTo(512, 256);\n            ctx.lineTo(256, 512);\n            ctx.lineTo(0, 256);\n            ctx.lineTo(256, 0);\n            ctx.fill();\n        });\n        // Triangle shape\n        createTexture('triangle', function (ctx) {\n            ctx.beginPath();\n            ctx.moveTo(0, 512);\n            ctx.lineTo(256, 0);\n            ctx.lineTo(512, 512);\n            ctx.lineTo(0, 512);\n            ctx.fill();\n        });\n        // Triangle shape (rotated)\n        createTexture('triangle-down', function (ctx) {\n            ctx.beginPath();\n            ctx.moveTo(0, 0);\n            ctx.lineTo(256, 512);\n            ctx.lineTo(512, 0);\n            ctx.lineTo(0, 0);\n            ctx.fill();\n        });\n        this.isInited = true;\n        if (settings.debug.timeSetup) {\n            console.timeEnd('gl setup'); // eslint-disable-line no-console\n        }\n        return true;\n    };\n    /**\n     * @private\n     * @todo use it\n     */\n    WGLRenderer.prototype.destroy = function () {\n        var gl = this.gl,\n            shader = this.shader,\n            vbuffer = this.vbuffer;\n        this.flush();\n        if (vbuffer) {\n            vbuffer.destroy();\n        }\n        if (shader) {\n            shader.destroy();\n        }\n        if (gl) {\n            objectEach(this.textureHandles, function (texture) {\n                if (texture.handle) {\n                    gl.deleteTexture(texture.handle);\n                }\n            });\n            gl.canvas.width = 1;\n            gl.canvas.height = 1;\n        }\n    };\n    return WGLRenderer;\n}());\n/* *\n *\n *  Default Export\n *\n * */\n/* harmony default export */ var Boost_WGLRenderer = (WGLRenderer);\n\n;// ./code/es5/es-modules/Extensions/Boost/BoostSeries.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n\n\n\nvar BoostSeries_getBoostClipRect = Boost_BoostChart.getBoostClipRect, BoostSeries_isChartSeriesBoosting = Boost_BoostChart.isChartSeriesBoosting;\n\nvar getOptions = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).getOptions;\n\nvar BoostSeries_composed = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).composed, BoostSeries_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, noop = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).noop, BoostSeries_win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\nvar BoostSeries_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, destroyObjectProperties = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).destroyObjectProperties, BoostSeries_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error, extend = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).extend, fireEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).fireEvent, isArray = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isArray, BoostSeries_isNumber = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).isNumber, BoostSeries_pick = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pick, BoostSeries_pushUnique = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).pushUnique, wrap = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).wrap, defined = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).defined;\n\n/* *\n *\n *  Constants\n *\n * */\nvar CHUNK_SIZE = 3000;\n/* *\n *\n *  Variables\n *\n * */\nvar index, mainCanvas;\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction allocateIfNotSeriesBoosting(renderer, series) {\n    var boost = series.boost;\n    if (renderer &&\n        boost &&\n        boost.target &&\n        boost.canvas &&\n        !BoostSeries_isChartSeriesBoosting(series.chart)) {\n        renderer.allocateBufferForSingleSeries(series);\n    }\n}\n/**\n * Return true if ths boost.enabled option is true\n *\n * @private\n * @param {Highcharts.Chart} chart\n * The chart\n * @return {boolean}\n * True, if boost is enabled.\n */\nfunction boostEnabled(chart) {\n    return BoostSeries_pick((chart &&\n        chart.options &&\n        chart.options.boost &&\n        chart.options.boost.enabled), true);\n}\n/**\n * @private\n */\nfunction BoostSeries_compose(SeriesClass, seriesTypes, wglMode) {\n    if (BoostSeries_pushUnique(BoostSeries_composed, 'Boost.Series')) {\n        var plotOptions_1 = getOptions().plotOptions,\n            seriesProto_1 = SeriesClass.prototype;\n        BoostSeries_addEvent(SeriesClass, 'destroy', onSeriesDestroy);\n        BoostSeries_addEvent(SeriesClass, 'hide', onSeriesHide);\n        if (wglMode) {\n            seriesProto_1.renderCanvas = seriesRenderCanvas;\n        }\n        wrap(seriesProto_1, 'getExtremes', wrapSeriesGetExtremes);\n        wrap(seriesProto_1, 'processData', wrapSeriesProcessData);\n        wrap(seriesProto_1, 'searchPoint', wrapSeriesSearchPoint);\n        [\n            'translate',\n            'generatePoints',\n            'drawTracker',\n            'drawPoints',\n            'render'\n        ].forEach(function (method) {\n            return wrapSeriesFunctions(seriesProto_1, seriesTypes, method);\n        });\n        // Set default options\n        Boost_Boostables.forEach(function (type) {\n            var typePlotOptions = plotOptions_1[type];\n            if (typePlotOptions) {\n                typePlotOptions.boostThreshold = 5000;\n                typePlotOptions.boostData = [];\n                seriesTypes[type].prototype.fillOpacity = true;\n            }\n        });\n        if (wglMode) {\n            var AreaSeries = seriesTypes.area,\n                AreaSplineSeries = seriesTypes.areaspline,\n                BubbleSeries = seriesTypes.bubble,\n                ColumnSeries = seriesTypes.column,\n                HeatmapSeries = seriesTypes.heatmap,\n                ScatterSeries = seriesTypes.scatter,\n                TreemapSeries = seriesTypes.treemap;\n            if (AreaSeries) {\n                extend(AreaSeries.prototype, {\n                    fill: true,\n                    fillOpacity: true,\n                    sampling: true\n                });\n            }\n            if (AreaSplineSeries) {\n                extend(AreaSplineSeries.prototype, {\n                    fill: true,\n                    fillOpacity: true,\n                    sampling: true\n                });\n            }\n            if (BubbleSeries) {\n                var bubbleProto_1 = BubbleSeries.prototype;\n                // By default, the bubble series does not use the KD-tree, so\n                // force it to.\n                delete bubbleProto_1.buildKDTree;\n                // SeriesTypes.bubble.prototype.directTouch = false;\n                // Needed for markers to work correctly\n                wrap(bubbleProto_1, 'markerAttribs', function (proceed) {\n                    if (this.boosted) {\n                        return false;\n                    }\n                    return proceed.apply(this, [].slice.call(arguments, 1));\n                });\n            }\n            if (ColumnSeries) {\n                extend(ColumnSeries.prototype, {\n                    fill: true,\n                    sampling: true\n                });\n            }\n            if (ScatterSeries) {\n                ScatterSeries.prototype.fill = true;\n            }\n            // We need to handle heatmaps separately, since we can't perform the\n            // size/color calculations in the shader easily.\n            // @todo This likely needs future optimization.\n            [HeatmapSeries, TreemapSeries].forEach(function (SC) {\n                if (SC) {\n                    wrap(SC.prototype, 'drawPoints', wrapSeriesDrawPoints);\n                }\n            });\n        }\n    }\n    return SeriesClass;\n}\n/**\n * Create a canvas + context and attach it to the target\n *\n * @private\n * @function createAndAttachRenderer\n *\n * @param {Highcharts.Chart} chart\n * the chart\n *\n * @param {Highcharts.Series} series\n * the series\n *\n * @return {Highcharts.BoostGLRenderer}\n * the canvas renderer\n */\nfunction createAndAttachRenderer(chart, series) {\n    var _a,\n        _b,\n        _c;\n    var ChartClass = chart.constructor,\n        targetGroup = chart.seriesGroup || series.group,\n        alpha = 1;\n    var width = chart.chartWidth,\n        height = chart.chartHeight,\n        target = chart,\n        foSupported = typeof SVGForeignObjectElement !== 'undefined',\n        hasClickHandler = false;\n    if (BoostSeries_isChartSeriesBoosting(chart)) {\n        target = chart;\n    }\n    else {\n        target = series;\n        hasClickHandler = Boolean(((_a = series.options.events) === null || _a === void 0 ? void 0 : _a.click) ||\n            ((_c = (_b = series.options.point) === null || _b === void 0 ? void 0 : _b.events) === null || _c === void 0 ? void 0 : _c.click));\n    }\n    var boost = target.boost =\n            target.boost ||\n                {};\n    // Support for foreignObject is flimsy as best.\n    // IE does not support it, and Chrome has a bug which messes up\n    // the canvas draw order.\n    // As such, we force the Image fallback for now, but leaving the\n    // actual Canvas path in-place in case this changes in the future.\n    foSupported = false;\n    if (!mainCanvas) {\n        mainCanvas = BoostSeries_doc.createElement('canvas');\n    }\n    if (!boost.target) {\n        boost.canvas = mainCanvas;\n        // Fall back to image tag if foreignObject isn't supported,\n        // or if we're exporting.\n        if (chart.renderer.forExport || !foSupported) {\n            target.renderTarget = boost.target = chart.renderer.image('', 0, 0, width, height)\n                .addClass('highcharts-boost-canvas')\n                .add(targetGroup);\n            boost.clear = function () {\n                boost.target.attr({\n                    // Insert a blank pixel (#17182)\n                    /* eslint-disable-next-line max-len*/\n                    href: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='\n                });\n            };\n            boost.copy = function () {\n                boost.resize();\n                boost.target.attr({\n                    href: boost.canvas.toDataURL('image/png')\n                });\n            };\n        }\n        else {\n            boost.targetFo = chart.renderer\n                .createElement('foreignObject')\n                .add(targetGroup);\n            target.renderTarget = boost.target =\n                BoostSeries_doc.createElement('canvas');\n            boost.targetCtx = boost.target.getContext('2d');\n            boost.targetFo.element.appendChild(boost.target);\n            boost.clear = function () {\n                boost.target.width = boost.canvas.width;\n                boost.target.height = boost.canvas.height;\n            };\n            boost.copy = function () {\n                boost.target.width = boost.canvas.width;\n                boost.target.height = boost.canvas.height;\n                boost.targetCtx.drawImage(boost.canvas, 0, 0);\n            };\n        }\n        boost.resize = function () {\n            var _a,\n                _b;\n            width = chart.chartWidth;\n            height = chart.chartHeight;\n            (boost.targetFo || boost.target)\n                .attr({\n                x: 0,\n                y: 0,\n                width: width,\n                height: height\n            })\n                .css({\n                pointerEvents: hasClickHandler ? void 0 : 'none',\n                mixedBlendMode: 'normal',\n                opacity: alpha\n            })\n                .addClass(hasClickHandler ? 'highcharts-tracker' : '');\n            if (target instanceof ChartClass) {\n                (_b = (_a = target.boost) === null || _a === void 0 ? void 0 : _a.markerGroup) === null || _b === void 0 ? void 0 : _b.translate(chart.plotLeft, chart.plotTop);\n            }\n        };\n        boost.clipRect = chart.renderer.clipRect();\n        (boost.targetFo || boost.target)\n            .attr({\n            // Set the z index of the boost target to that of the last\n            // series using it. This logic is not perfect, as it will not\n            // handle interleaved series with boost enabled or disabled. But\n            // it will cover the most common use case of one or more\n            // successive boosted or non-boosted series (#9819).\n            zIndex: series.options.zIndex\n        });\n        if (target instanceof ChartClass) {\n            target.boost.markerGroup = target.renderer\n                .g()\n                .add(targetGroup)\n                .translate(series.xAxis.pos, series.yAxis.pos);\n        }\n    }\n    boost.canvas.width = width;\n    boost.canvas.height = height;\n    if (boost.clipRect) {\n        var box = BoostSeries_getBoostClipRect(chart,\n            target), \n            // When using panes, the image itself must be clipped. When not\n            // using panes, it is better to clip the target group, because then\n            // we preserve clipping on touch- and mousewheel zoom preview.\n            clippedElement = (box.width === chart.clipBox.width &&\n                box.height === chart.clipBox.height) ? targetGroup :\n                (boost.targetFo || boost.target);\n        boost.clipRect.attr(box);\n        clippedElement === null || clippedElement === void 0 ? void 0 : clippedElement.clip(boost.clipRect);\n    }\n    boost.resize();\n    boost.clear();\n    if (!boost.wgl) {\n        boost.wgl = new Boost_WGLRenderer(function (wgl) {\n            if (wgl.settings.debug.timeBufferCopy) {\n                console.time('buffer copy'); // eslint-disable-line no-console\n            }\n            boost.copy();\n            if (wgl.settings.debug.timeBufferCopy) {\n                console.timeEnd('buffer copy'); // eslint-disable-line no-console\n            }\n        });\n        if (!boost.wgl.init(boost.canvas)) {\n            // The OGL renderer couldn't be inited. This likely means a shader\n            // error as we wouldn't get to this point if there was no WebGL\n            // support.\n            BoostSeries_error('[highcharts boost] - unable to init WebGL renderer');\n        }\n        boost.wgl.setOptions(chart.options.boost || {});\n        if (target instanceof ChartClass) {\n            boost.wgl.allocateBuffer(chart);\n        }\n    }\n    boost.wgl.setSize(width, height);\n    return boost.wgl;\n}\n/**\n * If implemented in the core, parts of this can probably be\n * shared with other similar methods in Highcharts.\n * @private\n * @function Highcharts.Series#destroyGraphics\n */\nfunction destroyGraphics(series) {\n    var points = series.points;\n    if (points) {\n        var point = void 0,\n            i = void 0;\n        for (i = 0; i < points.length; i = i + 1) {\n            point = points[i];\n            if (point && point.destroyElements) {\n                point.destroyElements(); // #7557\n            }\n        }\n    }\n    ['graph', 'area', 'tracker'].forEach(function (prop) {\n        var seriesProp = series[prop];\n        if (seriesProp) {\n            series[prop] = seriesProp.destroy();\n        }\n    });\n    for (var _i = 0, _a = series.zones; _i < _a.length; _i++) {\n        var zone = _a[_i];\n        destroyObjectProperties(zone, void 0, true);\n    }\n}\n/**\n * An \"async\" foreach loop. Uses a setTimeout to keep the loop from blocking the\n * UI thread.\n *\n * @private\n * @param {Array<unknown>} arr\n * The array to loop through.\n * @param {Function} fn\n * The callback to call for each item.\n * @param {Function} finalFunc\n * The callback to call when done.\n * @param {number} [chunkSize]\n * The number of iterations per timeout.\n * @param {number} [i]\n * The current index.\n * @param {boolean} [noTimeout]\n * Set to true to skip timeouts.\n */\nfunction eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {\n    i = i || 0;\n    chunkSize = chunkSize || CHUNK_SIZE;\n    var threshold = i + chunkSize;\n    var proceed = true;\n    while (proceed && i < threshold && i < arr.length) {\n        proceed = fn(arr[i], i);\n        ++i;\n    }\n    if (proceed) {\n        if (i < arr.length) {\n            if (noTimeout) {\n                eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);\n            }\n            else if (BoostSeries_win.requestAnimationFrame) {\n                // If available, do requestAnimationFrame - shaves off a few ms\n                BoostSeries_win.requestAnimationFrame(function () {\n                    eachAsync(arr, fn, finalFunc, chunkSize, i);\n                });\n            }\n            else {\n                setTimeout(eachAsync, 0, arr, fn, finalFunc, chunkSize, i);\n            }\n        }\n        else if (finalFunc) {\n            finalFunc();\n        }\n    }\n}\n/**\n * Enter boost mode and apply boost-specific properties.\n * @private\n * @function Highcharts.Series#enterBoost\n */\nfunction enterBoost(series) {\n    var _a;\n    series.boost = series.boost || {\n        // Faster than a series bind:\n        getPoint: (function (bp) { return getPoint(series, bp); })\n    };\n    var alteredByBoost = series.boost.altered = [];\n    // Save the original values, including whether it was an own\n    // property or inherited from the prototype.\n    ['allowDG', 'directTouch', 'stickyTracking'].forEach(function (prop) {\n        alteredByBoost.push({\n            prop: prop,\n            val: series[prop],\n            own: Object.hasOwnProperty.call(series, prop)\n        });\n    });\n    series.allowDG = false;\n    series.directTouch = false;\n    series.stickyTracking = true;\n    // Prevent animation when zooming in on boosted series(#13421).\n    series.finishedAnimating = true;\n    // Hide series label if any\n    if (series.labelBySeries) {\n        series.labelBySeries = series.labelBySeries.destroy();\n    }\n    // Destroy existing points after zoom out\n    if (series.is('scatter') &&\n        !series.is('treemap') &&\n        series.data.length) {\n        for (var _i = 0, _b = series.data; _i < _b.length; _i++) {\n            var point = _b[_i];\n            (_a = point === null || point === void 0 ? void 0 : point.destroy) === null || _a === void 0 ? void 0 : _a.call(point);\n        }\n        series.data.length = 0;\n        series.points.length = 0;\n        delete series.processedData;\n    }\n}\n/**\n * Exit from boost mode and restore non-boost properties.\n * @private\n * @function Highcharts.Series#exitBoost\n */\nfunction exitBoost(series) {\n    var _a;\n    var boost = series.boost,\n        chart = series.chart,\n        chartBoost = chart.boost;\n    if (chartBoost === null || chartBoost === void 0 ? void 0 : chartBoost.markerGroup) {\n        chartBoost.markerGroup.destroy();\n        chartBoost.markerGroup = void 0;\n        for (var _i = 0, _b = chart.series; _i < _b.length; _i++) {\n            var s = _b[_i];\n            s.markerGroup = void 0;\n            s.markerGroup = s.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');\n        }\n    }\n    // Reset instance properties and/or delete instance properties and go back\n    // to prototype\n    if (boost) {\n        (boost.altered || []).forEach(function (setting) {\n            if (setting.own) {\n                series[setting.prop] = setting.val;\n            }\n            else {\n                // Revert to prototype\n                delete series[setting.prop];\n            }\n        });\n        // Clear previous run\n        if (boost.clear) {\n            boost.clear();\n        }\n    }\n    // #21106, clean up boost clipping on the series groups.\n    (_a = (chart.seriesGroup || series.group)) === null || _a === void 0 ? void 0 : _a.clip();\n}\n/**\n * @private\n * @function Highcharts.Series#hasExtremes\n */\nfunction hasExtremes(series, checkX) {\n    var options = series.options,\n        dataLength = series.dataTable.modified.rowCount,\n        xAxis = series.xAxis && series.xAxis.options,\n        yAxis = series.yAxis && series.yAxis.options,\n        colorAxis = series.colorAxis && series.colorAxis.options;\n    return dataLength > (options.boostThreshold || Number.MAX_VALUE) &&\n        // Defined yAxis extremes\n        BoostSeries_isNumber(yAxis.min) &&\n        BoostSeries_isNumber(yAxis.max) &&\n        // Defined (and required) xAxis extremes\n        (!checkX ||\n            (BoostSeries_isNumber(xAxis.min) && BoostSeries_isNumber(xAxis.max))) &&\n        // Defined (e.g. heatmap) colorAxis extremes\n        (!colorAxis ||\n            (BoostSeries_isNumber(colorAxis.min) && BoostSeries_isNumber(colorAxis.max)));\n}\n/**\n * Used multiple times. In processData first on this.options.data, the second\n * time it runs the check again after processedXData is built.\n * If the data is going to be grouped, the series shouldn't be boosted.\n * @private\n */\nvar getSeriesBoosting = function (series, data) {\n    // Check if will be grouped.\n    if (series.forceCrop) {\n        return false;\n    }\n    return (BoostSeries_isChartSeriesBoosting(series.chart) ||\n        ((data ? data.length : 0) >=\n            (series.options.boostThreshold || Number.MAX_VALUE)));\n};\n/**\n * Extend series.destroy to also remove the fake k-d-tree points (#5137).\n * Normally this is handled by Series.destroy that calls Point.destroy,\n * but the fake search points are not registered like that.\n * @private\n */\nfunction onSeriesDestroy() {\n    var series = this,\n        chart = series.chart;\n    if (chart.boost &&\n        chart.boost.markerGroup === series.markerGroup) {\n        series.markerGroup = null;\n    }\n    if (chart.hoverPoints) {\n        chart.hoverPoints = chart.hoverPoints.filter(function (point) {\n            return point.series === series;\n        });\n    }\n    if (chart.hoverPoint && chart.hoverPoint.series === series) {\n        chart.hoverPoint = null;\n    }\n}\n/**\n * @private\n */\nfunction onSeriesHide() {\n    var boost = this.boost;\n    if (boost && boost.canvas && boost.target) {\n        if (boost.wgl) {\n            boost.wgl.clear();\n        }\n        if (boost.clear) {\n            boost.clear();\n        }\n    }\n}\n/**\n * Performs the actual render if the renderer is\n * attached to the series.\n * @private\n */\nfunction renderIfNotSeriesBoosting(series) {\n    var boost = series.boost;\n    if (boost &&\n        boost.canvas &&\n        boost.target &&\n        boost.wgl &&\n        !BoostSeries_isChartSeriesBoosting(series.chart)) {\n        boost.wgl.render(series.chart);\n    }\n}\n/**\n * Return a full Point object based on the index.\n * The boost module uses stripped point objects for performance reasons.\n * @private\n * @param {object|Highcharts.Point} boostPoint\n *        A stripped-down point object\n * @return {Highcharts.Point}\n *         A Point object as per https://api.highcharts.com/highcharts#Point\n */\nfunction getPoint(series, boostPoint) {\n    var _a;\n    var seriesOptions = series.options,\n        xAxis = series.xAxis,\n        PointClass = series.pointClass;\n    if (boostPoint instanceof PointClass) {\n        return boostPoint;\n    }\n    var isScatter = series.is('scatter'), xData = ((isScatter && series.getColumn('x', true).length ?\n            series.getColumn('x', true) :\n            void 0) ||\n            (series.getColumn('x').length ? series.getColumn('x') : void 0) ||\n            seriesOptions.xData ||\n            series.getColumn('x', true) ||\n            false), yData = (series.getColumn('y', true) ||\n            seriesOptions.yData ||\n            false), point = new PointClass(series, (isScatter && xData && yData) ?\n            [xData[boostPoint.i], yData[boostPoint.i]] :\n            (isArray(series.options.data) ? series.options.data : [])[boostPoint.i], xData ? xData[boostPoint.i] : void 0);\n    point.category = BoostSeries_pick(xAxis.categories ?\n        xAxis.categories[point.x] :\n        point.x, // @todo simplify\n    point.x);\n    point.key = (_a = point.name) !== null && _a !== void 0 ? _a : point.category;\n    point.dist = boostPoint.dist;\n    point.distX = boostPoint.distX;\n    point.plotX = boostPoint.plotX;\n    point.plotY = boostPoint.plotY;\n    point.index = boostPoint.i;\n    point.percentage = boostPoint.percentage;\n    point.isInside = series.isPointInside(point);\n    return point;\n}\n/**\n * @private\n */\nfunction scatterProcessData(force) {\n    var _a,\n        _b,\n        _c,\n        _d,\n        _e,\n        _f,\n        _g,\n        _h;\n    var series = this,\n        options = series.options,\n        xAxis = series.xAxis,\n        yAxis = series.yAxis;\n    // Process only on changes\n    if (!series.isDirty &&\n        !xAxis.isDirty &&\n        !yAxis.isDirty &&\n        !force) {\n        return false;\n    }\n    // Required to get tick-based zoom ranges that take options into account\n    // like `minPadding`, `maxPadding`, `startOnTick`, `endOnTick`.\n    series.yAxis.setTickInterval();\n    var boostThreshold = options.boostThreshold || 0, cropThreshold = options.cropThreshold, xData = series.getColumn('x'), xExtremes = xAxis.getExtremes(), xMax = (_a = xExtremes.max) !== null && _a !== void 0 ? _a : Number.MAX_VALUE, xMin = (_b = xExtremes.min) !== null && _b !== void 0 ? _b : -Number.MAX_VALUE, yData = series.getColumn('y'), yExtremes = yAxis.getExtremes(), yMax = (_c = yExtremes.max) !== null && _c !== void 0 ? _c : Number.MAX_VALUE, yMin = (_d = yExtremes.min) !== null && _d !== void 0 ? _d : -Number.MAX_VALUE;\n    // Skip processing in non-boost zoom\n    if (!series.boosted &&\n        xAxis.old &&\n        yAxis.old &&\n        xMin >= ((_e = xAxis.old.min) !== null && _e !== void 0 ? _e : -Number.MAX_VALUE) &&\n        xMax <= ((_f = xAxis.old.max) !== null && _f !== void 0 ? _f : Number.MAX_VALUE) &&\n        yMin >= ((_g = yAxis.old.min) !== null && _g !== void 0 ? _g : -Number.MAX_VALUE) &&\n        yMax <= ((_h = yAxis.old.max) !== null && _h !== void 0 ? _h : Number.MAX_VALUE)) {\n        series.dataTable.modified.setColumns({\n            x: xData,\n            y: yData\n        });\n        return true;\n    }\n    // Without thresholds just assign data\n    var dataLength = series.dataTable.rowCount;\n    if (!boostThreshold ||\n        dataLength < boostThreshold ||\n        (cropThreshold &&\n            !series.forceCrop &&\n            !series.getExtremesFromAll &&\n            !options.getExtremesFromAll &&\n            dataLength < cropThreshold)) {\n        series.dataTable.modified.setColumns({\n            x: xData,\n            y: yData\n        });\n        return true;\n    }\n    // Filter unsorted scatter data for ranges\n    var processedData = [],\n        processedXData = [],\n        processedYData = [],\n        xRangeNeeded = !(BoostSeries_isNumber(xExtremes.max) || BoostSeries_isNumber(xExtremes.min)),\n        yRangeNeeded = !(BoostSeries_isNumber(yExtremes.max) || BoostSeries_isNumber(yExtremes.min));\n    var cropped = false,\n        x,\n        xDataMax = xData[0],\n        xDataMin = xData[0],\n        y,\n        yDataMax = yData === null || yData === void 0 ? void 0 : yData[0],\n        yDataMin = yData === null || yData === void 0 ? void 0 : yData[0];\n    for (var i = 0, iEnd = xData.length; i < iEnd; ++i) {\n        x = xData[i];\n        y = yData === null || yData === void 0 ? void 0 : yData[i];\n        if (x >= xMin && x <= xMax &&\n            y >= yMin && y <= yMax) {\n            processedData.push({ x: x, y: y });\n            processedXData.push(x);\n            processedYData.push(y);\n            if (xRangeNeeded) {\n                xDataMax = Math.max(xDataMax, x);\n                xDataMin = Math.min(xDataMin, x);\n            }\n            if (yRangeNeeded) {\n                yDataMax = Math.max(yDataMax, y);\n                yDataMin = Math.min(yDataMin, y);\n            }\n        }\n        else {\n            cropped = true;\n        }\n    }\n    if (xRangeNeeded) {\n        xAxis.dataMax = Math.max(xDataMax, xAxis.dataMax || 0);\n        xAxis.dataMin = Math.min(xDataMin, xAxis.dataMin || 0);\n    }\n    if (yRangeNeeded) {\n        yAxis.dataMax = Math.max(yDataMax, yAxis.dataMax || 0);\n        yAxis.dataMin = Math.min(yDataMin, yAxis.dataMin || 0);\n    }\n    // Set properties as base processData\n    series.cropped = cropped;\n    series.cropStart = 0;\n    // For boosted points rendering\n    series.dataTable.modified.setColumns({\n        x: processedXData,\n        y: processedYData\n    });\n    if (!getSeriesBoosting(series, processedXData)) {\n        series.processedData = processedData; // For un-boosted points rendering\n    }\n    return true;\n}\n/**\n * @private\n * @function Highcharts.Series#renderCanvas\n */\nfunction seriesRenderCanvas() {\n    var _this = this;\n    var options = this.options || {}, chart = this.chart, chartBoost = chart.boost, seriesBoost = this.boost, xAxis = this.xAxis, yAxis = this.yAxis, xData = options.xData || this.getColumn('x', true), yData = options.yData || this.getColumn('y', true), lowData = this.getColumn('low', true), highData = this.getColumn('high', true), rawData = this.processedData || options.data, xExtremes = xAxis.getExtremes(), \n        // Taking into account the offset of the min point #19497\n        xMin = xExtremes.min - (xAxis.minPointOffset || 0), xMax = xExtremes.max + (xAxis.minPointOffset || 0), yExtremes = yAxis.getExtremes(), yMin = yExtremes.min - (yAxis.minPointOffset || 0), yMax = yExtremes.max + (yAxis.minPointOffset || 0), pointTaken = {}, sampling = !!this.sampling, enableMouseTracking = options.enableMouseTracking, threshold = options.threshold, isRange = this.pointArrayMap &&\n            this.pointArrayMap.join(',') === 'low,high', isStacked = !!options.stacking, cropStart = this.cropStart || 0, requireSorting = this.requireSorting, useRaw = !xData, compareX = options.findNearestPointBy === 'x', xDataFull = ((this.getColumn('x', true).length ?\n            this.getColumn('x', true) :\n            void 0) ||\n            this.options.xData ||\n            this.getColumn('x', true)), lineWidth = BoostSeries_pick(options.lineWidth, 1);\n    var renderer = false,\n        lastClientX,\n        yBottom = yAxis.getThreshold(threshold),\n        minVal,\n        maxVal,\n        minI,\n        maxI;\n    // When touch-zooming or mouse-panning, re-rendering the canvas would not\n    // perform fast enough. Instead, let the axes redraw, but not the series.\n    // The series is scale-translated in an event handler for an approximate\n    // preview.\n    if (xAxis.isPanning || yAxis.isPanning) {\n        return;\n    }\n    // Get or create the renderer\n    renderer = createAndAttachRenderer(chart, this);\n    chart.boosted = true;\n    if (!this.visible) {\n        return;\n    }\n    // If we are zooming out from SVG mode, destroy the graphics\n    if (this.points || this.graph) {\n        destroyGraphics(this);\n    }\n    // If we're rendering per. series we should create the marker groups\n    // as usual.\n    if (!BoostSeries_isChartSeriesBoosting(chart)) {\n        // If all series were boosting, but are not anymore\n        // restore private markerGroup\n        if (this.markerGroup === (chartBoost === null || chartBoost === void 0 ? void 0 : chartBoost.markerGroup)) {\n            this.markerGroup = void 0;\n        }\n        this.markerGroup = this.plotGroup('markerGroup', 'markers', 'visible', 1, chart.seriesGroup).addClass('highcharts-tracker');\n    }\n    else {\n        // If series has a private markerGroup, remove that\n        // and use common markerGroup\n        if (this.markerGroup &&\n            this.markerGroup !== (chartBoost === null || chartBoost === void 0 ? void 0 : chartBoost.markerGroup)) {\n            this.markerGroup.destroy();\n        }\n        // Use a single group for the markers\n        this.markerGroup = chartBoost === null || chartBoost === void 0 ? void 0 : chartBoost.markerGroup;\n        // When switching from chart boosting mode, destroy redundant\n        // series boosting targets\n        if (seriesBoost && seriesBoost.target) {\n            this.renderTarget =\n                seriesBoost.target =\n                    seriesBoost.target.destroy();\n        }\n    }\n    var points = this.points = [],\n        addKDPoint = function (clientX,\n        plotY,\n        i,\n        percentage) {\n            var x = xDataFull ? xDataFull[cropStart + i] : false,\n        pushPoint = function (plotX) {\n                if (chart.inverted) {\n                    plotX = xAxis.len - plotX;\n                plotY = yAxis.len - plotY;\n            }\n            points.push({\n                destroy: noop,\n                x: x,\n                clientX: plotX,\n                plotX: plotX,\n                plotY: plotY,\n                i: cropStart + i,\n                percentage: percentage\n            });\n        };\n        // We need to do ceil on the clientX to make things\n        // snap to pixel values. The renderer will frequently\n        // draw stuff on \"sub-pixels\".\n        clientX = Math.ceil(clientX);\n        // Shaves off about 60ms compared to repeated concatenation\n        index = compareX ? clientX : clientX + ',' + plotY;\n        // The k-d tree requires series points.\n        // Reduce the amount of points, since the time to build the\n        // tree increases exponentially.\n        if (enableMouseTracking) {\n            if (!pointTaken[index]) {\n                pointTaken[index] = true;\n                pushPoint(clientX);\n            }\n            else if (x === xDataFull[xDataFull.length - 1]) {\n                // If the last point is on the same pixel as the last\n                // tracked point, swap them. (#18856)\n                points.length--;\n                pushPoint(clientX);\n            }\n        }\n    };\n    // Do not start building while drawing\n    this.buildKDTree = noop;\n    fireEvent(this, 'renderCanvas');\n    if (this.is('line') &&\n        lineWidth > 1 &&\n        (seriesBoost === null || seriesBoost === void 0 ? void 0 : seriesBoost.target) &&\n        chartBoost &&\n        !chartBoost.lineWidthFilter) {\n        chartBoost.lineWidthFilter = chart.renderer.definition({\n            tagName: 'filter',\n            children: [\n                {\n                    tagName: 'feMorphology',\n                    attributes: {\n                        operator: 'dilate',\n                        radius: 0.25 * lineWidth\n                    }\n                }\n            ],\n            attributes: { id: 'linewidth' }\n        });\n        seriesBoost.target.attr({\n            filter: 'url(#linewidth)'\n        });\n    }\n    if (renderer) {\n        allocateIfNotSeriesBoosting(renderer, this);\n        renderer.pushSeries(this);\n        // Perform the actual renderer if we're on series level\n        renderIfNotSeriesBoosting(this);\n    }\n    /**\n     * This builds the KD-tree\n     * @private\n     */\n    function processPoint(d, i) {\n        var chartDestroyed = typeof chart.index === 'undefined';\n        var x,\n            y,\n            clientX,\n            plotY,\n            percentage,\n            low = false,\n            isYInside = true;\n        if (!defined(d)) {\n            return true;\n        }\n        if (!chartDestroyed) {\n            if (useRaw) {\n                x = d[0];\n                y = d[1];\n            }\n            else {\n                x = d;\n                y = yData === null || yData === void 0 ? void 0 : yData[i];\n            }\n            // Resolve low and high for range series\n            if (isRange) {\n                if (useRaw) {\n                    y = d.slice(1, 3);\n                }\n                low = lowData[i];\n                y = highData[i];\n            }\n            else if (isStacked) {\n                x = d.x;\n                y = d.stackY;\n                low = y - d.y;\n                percentage = d.percentage;\n            }\n            // Optimize for scatter zooming\n            if (!requireSorting) {\n                isYInside = (y || 0) >= yMin && y <= yMax;\n            }\n            if (y !== null && x >= xMin && x <= xMax && isYInside) {\n                clientX = xAxis.toPixels(x, true);\n                if (sampling) {\n                    if (typeof minI === 'undefined' ||\n                        clientX === lastClientX) {\n                        if (!isRange) {\n                            low = y;\n                        }\n                        if (typeof maxI === 'undefined' ||\n                            y > maxVal) {\n                            maxVal = y;\n                            maxI = i;\n                        }\n                        if (typeof minI === 'undefined' ||\n                            low < minVal) {\n                            minVal = low;\n                            minI = i;\n                        }\n                    }\n                    // Add points and reset\n                    if (!compareX || clientX !== lastClientX) {\n                        // `maxI` is number too:\n                        if (typeof minI !== 'undefined') {\n                            plotY =\n                                yAxis.toPixels(maxVal, true);\n                            yBottom =\n                                yAxis.toPixels(minVal, true);\n                            addKDPoint(clientX, plotY, maxI, percentage);\n                            if (yBottom !== plotY) {\n                                addKDPoint(clientX, yBottom, minI, percentage);\n                            }\n                        }\n                        minI = maxI = void 0;\n                        lastClientX = clientX;\n                    }\n                }\n                else {\n                    plotY = Math.ceil(yAxis.toPixels(y, true));\n                    addKDPoint(clientX, plotY, i, percentage);\n                }\n            }\n        }\n        return !chartDestroyed;\n    }\n    /**\n     * @private\n     */\n    var boostOptions = renderer.settings,\n        doneProcessing = function () {\n            fireEvent(_this, 'renderedCanvas');\n        // Go back to prototype, ready to build\n        delete _this.buildKDTree;\n        // Check that options exist, as async processing\n        // could mean the series is removed at this point (#19895)\n        if (_this.options) {\n            _this.buildKDTree();\n        }\n        if (boostOptions.debug.timeKDTree) {\n            console.timeEnd('kd tree building'); // eslint-disable-line no-console\n        }\n    };\n    // Loop over the points to build the k-d tree - skip this if\n    // exporting\n    if (!chart.renderer.forExport) {\n        if (boostOptions.debug.timeKDTree) {\n            console.time('kd tree building'); // eslint-disable-line no-console\n        }\n        eachAsync(isStacked ?\n            this.data.slice(cropStart) :\n            (xData || rawData), processPoint, doneProcessing);\n    }\n}\n/**\n * Used for treemap|heatmap.drawPoints\n * @private\n */\nfunction wrapSeriesDrawPoints(proceed) {\n    var enabled = true;\n    if (this.chart.options && this.chart.options.boost) {\n        enabled = typeof this.chart.options.boost.enabled === 'undefined' ?\n            true :\n            this.chart.options.boost.enabled;\n    }\n    if (!enabled || !this.boosted) {\n        return proceed.call(this);\n    }\n    this.chart.boosted = true;\n    // Make sure we have a valid OGL context\n    var renderer = createAndAttachRenderer(this.chart,\n        this);\n    if (renderer) {\n        allocateIfNotSeriesBoosting(renderer, this);\n        renderer.pushSeries(this);\n    }\n    renderIfNotSeriesBoosting(this);\n}\n/**\n * Override a bunch of methods the same way. If the number of points is\n * below the threshold, run the original method. If not, check for a\n * canvas version or do nothing.\n *\n * Note that we're not overriding any of these for heatmaps.\n */\nfunction wrapSeriesFunctions(seriesProto, seriesTypes, method) {\n    /**\n     * @private\n     */\n    function branch(proceed) {\n        var letItPass = this.options.stacking &&\n                (method === 'translate' || method === 'generatePoints');\n        if (!this.boosted ||\n            letItPass ||\n            !boostEnabled(this.chart) ||\n            this.type === 'heatmap' ||\n            this.type === 'treemap' ||\n            !Boost_BoostableMap[this.type] ||\n            this.options.boostThreshold === 0) {\n            proceed.call(this);\n            // Run canvas version of method, like renderCanvas(), if it exists\n        }\n        else if (method === 'render' && this.renderCanvas) {\n            this.renderCanvas();\n        }\n    }\n    wrap(seriesProto, method, branch);\n    // Special case for some types, when translate method is already wrapped\n    if (method === 'translate') {\n        for (var _i = 0, _a = [\n            'column',\n            'arearange',\n            'columnrange',\n            'heatmap',\n            'treemap'\n        ]; _i < _a.length; _i++) {\n            var type = _a[_i];\n            if (seriesTypes[type]) {\n                wrap(seriesTypes[type].prototype, method, branch);\n            }\n        }\n    }\n}\n/**\n * Do not compute extremes when min and max are set. If we use this in the\n * core, we can add the hook to hasExtremes to the methods directly.\n * @private\n */\nfunction wrapSeriesGetExtremes(proceed) {\n    if (this.boosted) {\n        if (hasExtremes(this)) {\n            return {};\n        }\n        if (this.xAxis.isPanning || this.yAxis.isPanning) {\n            // Do not re-compute the extremes during panning, because looping\n            // the data is expensive. The `this` contains the `dataMin` and\n            // `dataMax` to use.\n            return this;\n        }\n    }\n    return proceed.apply(this, [].slice.call(arguments, 1));\n}\n/**\n * If the series is a heatmap or treemap, or if the series is not boosting\n * do the default behaviour. Otherwise, process if the series has no\n * extremes.\n * @private\n */\nfunction wrapSeriesProcessData(proceed) {\n    var _a,\n        _b,\n        _c;\n    var dataToMeasure = this.options.data;\n    if (boostEnabled(this.chart) && Boost_BoostableMap[this.type]) {\n        var series = this, \n            // Flag for code that should run for ScatterSeries and its\n            // subclasses, apart from the enlisted exceptions.\n            isScatter = series.is('scatter') &&\n                !series.is('bubble') &&\n                !series.is('treemap') &&\n                !series.is('heatmap');\n        // If there are no extremes given in the options, we also need to\n        // process the data to read the data extremes. If this is a heatmap,\n        // do default behaviour.\n        if (\n        // First pass with options.data:\n        !getSeriesBoosting(series, dataToMeasure) ||\n            isScatter ||\n            series.is('treemap') ||\n            // Use processedYData for the stack (#7481):\n            series.options.stacking ||\n            !hasExtremes(series, true)) {\n            // Do nothing until the panning stops\n            if (series.boosted && (((_a = series.xAxis) === null || _a === void 0 ? void 0 : _a.isPanning) || ((_b = series.yAxis) === null || _b === void 0 ? void 0 : _b.isPanning))) {\n                return;\n            }\n            // Extra check for zoomed scatter data\n            if (isScatter && !series.yAxis.treeGrid) {\n                scatterProcessData.call(series, arguments[1]);\n            }\n            else {\n                proceed.apply(series, [].slice.call(arguments, 1));\n            }\n            dataToMeasure = series.getColumn('x', true);\n        }\n        // Set the isBoosting flag, second pass with processedXData to\n        // see if we have zoomed.\n        series.boosted = getSeriesBoosting(series, dataToMeasure);\n        // Enter or exit boost mode\n        if (series.boosted) {\n            // Force turbo-mode:\n            var firstPoint = void 0;\n            if ((_c = series.options.data) === null || _c === void 0 ? void 0 : _c.length) {\n                firstPoint = series.getFirstValidPoint(series.options.data);\n                if (!BoostSeries_isNumber(firstPoint) &&\n                    !isArray(firstPoint) &&\n                    !series.is('treemap')) {\n                    BoostSeries_error(12, false, series.chart);\n                }\n            }\n            enterBoost(series);\n        }\n        else {\n            exitBoost(series);\n        }\n        // The series type is not boostable\n    }\n    else {\n        proceed.apply(this, [].slice.call(arguments, 1));\n    }\n}\n/**\n * Return a point instance from the k-d-tree\n * @private\n */\nfunction wrapSeriesSearchPoint(proceed) {\n    var result = proceed.apply(this,\n        [].slice.call(arguments, 1));\n    if (this.boost && result) {\n        return this.boost.getPoint(result);\n    }\n    return result;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar BoostSeries = {\n    compose: BoostSeries_compose,\n    destroyGraphics: destroyGraphics,\n    eachAsync: eachAsync,\n    getPoint: getPoint\n};\n/* harmony default export */ var Boost_BoostSeries = (BoostSeries);\n\n;// ./code/es5/es-modules/Extensions/Boost/NamedColors.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: highcharts.com/license\n *\n *  !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!\n *\n * */\n\n/* *\n *\n *  Constants\n *\n * */\n// Register color names since GL can't render those directly.\n// TODO: When supporting modern syntax, make this a named export\nvar defaultHTMLColorMap = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dodgerblue: '#1e90ff',\n    feldspar: '#d19275',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    gold: '#ffd700',\n    goldenrod: '#daa520',\n    gray: '#808080',\n    grey: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    lavender: '#e6e6fa',\n    lavenderblush: '#fff0f5',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrodyellow: '#fafad2',\n    lightgrey: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslateblue: '#8470ff',\n    lightslategray: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370d8',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#d87093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    violetred: '#d02090',\n    wheat: '#f5deb3',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32'\n};\n/* *\n *\n *  Default Export\n *\n * */\nvar namedColors = {\n    defaultHTMLColorMap: defaultHTMLColorMap\n};\n/* harmony default export */ var NamedColors = (namedColors);\n\n;// ./code/es5/es-modules/Extensions/Boost/Boost.js\n/* *\n *\n *  (c) 2019-2024 Highsoft AS\n *\n *  Boost module: stripped-down renderer for higher performance\n *\n *  License: 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};\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\n\nvar Boost_doc = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).doc, Boost_win = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).win;\n\n\nvar Boost_addEvent = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).addEvent, Boost_error = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).error;\n/* *\n *\n *  Constants\n *\n * */\nvar Boost_contexts = [\n    'webgl',\n    'experimental-webgl',\n    'moz-webgl',\n    'webkit-3d'\n];\n/* *\n *\n *  Functions\n *\n * */\n/**\n * @private\n */\nfunction Boost_compose(ChartClass, AxisClass, SeriesClass, seriesTypes, ColorClass) {\n    var wglMode = hasWebGLSupport();\n    if (!wglMode) {\n        if (typeof (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default()).initCanvasBoost !== 'undefined') {\n            // Fallback to canvas boost\n            highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default().initCanvasBoost();\n        }\n        else {\n            Boost_error(26);\n        }\n    }\n    if (ColorClass && !ColorClass.names.lightgoldenrodyellow) {\n        ColorClass.names = __assign(__assign({}, ColorClass.names), NamedColors.defaultHTMLColorMap);\n    }\n    // WebGL support is alright, and we're good to go.\n    Boost_BoostChart.compose(ChartClass, wglMode);\n    Boost_BoostSeries.compose(SeriesClass, seriesTypes, wglMode);\n    // Handle zooming by touch/pinch or mouse wheel. Assume that boosted charts\n    // are too slow for a live preview while dragging. Instead, just scale the\n    // div while `isPanning`.\n    Boost_addEvent(AxisClass, 'setExtremes', function (e) {\n        var _a;\n        var _b,\n            _c;\n        // Render targets can be either chart-wide or series-specific\n        var renderTargets = __spreadArray([this.chart],\n            this.series,\n            true).map(function (item) { return item.renderTarget; })\n                .filter(Boolean);\n        for (var _i = 0, renderTargets_1 = renderTargets; _i < renderTargets_1.length; _i++) {\n            var renderTarget = renderTargets_1[_i];\n            var _d = this, horiz = _d.horiz, pos = _d.pos, scaleKey = horiz ? 'scaleX' : 'scaleY', translateKey = horiz ? 'translateX' : 'translateY', lastScale = (_b = renderTarget === null || renderTarget === void 0 ? void 0 : renderTarget[scaleKey]) !== null && _b !== void 0 ? _b : 1;\n            var scale = 1,\n                translate = 0,\n                opacity = 1,\n                filter = 'none';\n            if (this.isPanning) {\n                scale = ((_c = e.scale) !== null && _c !== void 0 ? _c : 1) * lastScale;\n                translate = ((renderTarget === null || renderTarget === void 0 ? void 0 : renderTarget[translateKey]) || 0) -\n                    scale * (e.move || 0) +\n                    lastScale * pos -\n                    scale * pos;\n                opacity = 0.7;\n                filter = 'blur(3px)';\n            }\n            renderTarget === null || renderTarget === void 0 ? void 0 : renderTarget.attr((_a = {},\n                _a[scaleKey] = scale,\n                _a[translateKey] = translate,\n                _a)).css({\n                transition: '250ms filter, 250ms opacity',\n                filter: filter,\n                opacity: opacity\n            });\n        }\n    });\n}\n/**\n * Returns true if the current browser supports WebGL.\n *\n * @requires modules/boost\n *\n * @function Highcharts.hasWebGLSupport\n *\n * @return {boolean}\n * `true` if the browser supports WebGL.\n */\nfunction hasWebGLSupport() {\n    var canvas,\n        gl = false;\n    if (typeof Boost_win.WebGLRenderingContext !== 'undefined') {\n        canvas = Boost_doc.createElement('canvas');\n        for (var i = 0; i < Boost_contexts.length; ++i) {\n            try {\n                gl = canvas.getContext(Boost_contexts[i]);\n                if (typeof gl !== 'undefined' && gl !== null) {\n                    return true;\n                }\n            }\n            catch (e) {\n                // Silent error\n            }\n        }\n    }\n    return false;\n}\n/* *\n *\n *  Default Export\n *\n * */\nvar Boost = {\n    compose: Boost_compose,\n    hasWebGLSupport: hasWebGLSupport\n};\n/* harmony default export */ var Boost_Boost = (Boost);\n/* *\n *\n *  API Options\n *\n * */\n/**\n * Options for the Boost module. The Boost module allows certain series types\n * to be rendered by WebGL instead of the default SVG. This allows hundreds of\n * thousands of data points to be rendered in milliseconds. In addition to the\n * WebGL rendering it saves time by skipping processing and inspection of the\n * data wherever possible. This introduces some limitations to what features are\n * available in boost mode. See [the docs](\n * https://www.highcharts.com/docs/advanced-chart-features/boost-module) for\n * details.\n *\n * In addition to the global `boost` option, each series has a\n * [boostThreshold](#plotOptions.series.boostThreshold) that defines when the\n * boost should kick in.\n *\n * Requires the `modules/boost.js` module.\n *\n * @sample {highstock} highcharts/boost/line-series-heavy-stock\n *         Stock chart\n * @sample {highstock} highcharts/boost/line-series-heavy-dynamic\n *         Dynamic stock chart\n * @sample highcharts/boost/line\n *         Line chart\n * @sample highcharts/boost/line-series-heavy\n *         Line chart with hundreds of series\n * @sample highcharts/boost/scatter\n *         Scatter chart\n * @sample highcharts/boost/area\n *         Area chart\n * @sample highcharts/boost/arearange\n *         Area range chart\n * @sample highcharts/boost/column\n *         Column chart\n * @sample highcharts/boost/columnrange\n *         Column range chart\n * @sample highcharts/boost/bubble\n *         Bubble chart\n * @sample highcharts/boost/heatmap\n *         Heat map\n * @sample highcharts/boost/treemap\n *         Tree map\n *\n * @product   highcharts highstock\n * @requires  modules/boost\n * @apioption boost\n */\n/**\n * The chart will be boosted, if one of the series crosses its threshold and all\n * the series in the chart can be boosted.\n *\n * @type      {boolean}\n * @default   true\n * @apioption boost.allowForce\n */\n/**\n * Enable or disable boost on a chart.\n *\n * @type      {boolean}\n * @default   true\n * @apioption boost.enabled\n */\n/**\n * Debugging options for boost.\n * Useful for benchmarking, and general timing.\n *\n * @apioption boost.debug\n */\n/**\n * Time the series rendering.\n *\n * This outputs the time spent on actual rendering in the console when\n * set to true.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.timeRendering\n */\n/**\n * Time the series processing.\n *\n * This outputs the time spent on transforming the series data to\n * vertex buffers when set to true.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.timeSeriesProcessing\n */\n/**\n * Time the WebGL setup.\n *\n * This outputs the time spent on setting up the WebGL context,\n * creating shaders, and textures.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.timeSetup\n */\n/**\n * Time the building of the k-d tree.\n *\n * This outputs the time spent building the k-d tree used for\n * markers etc.\n *\n * Note that the k-d tree is built async, and runs post-rendering.\n * Following, it does not affect the performance of the rendering itself.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.timeKDTree\n */\n/**\n * Show the number of points skipped through culling.\n *\n * When set to true, the number of points skipped in series processing\n * is outputted. Points are skipped if they are closer than 1 pixel from\n * each other.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.showSkipSummary\n */\n/**\n * Time the WebGL to SVG buffer copy\n *\n * After rendering, the result is copied to an image which is injected\n * into the SVG.\n *\n * If this property is set to true, the time it takes for the buffer copy\n * to complete is outputted.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.debug.timeBufferCopy\n */\n/**\n * The pixel ratio for the WebGL content. If 0, the `window.devicePixelRatio` is\n * used. This ensures sharp graphics on high DPI displays like Apple's Retina,\n * as well as when a page is zoomed.\n *\n * The default is left at 1 for now, as this is a new feature that has the\n * potential to break existing setups. Over time, when it has been battle\n * tested, the intention is to set it to 0 by default.\n *\n * Another use case for this option is to set it to 2 in order to make exported\n * and upscaled charts render sharp.\n *\n * One limitation when using the `pixelRatio` is that the line width of graphs\n * is scaled down. Since the Boost module currently can only render 1px line\n * widths, it is scaled down to a thin 0.5 pixels on a Retina display.\n *\n * @sample    highcharts/boost/line-devicepixelratio\n *            Enable the `devicePixelRatio`\n * @sample    highcharts/boost/line-export-pixelratio\n *            Sharper graphics in export\n *\n * @type      {number}\n * @since 10.0.0\n * @default   1\n * @apioption boost.pixelRatio\n */\n/**\n * Set the series threshold for when the boost should kick in globally.\n *\n * Setting to e.g. 20 will cause the whole chart to enter boost mode\n * if there are 20 or more series active. When the chart is in boost mode,\n * every series in it will be rendered to a common canvas. This offers\n * a significant speed improvement in charts with a very high\n * amount of series.\n *\n * @type      {number}\n * @default   50\n * @apioption boost.seriesThreshold\n */\n/**\n * Enable or disable GPU translations. GPU translations are faster than doing\n * the translation in JavaScript.\n *\n * This option may cause rendering issues with certain datasets.\n * Namely, if your dataset has large numbers with small increments (such as\n * timestamps), it won't work correctly. This is due to floating point\n * precision.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.useGPUTranslations\n */\n/**\n * Enable or disable pre-allocation of vertex buffers.\n *\n * Enabling this will make it so that the binary data arrays required for\n * storing the series data will be allocated prior to transforming the data\n * to a WebGL-compatible format.\n *\n * This saves a copy operation on the order of O(n) and so is significantly more\n * performant. However, this is currently an experimental option, and may cause\n * visual artifacts with some datasets.\n *\n * As such, care should be taken when using this setting to make sure that\n * it doesn't cause any rendering glitches with the given use-case.\n *\n * @type      {boolean}\n * @default   false\n * @apioption boost.usePreallocated\n */\n/**\n * Set the point threshold for when a series should enter boost mode.\n *\n * Setting it to e.g. 2000 will cause the series to enter boost mode when there\n * are 2000 or more points in the series.\n *\n * To disable boosting on the series, set the `boostThreshold` to 0. Setting it\n * to 1 will force boosting.\n *\n * Note that the [cropThreshold](plotOptions.series.cropThreshold) also affects\n * this setting. When zooming in on a series that has fewer points than the\n * `cropThreshold`, all points are rendered although outside the visible plot\n * area, and the `boostThreshold` won't take effect.\n *\n * @type      {number}\n * @default   5000\n * @requires  modules/boost\n * @apioption plotOptions.series.boostThreshold\n */\n/**\n * Sets the color blending in the boost module.\n *\n * @type       {string}\n * @default    undefined\n * @validvalue [\"add\", \"multiply\", \"darken\"]\n * @requires   modules/boost\n * @apioption  plotOptions.series.boostBlending\n */\n''; // Adds doclets above to transpiled file\n\n;// ./code/es5/es-modules/masters/modules/boost.src.js\n\n\n\n\nvar G = (highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default());\nG.hasWebGLSupport = Boost_Boost.hasWebGLSupport;\nBoost_Boost.compose(G.Chart, G.Axis, G.Series, G.seriesTypes, G.Color);\n/* harmony default export */ var boost_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__620__","ChartClass","AxisClass","SeriesClass","seriesTypes","ColorClass","wglMode","index","mainCanvas","__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__","boost_src","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_","highcharts_commonjs_highcharts_commonjs2_highcharts_root_Highcharts_default","Boost_Boostables","BoostableMap","forEach","item","composed","addEvent","pick","pushUnique","isChartSeriesBoosting","chart","allSeries","series","boost","boostOptions","options","threshold","seriesThreshold","length","allowBoostForce","allowForce","_i","_a","xAxis","axis","min","Infinity","dataMin","max","dataMax","forceChartBoost","seriesOptions","canBoostCount","needBoostCount","_b","allSeries_1","boostThreshold","visible","type","Boost_BoostableMap","patientMax","args","arguments","r","Number","MAX_VALUE","t","getColumn","data","points","target","navigator","clipBox","x","plotLeft","y","plotTop","width","plotWidth","height","plotHeight","inverted","top","opposite","left","getClipBox","yAxis","lateral","pos","verticalAxes","Math","len","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_","highcharts_Color_commonjs_highcharts_Color_commonjs2_highcharts_Color_root_Highcharts_Color_default","Boost_WGLDrawMode","clamp","error","WGLShader_pick","WGLShader","gl","errors","uLocations","createShader","bind","shaderProgram","useProgram","_this","v","stringToProgram","f","uloc","getUniformLocation","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","bindAttribLocation","pUniform","psUniform","fcUniform","isBubbleUniform","bubbleSizeAbsUniform","bubbleSizeAreaUniform","uSamplerUniform","skipTranslationUniform","isCircleUniform","isInverted","push","getProgramInfoLog","handleErrors","join","str","shader","VERTEX_SHADER","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","destroy","deleteProgram","fillColorUniform","getProgram","pointSizeUniform","perspectiveUniform","reset","uniform1i","setBubbleUniforms","zCalcMin","zCalcMax","pixelRatio","zMin","zMax","is","pxSizes","getPxExtremes","displayNegative","zThreshold","sizeBy","sizeByAbsoluteValue","setUniform","minPxSize","maxPxSize","setColor","color","uniform4f","setDrawAsCircle","flag","setInverted","setPMatrix","m","uniformMatrix4fv","setPointSize","p","uniform1f","setSkipTranslation","setTexture","texture","name","val","u","WGLVertexBuffer","dataComponents","buffer","iterator","preAllocated","vertAttribute","components","allocate","size","Float32Array","vertexAttribPointer","FLOAT","build","dataIn","attrib","farray","deleteBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","getAttribLocation","enableVertexAttribArray","b","render","from","to","drawMode","drawArrays","parse","doc","win","isNumber","isObject","merge","objectEach","WGLRenderer_pick","asBar","asCircle","contexts","WGLRenderer","postRenderCallback","isInited","markerData","textureHandles","settings","pointSize","lineWidth","fillColor","useAlpha","usePreallocated","useGPUTranslations","debug","timeRendering","timeSeriesProcessing","timeSetup","timeBufferCopy","timeKDTree","showSkipSummary","orthoMatrix","seriesPointCount","isStacked","xData","s","boosted","stacking","getPixelRatio","devicePixelRatio","setOptions","allocateBuffer","vbuffer","allocateBufferForSingleSeries","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","pushSeriesData","inst","minVal","scolor","z","low","zoneColors","isRange","pointArrayMap","sorted","rawData","xExtremes","getExtremes","xMin","minPointOffset","xMax","yExtremes","yMin","yMax","yData","zData","useRaw","connectNulls","sdata","closestLeft","closestRight","chartDestroyed","drawAsBar","zoneAxis","zones","lastX","lastY","skipped","hadPoints","i","px","nx","nextInside","prevInside","pcolor","isXInside","isYInside","firstPoint","zoneDefColor","gapSize","vlen","boostData","gapUnit","closestPointRange","zone","zoneColor","rgba","value","pointAttribs","fill","closestPointRangePx","pushColor","colorData","vertice","checkTreshold","skipTranslation","closeSegment","segments","beginSegment","pushRect","w","h","node","levelDynamic","sort","point","swidth","pointAttr","plotY","isNaN","shapeArgs","x_1","_c","y_1","_d","_e","styledMode","colorAttribs","stroke","state_1","_loop_1","zoneColor_1","pointOptions","slice","stackY","some","last","toPixels","hasMarkers","abs","logarithmic","step","console","log","pushSupplementPoint","atStart","concat","pushSeries","markerTo","time","markerFrom","marker","enabled","showMarkers","timeEnd","flush","setXAxis","transA","minPixelPadding","pointRange","horiz","reversed","setYAxis","setThreshold","has","translation","renderChart","chartWidth","chartHeight","canvas","viewport","isMS","si","sindex","cbuffer","shapeOptions","hasThreshold","yBottom","getThreshold","isRadial","radius","shapeTexture","symbol","circle","isReady","bindTexture","TEXTURE_2D","handle","markerGroup","plotGroup","seriesGroup","addClass","getStyle","colorByPoint","colors","fillOpacity","setOpacity","boostBlending","blendFunc","SRC_ALPHA","ONE","blendEquation","FUNC_ADD","DST_COLOR","ZERO","FUNC_MIN","blendFuncSeparate","ONE_MINUS_SRC_ALPHA","Array","disableVertexAttribArray","renderer","forExport","setTimeout","setSize","init","noFlush","getContext","enable","BLEND","disable","DEPTH_TEST","depthFunc","LESS","createTexture","fn","props","createElement","ctx","mozImageSmoothingEnabled","webkitImageSmoothingEnabled","msImageSmoothingEnabled","imageSmoothingEnabled","strokeStyle","fillStyle","activeTexture","TEXTURE0","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","e","beginPath","arc","PI","fillRect","moveTo","lineTo","deleteTexture","getOptions","BoostSeries_composed","BoostSeries_doc","noop","BoostSeries_win","BoostSeries_addEvent","destroyObjectProperties","BoostSeries_error","extend","fireEvent","isArray","BoostSeries_isNumber","BoostSeries_pick","BoostSeries_pushUnique","wrap","defined","allocateIfNotSeriesBoosting","BoostSeries_isChartSeriesBoosting","boostEnabled","createAndAttachRenderer","constructor","targetGroup","group","foSupported","SVGForeignObjectElement","hasClickHandler","Boolean","events","click","renderTarget","image","add","attr","href","copy","resize","toDataURL","targetFo","targetCtx","element","appendChild","drawImage","css","pointerEvents","mixedBlendMode","opacity","translate","clipRect","zIndex","g","box","BoostSeries_getBoostClipRect","clippedElement","clip","wgl","hasExtremes","checkX","dataLength","dataTable","modified","rowCount","colorAxis","getSeriesBoosting","forceCrop","onSeriesDestroy","hoverPoints","filter","hoverPoint","onSeriesHide","renderIfNotSeriesBoosting","scatterProcessData","force","isDirty","setTickInterval","cropThreshold","old","_f","_g","_h","setColumns","getExtremesFromAll","processedData","processedXData","processedYData","xRangeNeeded","yRangeNeeded","cropped","xDataMax","xDataMin","yDataMax","yDataMin","iEnd","cropStart","seriesRenderCanvas","lastClientX","maxVal","minI","maxI","chartBoost","seriesBoost","lowData","highData","pointTaken","sampling","enableMouseTracking","requireSorting","compareX","findNearestPointBy","xDataFull","isPanning","graph","destroyGraphics","destroyElements","seriesProp","addKDPoint","clientX","percentage","pushPoint","plotX","ceil","buildKDTree","lineWidthFilter","tagName","children","attributes","operator","id","eachAsync","arr","finalFunc","chunkSize","noTimeout","proceed","requestAnimationFrame","wrapSeriesDrawPoints","wrapSeriesGetExtremes","apply","wrapSeriesProcessData","dataToMeasure","isScatter","treeGrid","getFirstValidPoint","enterBoost","getPoint","bp","boostPoint","PointClass","pointClass","category","categories","dist","distX","isInside","isPointInside","alteredByBoost","altered","own","allowDG","directTouch","stickyTracking","finishedAnimating","labelBySeries","exitBoost","setting","wrapSeriesSearchPoint","result","__assign","assign","__spreadArray","pack","ar","l","Boost_doc","Boost_win","Boost_addEvent","Boost_error","Boost_contexts","hasWebGLSupport","WebGLRenderingContext","G","Chart","Axis","Series","Color","initCanvasBoost","names","lightgoldenrodyellow","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","whitesmoke","yellow","yellowgreen","callbacks","canvasToSVG","axes","order","prevX","prevY","pointer","halo","hide","Boost_BoostSeries","plotOptions_1","plotOptions","seriesProto_1","renderCanvas","method","wrapSeriesFunctions","seriesProto","branch","letItPass","typePlotOptions","AreaSeries","area","AreaSplineSeries","areaspline","BubbleSeries","bubble","ColumnSeries","column","HeatmapSeries","heatmap","ScatterSeries","scatter","TreemapSeries","treemap","bubbleProto_1","SC","renderTargets","map","renderTargets_1","scaleKey","translateKey","lastScale","scale","move","transition"],"mappings":"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"}

Hacked By AnonymousFox1.0, Coded By AnonymousFox