{"version":3,"file":"spectra-processor.js","sources":["../node_modules/is-any-array/src/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/ml-spectra-processing/src/x/xAdd.js","../node_modules/ml-spectra-processing/src/x/xMultiply.js","../node_modules/ml-spectra-processing/src/x/xBoxPlot.js","../node_modules/ml-spectra-processing/src/x/xCorrelation.js","../node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/src/x/xCheck.js","../node_modules/ml-spectra-processing/src/x/xMaxValue.js","../node_modules/ml-spectra-processing/src/x/xMinValue.js","../node_modules/d3-array/build/d3-array.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-array-mean/lib-es6/index.js","../node_modules/ml-array-variance/lib-es6/index.js","../node_modules/ml-array-standard-deviation/lib-es6/index.js","../node_modules/ml-spectra-processing/src/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/src/x/xSubtract.js","../node_modules/ml-spectra-processing/src/x/xSum.js","../node_modules/ml-spectra-processing/src/xy/xyCheck.js","../node_modules/ml-spectra-processing/src/xy/xyIntegration.js","../node_modules/ml-spectra-processing/src/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/src/xy/xyMinYPoint.js","../node_modules/ml-peak-shape-generator/src/util/constants.js","../node_modules/ml-peak-shape-generator/src/util/erfinv.js","../node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../node_modules/ml-peak-shape-generator/src/util/getShapeGenerator.js","../node_modules/ml-savitzky-golay-generalized/src/index.js","../node_modules/ml-gsd/src/gsd.js","../node_modules/assign-symbols/index.js","../node_modules/assign-deep/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-spectra-processing/src/xy/xyCalibrate.js","../node_modules/ml-spectra-processing/src/matrix/matrixCenterYMean.js","../node_modules/ml-spectra-processing/src/matrix/matrixYRescale.js","../node_modules/ml-spectra-processing/src/matrix/matrixPQN.js","../node_modules/chroma-js/chroma.js","../node_modules/ml-array-xy-filter-x/src/getZones.js","../node_modules/ml-array-xy-filter-x/src/index.js","../src/jsgraph/getAutocorrelationChart.js","../src/spectra/getBoxPlotData.js","../src/jsgraph/getBoxPlotChart.js","../src/jsgraph/addChartDataStyle.js","../src/jsgraph/getChart.js","../src/jsgraph/getNormalizationAnnotations.js","../src/jsgraph/getNormalizedChart.js","../src/jsgraph/getPostProcessedChart.js","../src/spectra/getNormalizedData.js","../src/jsgraph/getTrackAnnotation.js","../src/metadata/getCategoriesStats.js","../src/metadata/getClasses.js","../src/metadata/getMetadata.js","../node_modules/jcampconverter/src/complexChromatogram.js","../node_modules/jcampconverter/src/convertToFloatArray.js","../node_modules/jcampconverter/src/parse/fastParseXYData.js","../node_modules/jcampconverter/src/parse/parsePeakTable.js","../node_modules/jcampconverter/src/parse/parseXYA.js","../node_modules/jcampconverter/src/2d/convertTo3DZ.js","../node_modules/jcampconverter/src/2d/generateContourLines.js","../node_modules/jcampconverter/src/2d/add2D.js","../node_modules/ml-fft/src/fftlib.js","../node_modules/nmr-processing/src/constants/gyromagneticRatio.js","../node_modules/jcampconverter/src/postProcessingNMR.js","../node_modules/jcampconverter/src/profiling.js","../node_modules/jcampconverter/src/simpleChromatogram.js","../node_modules/jcampconverter/src/postProcessing.js","../node_modules/jcampconverter/src/prepareNtuplesDatatable.js","../node_modules/jcampconverter/src/prepareSpectrum.js","../node_modules/jcampconverter/src/convert.js","../src/Kinds.js","../src/parser/jcamp.js","../src/parser/matrix.js","../node_modules/ml-arrayxy-uniquex/src/index.js","../node_modules/xy-parser/src/index.js","../src/parser/text.js","../src/spectra/getAutocorrelation.js","../src/spectra/getMeanData.js","../src/spectra/util/convertToText.js","../src/spectra/getNormalizedText.js","../node_modules/object-hash/dist/object_hash.js","../src/spectra/scaled/getFromToIndex.js","../src/spectra/scaled/integration.js","../src/spectra/scaled/max.js","../src/spectra/scaled/min.js","../src/spectra/scaled/minMax.js","../src/spectra/getPostProcessedData.js","../src/spectra/getPostProcessedText.js","../node_modules/ml-stat/array.js","../src/spectrum/getData.js","../node_modules/ml-array-normed/lib-es6/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/ml-zones/src/normalize.js","../node_modules/ml-zones/src/invert.js","../node_modules/ml-zones/src/zonesWithPoints.js","../node_modules/ml-array-xy-equally-spaced/src/integral.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSmooth.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSlot.js","../node_modules/ml-array-xy-equally-spaced/src/index.js","../src/spectrum/getNormalized.js","../src/spectrum/updateRangesInfo.js","../src/spectrum/Spectrum.js","../src/SpectraProcessor.js","../src/jsgraph/getFilterAnnotations.js"],"sourcesContent":["const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport default median;\n","/**\n\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param {Array<Number>} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xAdd(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] + array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Float64Array}\n */\nexport function xMultiply(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Float64Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] * constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] * array2[i];\n    }\n  }\n\n  return array3;\n}\n","/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param {Array<Number>} array1 - the array that will be rotated\n * @return {object}\n */\nexport function xBoxPlot(array) {\n  array = array.slice(0).sort((a, b) => a - b);\n  if (array.length < 5) {\n    throw Error(\n      'xBoxPlot: can not calculate info if array contains less than 3 elements',\n    );\n  }\n  let info = {\n    Q1: 0.0,\n    Q2: 0.0,\n    Q3: 0.0,\n    min: array[0],\n    max: array[array.length - 1],\n  };\n  let q1max, q3min;\n  if (array.length % 2 === 1) {\n    // odd\n    let middle = (array.length - 1) / 2;\n    info.Q2 = array[middle];\n    q1max = middle - 1;\n    q3min = middle + 1;\n  } else {\n    // even\n    q3min = array.length / 2;\n    q1max = q3min - 1;\n    info.Q2 = (array[q1max] + array[q3min]) / 2;\n  }\n  if (q1max % 2 === 0) {\n    info.Q1 = array[q1max / 2];\n    info.Q3 = array[(array.length + q3min - 1) / 2];\n  } else {\n    info.Q1 = (array[(q1max + 1) / 2] + array[(q1max - 1) / 2]) / 2;\n    let middleOver = (array.length + q3min) / 2;\n    info.Q3 = (array[middleOver] + array[middleOver - 1]) / 2;\n  }\n  return info;\n}\n","/**\n\n/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n *\n * @param {Array<Number>} [A] - the array that will be rotated\n * @param {Array<Number>} [B]\n * @return {Array}\n */\nexport function xCorrelation(A, B) {\n  let n = A.length;\n  let sumA = 0;\n  let sumA2 = 0;\n  let sumB = 0;\n  let sumB2 = 0;\n  let sumAB = 0;\n  for (let i = 0; i < n; i++) {\n    let a = A[i];\n    let b = B[i];\n    sumA += a;\n    sumA2 += a ** 2;\n    sumB += b;\n    sumB2 += b ** 2;\n    sumAB += a * b;\n  }\n  return (\n    (n * sumAB - sumA * sumB) /\n    (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2))\n  );\n}\n","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\n  let low = 0;\n  let high = array.length - 1;\n  let middle = 0;\n  while (high - low > 1) {\n    middle = low + ((high - low) >> 1);\n    if (array[middle] < target) {\n      low = middle;\n    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\n  }\n\n  if (low < array.length - 1) {\n    if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n      return low;\n    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","import isArray from 'is-any-array';\n\n/**\n * Checks if input is valdi\n * @param {Array<number>} input\n\n */\nexport default function xCheck(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n}\n","import xCheck from './xCheck';\n\n/**\n * Computes the maximal value of an array of values\n * @param {Array<number>} array\n * @param {object} [options={}]\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number}\n */\nexport function xMaxValue(array, options = {}) {\n  xCheck(array);\n  const { fromIndex = 0, toIndex = array.length - 1 } = options;\n  let maxValue = array[fromIndex];\n\n  for (let i = fromIndex + 1; i <= toIndex; i++) {\n    if (array[i] > maxValue) {\n      maxValue = array[i];\n    }\n  }\n  return maxValue;\n}\n","import xCheck from './xCheck';\n\n/**\n * Computes the minimal value of an array of values\n * @param {Array<number>} array\n * @param {object} [options={}]\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number}\n */\nexport function xMinValue(array, options = {}) {\n  xCheck(array);\n  const { fromIndex = 0, toIndex = array.length - 1 } = options;\n  let minValue = array[fromIndex];\n\n  for (let i = fromIndex + 1; i <= toIndex; i++) {\n    if (array[i] < minValue) {\n      minValue = array[i];\n    }\n  }\n  return minValue;\n}\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","import isArray from 'is-any-array';\n\nfunction sum(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","import sum from 'ml-array-sum';\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport default mean;\n","import isArray from 'is-any-array';\nimport arrayMean from 'ml-array-mean';\n\nfunction variance(values) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(values)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options$unbiased = options.unbiased,\n      unbiased = _options$unbiased === void 0 ? true : _options$unbiased,\n      _options$mean = options.mean,\n      mean = _options$mean === void 0 ? arrayMean(values) : _options$mean;\n  var sqrError = 0;\n\n  for (var i = 0; i < values.length; i++) {\n    var x = values[i] - mean;\n    sqrError += x * x;\n  }\n\n  if (unbiased) {\n    return sqrError / (values.length - 1);\n  } else {\n    return sqrError / values.length;\n  }\n}\n\nexport default variance;\n","import variance from 'ml-array-variance';\n\nfunction standardDeviation(values) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return Math.sqrt(variance(values, options));\n}\n\nexport default standardDeviation;\n","import sd from 'ml-array-standard-deviation';\n\nimport xCheck from './xCheck';\n\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param {Array<Number>} array\n * @return {Array}\n */\nexport function xParetoNormalization(array) {\n  xCheck(array);\n  let result = [];\n  const sqrtSD = Math.sqrt(sd(array));\n\n  for (let item of array) {\n    result.push(item / sqrtSD);\n  }\n  return result;\n}\n","/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param {Array} array1 - the array that will be rotated\n * @param {Array|Number} array2\n * @return {Array}\n */\nexport function xSubtract(array1, array2) {\n  let isConstant = false;\n  let constant;\n  if (Array.isArray(array2)) {\n    if (array1.length !== array2.length) {\n      throw new Error('sub: size of array1 and array2 must be identical');\n    }\n  } else {\n    isConstant = true;\n    constant = Number(array2);\n  }\n\n  let array3 = new Array(array1.length);\n  if (isConstant) {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - constant;\n    }\n  } else {\n    for (let i = 0; i < array1.length; i++) {\n      array3[i] = array1[i] - array2[i];\n    }\n  }\n\n  return array3;\n}\n","import xCheck from './xCheck';\n\n/**\n * Calculate the sum of the values\n * @param {DataXY} [array={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.fromIndex=0] - First point for xSum\n * @param {number} [options.toIndex=x.length-1] - Last point for xSum\n * @return {number} xSum value on the specified range\n */\n\nexport function xSum(array, options = {}) {\n  const { fromIndex = 0, toIndex = array.length - 1 } = options;\n  xCheck(array);\n\n  let sumValue = array[fromIndex];\n  for (let i = fromIndex + 1; i <= toIndex; i++) {\n    sumValue += array[i];\n  }\n  return sumValue;\n}\n","import isAnyArray from 'is-any-array';\n\n/**\n * Throw an error in no an object of x,y arrays\n * @param {DataXY} [data={}]\n */\nexport function xyCheck(data = {}) {\n  if (!isAnyArray(data.x) || !isAnyArray(data.y)) {\n    throw new Error('Points must be an object of x and y arrays');\n  }\n  if (data.x.length !== data.y.length) {\n    throw new Error('The x and y arrays mush have the same length');\n  }\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Calculate integration\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} xyIntegration value on the specified range\n */\n\nexport function xyIntegration(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n  let currentxyIntegration = 0;\n  for (let i = fromIndex; i < toIndex; i++) {\n    currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n  }\n\n  return currentxyIntegration;\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {object}\n */\n\nexport function xyMaxYPoint(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n  for (let i = fromIndex; i <= toIndex; i++) {\n    if (y[i] > current.y) current = { x: x[i], y: y[i], index: i };\n  }\n\n  return current;\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {object}\n */\n\nexport function xyMinYPoint(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n\n  let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n  for (let i = fromIndex; i <= toIndex; i++) {\n    if (y[i] < current.y) current = { x: x[i], y: y[i], index: i };\n  }\n\n  return current;\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=x] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { Gaussian } from '../classes/Gaussian';\nimport { Lorentzian } from '../classes/Lorentzian';\nimport { PseudoVoigt } from '../classes/PseudoVoigt';\n\nexport function getShapeGenerator(options) {\n  let { kind = 'Gaussian', options: shapeOptions } = options;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'gaussian':\n      return new Gaussian(shapeOptions);\n    case 'lorentzian':\n      return new Lorentzian(shapeOptions);\n    case 'pseudovoigt':\n      return new PseudoVoigt(shapeOptions);\n    default:\n      throw new Error(`Unknown kind: ${kind}`);\n  }\n}\n","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\n  }\n  if (derivative < 0 || !Number.isInteger(derivative)) {\n    throw new RangeError('Derivative should be a positive integer');\n  }\n  if (polynomial < 1 || !Number.isInteger(polynomial)) {\n    throw new RangeError('Polynomial should be a positive integer');\n  }\n  if (polynomial >= 6) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'You should not use polynomial grade higher than 5 if you are' +\n        ' not sure that your data arises from such a model. Possible polynomial oscillation problems',\n    );\n  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let wg2 = weights[half + i + 1];\n    let d1 = 0;\n    let d2 = 0;\n    for (let l = 0; l < windowSize; l++) {\n      d1 += wg1[l] * ys[l];\n      d2 += wg2[l] * ys[np - windowSize + l];\n    }\n    if (constantH) {\n      ans[half - i - 1] = d1 / hs;\n      ans[np - half + i] = d2 / hs;\n    } else {\n      hs = getHs(xs, half - i - 1, half, derivative);\n      ans[half - i - 1] = d1 / hs;\n      hs = getHs(xs, np - half + i, half, derivative);\n      ans[np - half + i] = d2 / hs;\n    }\n  }\n\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\n\nfunction getHs(h, center, half, derivative) {\n  let hs = 0;\n  let count = 0;\n  for (let i = center - half; i < center + half; i++) {\n    if (i >= 0 && i < h.length - 1) {\n      hs += h[i + 1] - h[i];\n      count++;\n    }\n  }\n  return Math.pow(hs / count, derivative);\n}\n\nfunction GramPoly(i, m, k, s) {\n  let Grampoly = 0;\n  if (k > 0) {\n    Grampoly =\n      ((4 * k - 2) / (k * (2 * m - k + 1))) *\n        (i * GramPoly(i, m, k - 1, s) + s * GramPoly(i, m, k - 1, s - 1)) -\n      (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n        GramPoly(i, m, k - 2, s);\n  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\n\nfunction GenFact(a, b) {\n  let gf = 1;\n  if (a >= b) {\n    for (let j = a - b + 1; j <= a; j++) {\n      gf *= j;\n    }\n  }\n  return gf;\n}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(k);\n    sum +=\n      (2 * k + 1) *\n      (GenFact(2 * m, k) / GenFact(2 * m + k + 1, k + 1)) *\n      GramPoly(i, m, k, 0) *\n      GramPoly(t, m, k, s);\n  }\n  return sum;\n}\n\n/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(m);\n    for (let j = -np; j <= np; j++) {\n      weights[t + np][j + np] = Weight(j, t, np, n, s);\n    }\n  }\n  return weights;\n}\n\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import { getShapeGenerator } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n\n  const yCorrection = { m: 1, b: noiseLevel };\n\n  if (!maxCriteria) {\n    yCorrection.m = -1;\n    yCorrection.b *= -1;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    y[i] = yCorrection.m * y[i] - yCorrection.b;\n  }\n\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    // console.log('pasa', y[i], dY[i], ddY[i]);\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShapeGenerator(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: (yData[minddY[j]] + yCorrection.b) / yCorrection.m,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort(function (a, b) {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = (target, ...args) => {\n  if (!isObject(target)) {\n    throw new TypeError('expected the first argument to be an object');\n  }\n\n  if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n    return target;\n  }\n\n  for (let arg of args) {\n    let names = getSymbols(arg);\n\n    for (let key of names) {\n      if (isEnumerable.call(arg, key)) {\n        target[key] = arg[key];\n      }\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n}\n","/*!\n * assign-deep <https://github.com/jonschlinkert/assign-deep>\n *\n * Copyright (c) 2017-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst assignSymbols = require('assign-symbols');\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nconst assign = module.exports = (target, ...args) => {\n  let i = 0;\n  if (isPrimitive(target)) target = args[i++];\n  if (!target) target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key])) {\n            assign(target[key], args[i][key]);\n          } else {\n            target[key] = args[i][key];\n          }\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]';\n}\n\nfunction isPrimitive(val) {\n  return typeof val === 'object' ? val === null : typeof val !== 'function';\n}\n","import isArray from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport default max;\n","import isArray from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport default min;\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport default rescale;\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n  checkNonEmpty,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (Array.isArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import mean from 'ml-array-mean';\nimport { gsd } from 'ml-gsd';\n\nimport { xFindClosestIndex } from '../x/xFindClosestIndex';\n\n/**\n * Calibrates the data based on a range and means of peaks in this range\n * Based on a range we will make a peak picking using global spectra deconvolution\n * The selected nbPeaks will then be taken into account to calculate an average X value.\n * The difference between the targetX and the averageX value will be returned\n * @param {DataXY} [data] array of points {x,y}\n * @param {Object} [range={}]\n * @param {number} [range.from] - Beginning of the range where the interest signal is localed\n * @param {number} [range.to] - End of the range where the interest signal is localed\n * @param {Object} [options={}]\n * @param {number} [options.nbPeaks=1] Number of peaks to consider to calculate mean (sorted by height)\n * @param {number} [options.targetX=0] Expected value for the mean of the peaks position\n * @param {number} [options.gsd={}] GSD options. You may check options here: http://mljs.github.io/global-spectral-deconvolution/#gsd\n * @param {number} [options.gsd.minMaxRatio=0.2] - GSD Threshold to determine if a given peak should be considered as a noise.\n * @returns {number} difference between targetX and currentX\n */\n\nexport function xyCalibrate(data, range = {}, options = {}) {\n  const {\n    targetX = 0,\n    nbPeaks = 1,\n    gsd: gsdOptions = {\n      minMaxRatio: 0.1,\n      realTopDetection: true,\n      smoothY: true,\n      sgOptions: {\n        windowSize: 7,\n        polynomial: 3,\n      },\n    },\n  } = options;\n  let { from, to } = range;\n  if (from === undefined || to === undefined) return 0;\n\n  const fromIndex = xFindClosestIndex(data.x, from);\n  const toIndex = xFindClosestIndex(data.x, to);\n  const sliceddata = {\n    x: data.x.slice(fromIndex, toIndex),\n    y: data.y.slice(fromIndex, toIndex),\n  };\n\n  let peaks = gsd(sliceddata, gsdOptions)\n    .sort((a, b) => b.y - a.y)\n    .slice(0, nbPeaks);\n\n  if (peaks.length === 0) return 0;\n\n  const middle = mean(peaks.map((peak) => peak.x));\n\n  return targetX - middle;\n}\n","/**\n * Center mean of columns\n * @param {Array<Array<Number>>} [matrix] - matrix [rows][cols].\n */\nexport function matrixCenterYMean(matrix) {\n  const nbRows = matrix.length;\n  const nbColumns = matrix[0].length;\n  const newMatrix = new Array(nbRows);\n  for (let row = 0; row < nbRows; row++) {\n    newMatrix[row] = new Float64Array(nbColumns);\n  }\n  for (let column = 0; column < nbColumns; column++) {\n    let mean = 0;\n    for (let row = 0; row < nbRows; row++) {\n      mean += matrix[row][column];\n    }\n    mean /= nbRows;\n    for (let row = 0; row < nbRows; row++) {\n      newMatrix[row][column] = matrix[row][column] - mean;\n    }\n  }\n  return newMatrix;\n}\n","/**\n * Rescale columns\n * @param {Array<Array<Number>>} [matrix] - matrix [rows][cols].\n * @param {object} [options={}]\n * @param {object} [options.min=0]\n * @param {object} [options.max=1]\n *\n */\nexport function matrixYRescale(matrix, options = {}) {\n  const { min = 0, max = 1 } = options;\n  const nbRows = matrix.length;\n  const nbColumns = matrix[0].length;\n  const newMatrix = new Array(nbRows);\n  for (let row = 0; row < nbRows; row++) {\n    newMatrix[row] = new Float64Array(nbColumns);\n  }\n  for (let column = 0; column < nbColumns; column++) {\n    let currentMin = matrix[0][column];\n    let currentMax = matrix[0][column];\n    for (let row = 1; row < nbRows; row++) {\n      if (matrix[row][column] < currentMin) currentMin = matrix[row][column];\n      if (matrix[row][column] > currentMax) currentMax = matrix[row][column];\n    }\n\n    const factor = (max - min) / (currentMax - currentMin);\n\n    for (let row = 0; row < nbRows; row++) {\n      newMatrix[row][column] =\n        (matrix[row][column] - currentMin) * factor + min;\n    }\n  }\n  return newMatrix;\n}\n","import median from 'ml-array-median';\nimport { Matrix } from 'ml-matrix';\n\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n * @param {Array<Array<Number>>} [matrix] - matrix [rows][cols].\n * @param {Object} [options={}]\n * @param {number} [options.max=100] - Normalization integral constant.\n * @return {Object} { data, medianOfQuotients }.\n * data: Normalized dataset.\n * medianOfQuotients: The median of quotients of each variables.\n */\nexport function matrixPQN(matrix, options = {}) {\n  const { max = 100 } = options;\n  matrix = new Matrix(matrix);\n  for (let i = 0; i < matrix.rows; i++) {\n    const normalizationFactor = matrix.getRowVector(i).norm() / max;\n    const row = matrix.getRowVector(i).div(normalizationFactor);\n    matrix.setRow(i, row);\n  }\n\n  let referenceSpectrum = [];\n  for (let i = 0; i < matrix.columns; i++) {\n    const currentVariable = matrix.getColumn(i);\n    referenceSpectrum.push(median(currentVariable));\n  }\n\n  let medianOfQuotients = [];\n  for (let i = 0; i < matrix.columns; i++) {\n    let quotients = matrix.getColumnVector(i).div(referenceSpectrum[i]);\n    medianOfQuotients.push(median(quotients.getColumn(0)));\n  }\n\n  for (let i = 0; i < matrix.rows; i++) {\n    matrix.mulRow(i, 1 / medianOfQuotients[i]);\n  }\n\n  return {\n    data: matrix.to2DArray(),\n    medianOfQuotients: medianOfQuotients,\n  };\n}\n","/**\n * chroma.js - JavaScript library for color conversions\n *\n * Copyright (c) 2011-2019, Gregor Aisch\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. The name Gregor Aisch may not be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -------------------------------------------------------\n *\n * chroma.js includes colors from colorbrewer2.org, which are released under\n * the following license:\n *\n * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,\n * and The Pennsylvania State University.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,\n * either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n *\n * ------------------------------------------------------\n *\n * Named colors are taken from X11 Color Names.\n * http://www.w3.org/TR/css3-color/#svg-color\n *\n * @preserve\n */\n\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global.chroma = factory());\n}(this, (function () { 'use strict';\n\n    var limit = function (x, min, max) {\n        if ( min === void 0 ) min=0;\n        if ( max === void 0 ) max=1;\n\n        return x < min ? min : x > max ? max : x;\n    };\n\n    var clip_rgb = function (rgb) {\n        rgb._clipped = false;\n        rgb._unclipped = rgb.slice(0);\n        for (var i=0; i<=3; i++) {\n            if (i < 3) {\n                if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; }\n                rgb[i] = limit(rgb[i], 0, 255);\n            } else if (i === 3) {\n                rgb[i] = limit(rgb[i], 0, 1);\n            }\n        }\n        return rgb;\n    };\n\n    // ported from jQuery's $.type\n    var classToType = {};\n    for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) {\n        var name = list[i];\n\n        classToType[(\"[object \" + name + \"]\")] = name.toLowerCase();\n    }\n    var type = function(obj) {\n        return classToType[Object.prototype.toString.call(obj)] || \"object\";\n    };\n\n    var unpack = function (args, keyOrder) {\n        if ( keyOrder === void 0 ) keyOrder=null;\n\n    \t// if called with more than 3 arguments, we return the arguments\n        if (args.length >= 3) { return Array.prototype.slice.call(args); }\n        // with less than 3 args we check if first arg is object\n        // and use the keyOrder string to extract and sort properties\n    \tif (type(args[0]) == 'object' && keyOrder) {\n    \t\treturn keyOrder.split('')\n    \t\t\t.filter(function (k) { return args[0][k] !== undefined; })\n    \t\t\t.map(function (k) { return args[0][k]; });\n    \t}\n    \t// otherwise we just return the first argument\n    \t// (which we suppose is an array of args)\n        return args[0];\n    };\n\n    var last = function (args) {\n        if (args.length < 2) { return null; }\n        var l = args.length-1;\n        if (type(args[l]) == 'string') { return args[l].toLowerCase(); }\n        return null;\n    };\n\n    var PI = Math.PI;\n\n    var utils = {\n    \tclip_rgb: clip_rgb,\n    \tlimit: limit,\n    \ttype: type,\n    \tunpack: unpack,\n    \tlast: last,\n    \tPI: PI,\n    \tTWOPI: PI*2,\n    \tPITHIRD: PI/3,\n    \tDEG2RAD: PI / 180,\n    \tRAD2DEG: 180 / PI\n    };\n\n    var input = {\n    \tformat: {},\n    \tautodetect: []\n    };\n\n    var last$1 = utils.last;\n    var clip_rgb$1 = utils.clip_rgb;\n    var type$1 = utils.type;\n\n\n    var Color = function Color() {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var me = this;\n        if (type$1(args[0]) === 'object' &&\n            args[0].constructor &&\n            args[0].constructor === this.constructor) {\n            // the argument is already a Color instance\n            return args[0];\n        }\n\n        // last argument could be the mode\n        var mode = last$1(args);\n        var autodetect = false;\n\n        if (!mode) {\n            autodetect = true;\n            if (!input.sorted) {\n                input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; });\n                input.sorted = true;\n            }\n            // auto-detect format\n            for (var i = 0, list = input.autodetect; i < list.length; i += 1) {\n                var chk = list[i];\n\n                mode = chk.test.apply(chk, args);\n                if (mode) { break; }\n            }\n        }\n\n        if (input.format[mode]) {\n            var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n            me._rgb = clip_rgb$1(rgb);\n        } else {\n            throw new Error('unknown format: '+args);\n        }\n\n        // add alpha channel\n        if (me._rgb.length === 3) { me._rgb.push(1); }\n    };\n\n    Color.prototype.toString = function toString () {\n        if (type$1(this.hex) == 'function') { return this.hex(); }\n        return (\"[\" + (this._rgb.join(',')) + \"]\");\n    };\n\n    var Color_1 = Color;\n\n    var chroma = function () {\n    \tvar args = [], len = arguments.length;\n    \twhile ( len-- ) args[ len ] = arguments[ len ];\n\n    \treturn new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) ));\n    };\n\n    chroma.Color = Color_1;\n    chroma.version = '2.1.0';\n\n    var chroma_1 = chroma;\n\n    var unpack$1 = utils.unpack;\n    var max = Math.max;\n\n    var rgb2cmyk = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$1(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        r = r / 255;\n        g = g / 255;\n        b = b / 255;\n        var k = 1 - max(r,max(g,b));\n        var f = k < 1 ? 1 / (1-k) : 0;\n        var c = (1-r-k) * f;\n        var m = (1-g-k) * f;\n        var y = (1-b-k) * f;\n        return [c,m,y,k];\n    };\n\n    var rgb2cmyk_1 = rgb2cmyk;\n\n    var unpack$2 = utils.unpack;\n\n    var cmyk2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$2(args, 'cmyk');\n        var c = args[0];\n        var m = args[1];\n        var y = args[2];\n        var k = args[3];\n        var alpha = args.length > 4 ? args[4] : 1;\n        if (k === 1) { return [0,0,0,alpha]; }\n        return [\n            c >= 1 ? 0 : 255 * (1-c) * (1-k), // r\n            m >= 1 ? 0 : 255 * (1-m) * (1-k), // g\n            y >= 1 ? 0 : 255 * (1-y) * (1-k), // b\n            alpha\n        ];\n    };\n\n    var cmyk2rgb_1 = cmyk2rgb;\n\n    var unpack$3 = utils.unpack;\n    var type$2 = utils.type;\n\n\n\n    Color_1.prototype.cmyk = function() {\n        return rgb2cmyk_1(this._rgb);\n    };\n\n    chroma_1.cmyk = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) ));\n    };\n\n    input.format.cmyk = cmyk2rgb_1;\n\n    input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$3(args, 'cmyk');\n            if (type$2(args) === 'array' && args.length === 4) {\n                return 'cmyk';\n            }\n        }\n    });\n\n    var unpack$4 = utils.unpack;\n    var last$2 = utils.last;\n    var rnd = function (a) { return Math.round(a*100)/100; };\n\n    /*\n     * supported arguments:\n     * - hsl2css(h,s,l)\n     * - hsl2css(h,s,l,a)\n     * - hsl2css([h,s,l], mode)\n     * - hsl2css([h,s,l,a], mode)\n     * - hsl2css({h,s,l,a}, mode)\n     */\n    var hsl2css = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var hsla = unpack$4(args, 'hsla');\n        var mode = last$2(args) || 'lsa';\n        hsla[0] = rnd(hsla[0] || 0);\n        hsla[1] = rnd(hsla[1]*100) + '%';\n        hsla[2] = rnd(hsla[2]*100) + '%';\n        if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n            hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n            mode = 'hsla';\n        } else {\n            hsla.length = 3;\n        }\n        return (mode + \"(\" + (hsla.join(',')) + \")\");\n    };\n\n    var hsl2css_1 = hsl2css;\n\n    var unpack$5 = utils.unpack;\n\n    /*\n     * supported arguments:\n     * - rgb2hsl(r,g,b)\n     * - rgb2hsl(r,g,b,a)\n     * - rgb2hsl([r,g,b])\n     * - rgb2hsl([r,g,b,a])\n     * - rgb2hsl({r,g,b,a})\n     */\n    var rgb2hsl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$5(args, 'rgba');\n        var r = args[0];\n        var g = args[1];\n        var b = args[2];\n\n        r /= 255;\n        g /= 255;\n        b /= 255;\n\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n\n        var l = (max + min) / 2;\n        var s, h;\n\n        if (max === min){\n            s = 0;\n            h = Number.NaN;\n        } else {\n            s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n        }\n\n        if (r == max) { h = (g - b) / (max - min); }\n        else if (g == max) { h = 2 + (b - r) / (max - min); }\n        else if (b == max) { h = 4 + (r - g) / (max - min); }\n\n        h *= 60;\n        if (h < 0) { h += 360; }\n        if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; }\n        return [h,s,l];\n    };\n\n    var rgb2hsl_1 = rgb2hsl;\n\n    var unpack$6 = utils.unpack;\n    var last$3 = utils.last;\n\n\n    var round = Math.round;\n\n    /*\n     * supported arguments:\n     * - rgb2css(r,g,b)\n     * - rgb2css(r,g,b,a)\n     * - rgb2css([r,g,b], mode)\n     * - rgb2css([r,g,b,a], mode)\n     * - rgb2css({r,g,b,a}, mode)\n     */\n    var rgb2css = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgba = unpack$6(args, 'rgba');\n        var mode = last$3(args) || 'rgb';\n        if (mode.substr(0,3) == 'hsl') {\n            return hsl2css_1(rgb2hsl_1(rgba), mode);\n        }\n        rgba[0] = round(rgba[0]);\n        rgba[1] = round(rgba[1]);\n        rgba[2] = round(rgba[2]);\n        if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n            rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n            mode = 'rgba';\n        }\n        return (mode + \"(\" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + \")\");\n    };\n\n    var rgb2css_1 = rgb2css;\n\n    var unpack$7 = utils.unpack;\n    var round$1 = Math.round;\n\n    var hsl2rgb = function () {\n        var assign;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$7(args, 'hsl');\n        var h = args[0];\n        var s = args[1];\n        var l = args[2];\n        var r,g,b;\n        if (s === 0) {\n            r = g = b = l*255;\n        } else {\n            var t3 = [0,0,0];\n            var c = [0,0,0];\n            var t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n            var t1 = 2 * l - t2;\n            var h_ = h / 360;\n            t3[0] = h_ + 1/3;\n            t3[1] = h_;\n            t3[2] = h_ - 1/3;\n            for (var i=0; i<3; i++) {\n                if (t3[i] < 0) { t3[i] += 1; }\n                if (t3[i] > 1) { t3[i] -= 1; }\n                if (6 * t3[i] < 1)\n                    { c[i] = t1 + (t2 - t1) * 6 * t3[i]; }\n                else if (2 * t3[i] < 1)\n                    { c[i] = t2; }\n                else if (3 * t3[i] < 2)\n                    { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; }\n                else\n                    { c[i] = t1; }\n            }\n            (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]);\n        }\n        if (args.length > 3) {\n            // keep alpha channel\n            return [r,g,b,args[3]];\n        }\n        return [r,g,b,1];\n    };\n\n    var hsl2rgb_1 = hsl2rgb;\n\n    var RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n    var RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n    var RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n    var RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n    var RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n    var RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n    var round$2 = Math.round;\n\n    var css2rgb = function (css) {\n        css = css.toLowerCase().trim();\n        var m;\n\n        if (input.format.named) {\n            try {\n                return input.format.named(css);\n            } catch (e) {\n                // eslint-disable-next-line\n            }\n        }\n\n        // rgb(250,20,0)\n        if ((m = css.match(RE_RGB))) {\n            var rgb = m.slice(1,4);\n            for (var i=0; i<3; i++) {\n                rgb[i] = +rgb[i];\n            }\n            rgb[3] = 1;  // default alpha\n            return rgb;\n        }\n\n        // rgba(250,20,0,0.4)\n        if ((m = css.match(RE_RGBA))) {\n            var rgb$1 = m.slice(1,5);\n            for (var i$1=0; i$1<4; i$1++) {\n                rgb$1[i$1] = +rgb$1[i$1];\n            }\n            return rgb$1;\n        }\n\n        // rgb(100%,0%,0%)\n        if ((m = css.match(RE_RGB_PCT))) {\n            var rgb$2 = m.slice(1,4);\n            for (var i$2=0; i$2<3; i$2++) {\n                rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55);\n            }\n            rgb$2[3] = 1;  // default alpha\n            return rgb$2;\n        }\n\n        // rgba(100%,0%,0%,0.4)\n        if ((m = css.match(RE_RGBA_PCT))) {\n            var rgb$3 = m.slice(1,5);\n            for (var i$3=0; i$3<3; i$3++) {\n                rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55);\n            }\n            rgb$3[3] = +rgb$3[3];\n            return rgb$3;\n        }\n\n        // hsl(0,100%,50%)\n        if ((m = css.match(RE_HSL))) {\n            var hsl = m.slice(1,4);\n            hsl[1] *= 0.01;\n            hsl[2] *= 0.01;\n            var rgb$4 = hsl2rgb_1(hsl);\n            rgb$4[3] = 1;\n            return rgb$4;\n        }\n\n        // hsla(0,100%,50%,0.5)\n        if ((m = css.match(RE_HSLA))) {\n            var hsl$1 = m.slice(1,4);\n            hsl$1[1] *= 0.01;\n            hsl$1[2] *= 0.01;\n            var rgb$5 = hsl2rgb_1(hsl$1);\n            rgb$5[3] = +m[4];  // default alpha = 1\n            return rgb$5;\n        }\n    };\n\n    css2rgb.test = function (s) {\n        return RE_RGB.test(s) ||\n            RE_RGBA.test(s) ||\n            RE_RGB_PCT.test(s) ||\n            RE_RGBA_PCT.test(s) ||\n            RE_HSL.test(s) ||\n            RE_HSLA.test(s);\n    };\n\n    var css2rgb_1 = css2rgb;\n\n    var type$3 = utils.type;\n\n\n\n\n    Color_1.prototype.css = function(mode) {\n        return rgb2css_1(this._rgb, mode);\n    };\n\n    chroma_1.css = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) ));\n    };\n\n    input.format.css = css2rgb_1;\n\n    input.autodetect.push({\n        p: 5,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) {\n                return 'css';\n            }\n        }\n    });\n\n    var unpack$8 = utils.unpack;\n\n    input.format.gl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgb = unpack$8(args, 'rgba');\n        rgb[0] *= 255;\n        rgb[1] *= 255;\n        rgb[2] *= 255;\n        return rgb;\n    };\n\n    chroma_1.gl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) ));\n    };\n\n    Color_1.prototype.gl = function() {\n        var rgb = this._rgb;\n        return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]];\n    };\n\n    var unpack$9 = utils.unpack;\n\n    var rgb2hcg = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$9(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var min = Math.min(r, g, b);\n        var max = Math.max(r, g, b);\n        var delta = max - min;\n        var c = delta * 100 / 255;\n        var _g = min / (255 - delta) * 100;\n        var h;\n        if (delta === 0) {\n            h = Number.NaN;\n        } else {\n            if (r === max) { h = (g - b) / delta; }\n            if (g === max) { h = 2+(b - r) / delta; }\n            if (b === max) { h = 4+(r - g) / delta; }\n            h *= 60;\n            if (h < 0) { h += 360; }\n        }\n        return [h, c, _g];\n    };\n\n    var rgb2hcg_1 = rgb2hcg;\n\n    var unpack$a = utils.unpack;\n    var floor = Math.floor;\n\n    /*\n     * this is basically just HSV with some minor tweaks\n     *\n     * hue.. [0..360]\n     * chroma .. [0..1]\n     * grayness .. [0..1]\n     */\n\n    var hcg2rgb = function () {\n        var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$a(args, 'hcg');\n        var h = args[0];\n        var c = args[1];\n        var _g = args[2];\n        var r,g,b;\n        _g = _g * 255;\n        var _c = c * 255;\n        if (c === 0) {\n            r = g = b = _g;\n        } else {\n            if (h === 360) { h = 0; }\n            if (h > 360) { h -= 360; }\n            if (h < 0) { h += 360; }\n            h /= 60;\n            var i = floor(h);\n            var f = h - i;\n            var p = _g * (1 - c);\n            var q = p + _c * (1 - f);\n            var t = p + _c * f;\n            var v = p + _c;\n            switch (i) {\n                case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n                case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n                case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n                case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n                case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n                case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n            }\n        }\n        return [r, g, b, args.length > 3 ? args[3] : 1];\n    };\n\n    var hcg2rgb_1 = hcg2rgb;\n\n    var unpack$b = utils.unpack;\n    var type$4 = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.hcg = function() {\n        return rgb2hcg_1(this._rgb);\n    };\n\n    chroma_1.hcg = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) ));\n    };\n\n    input.format.hcg = hcg2rgb_1;\n\n    input.autodetect.push({\n        p: 1,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$b(args, 'hcg');\n            if (type$4(args) === 'array' && args.length === 3) {\n                return 'hcg';\n            }\n        }\n    });\n\n    var unpack$c = utils.unpack;\n    var last$4 = utils.last;\n    var round$3 = Math.round;\n\n    var rgb2hex = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$c(args, 'rgba');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var a = ref[3];\n        var mode = last$4(args) || 'auto';\n        if (a === undefined) { a = 1; }\n        if (mode === 'auto') {\n            mode = a < 1 ? 'rgba' : 'rgb';\n        }\n        r = round$3(r);\n        g = round$3(g);\n        b = round$3(b);\n        var u = r << 16 | g << 8 | b;\n        var str = \"000000\" + u.toString(16); //#.toUpperCase();\n        str = str.substr(str.length - 6);\n        var hxa = '0' + round$3(a * 255).toString(16);\n        hxa = hxa.substr(hxa.length - 2);\n        switch (mode.toLowerCase()) {\n            case 'rgba': return (\"#\" + str + hxa);\n            case 'argb': return (\"#\" + hxa + str);\n            default: return (\"#\" + str);\n        }\n    };\n\n    var rgb2hex_1 = rgb2hex;\n\n    var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n    var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n    var hex2rgb = function (hex) {\n        if (hex.match(RE_HEX)) {\n            // remove optional leading #\n            if (hex.length === 4 || hex.length === 7) {\n                hex = hex.substr(1);\n            }\n            // expand short-notation to full six-digit\n            if (hex.length === 3) {\n                hex = hex.split('');\n                hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n            }\n            var u = parseInt(hex, 16);\n            var r = u >> 16;\n            var g = u >> 8 & 0xFF;\n            var b = u & 0xFF;\n            return [r,g,b,1];\n        }\n\n        // match rgba hex format, eg #FF000077\n        if (hex.match(RE_HEXA)) {\n            if (hex.length === 5 || hex.length === 9) {\n                // remove optional leading #\n                hex = hex.substr(1);\n            }\n            // expand short-notation to full eight-digit\n            if (hex.length === 4) {\n                hex = hex.split('');\n                hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n            }\n            var u$1 = parseInt(hex, 16);\n            var r$1 = u$1 >> 24 & 0xFF;\n            var g$1 = u$1 >> 16 & 0xFF;\n            var b$1 = u$1 >> 8 & 0xFF;\n            var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100;\n            return [r$1,g$1,b$1,a];\n        }\n\n        // we used to check for css colors here\n        // if _input.css? and rgb = _input.css hex\n        //     return rgb\n\n        throw new Error((\"unknown hex color: \" + hex));\n    };\n\n    var hex2rgb_1 = hex2rgb;\n\n    var type$5 = utils.type;\n\n\n\n\n    Color_1.prototype.hex = function(mode) {\n        return rgb2hex_1(this._rgb, mode);\n    };\n\n    chroma_1.hex = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) ));\n    };\n\n    input.format.hex = hex2rgb_1;\n    input.autodetect.push({\n        p: 4,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$5(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n                return 'hex';\n            }\n        }\n    });\n\n    var unpack$d = utils.unpack;\n    var TWOPI = utils.TWOPI;\n    var min = Math.min;\n    var sqrt = Math.sqrt;\n    var acos = Math.acos;\n\n    var rgb2hsi = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        borrowed from here:\n        http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n        */\n        var ref = unpack$d(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        r /= 255;\n        g /= 255;\n        b /= 255;\n        var h;\n        var min_ = min(r,g,b);\n        var i = (r+g+b) / 3;\n        var s = i > 0 ? 1 - min_/i : 0;\n        if (s === 0) {\n            h = NaN;\n        } else {\n            h = ((r-g)+(r-b)) / 2;\n            h /= sqrt((r-g)*(r-g) + (r-b)*(g-b));\n            h = acos(h);\n            if (b > g) {\n                h = TWOPI - h;\n            }\n            h /= TWOPI;\n        }\n        return [h*360,s,i];\n    };\n\n    var rgb2hsi_1 = rgb2hsi;\n\n    var unpack$e = utils.unpack;\n    var limit$1 = utils.limit;\n    var TWOPI$1 = utils.TWOPI;\n    var PITHIRD = utils.PITHIRD;\n    var cos = Math.cos;\n\n    /*\n     * hue [0..360]\n     * saturation [0..1]\n     * intensity [0..1]\n     */\n    var hsi2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        borrowed from here:\n        http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n        */\n        args = unpack$e(args, 'hsi');\n        var h = args[0];\n        var s = args[1];\n        var i = args[2];\n        var r,g,b;\n\n        if (isNaN(h)) { h = 0; }\n        if (isNaN(s)) { s = 0; }\n        // normalize hue\n        if (h > 360) { h -= 360; }\n        if (h < 0) { h += 360; }\n        h /= 360;\n        if (h < 1/3) {\n            b = (1-s)/3;\n            r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n            g = 1 - (b+r);\n        } else if (h < 2/3) {\n            h -= 1/3;\n            r = (1-s)/3;\n            g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n            b = 1 - (r+g);\n        } else {\n            h -= 2/3;\n            g = (1-s)/3;\n            b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3;\n            r = 1 - (g+b);\n        }\n        r = limit$1(i*r*3);\n        g = limit$1(i*g*3);\n        b = limit$1(i*b*3);\n        return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1];\n    };\n\n    var hsi2rgb_1 = hsi2rgb;\n\n    var unpack$f = utils.unpack;\n    var type$6 = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.hsi = function() {\n        return rgb2hsi_1(this._rgb);\n    };\n\n    chroma_1.hsi = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) ));\n    };\n\n    input.format.hsi = hsi2rgb_1;\n\n    input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$f(args, 'hsi');\n            if (type$6(args) === 'array' && args.length === 3) {\n                return 'hsi';\n            }\n        }\n    });\n\n    var unpack$g = utils.unpack;\n    var type$7 = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.hsl = function() {\n        return rgb2hsl_1(this._rgb);\n    };\n\n    chroma_1.hsl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) ));\n    };\n\n    input.format.hsl = hsl2rgb_1;\n\n    input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$g(args, 'hsl');\n            if (type$7(args) === 'array' && args.length === 3) {\n                return 'hsl';\n            }\n        }\n    });\n\n    var unpack$h = utils.unpack;\n    var min$1 = Math.min;\n    var max$1 = Math.max;\n\n    /*\n     * supported arguments:\n     * - rgb2hsv(r,g,b)\n     * - rgb2hsv([r,g,b])\n     * - rgb2hsv({r,g,b})\n     */\n    var rgb2hsl$1 = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$h(args, 'rgb');\n        var r = args[0];\n        var g = args[1];\n        var b = args[2];\n        var min_ = min$1(r, g, b);\n        var max_ = max$1(r, g, b);\n        var delta = max_ - min_;\n        var h,s,v;\n        v = max_ / 255.0;\n        if (max_ === 0) {\n            h = Number.NaN;\n            s = 0;\n        } else {\n            s = delta / max_;\n            if (r === max_) { h = (g - b) / delta; }\n            if (g === max_) { h = 2+(b - r) / delta; }\n            if (b === max_) { h = 4+(r - g) / delta; }\n            h *= 60;\n            if (h < 0) { h += 360; }\n        }\n        return [h, s, v]\n    };\n\n    var rgb2hsv = rgb2hsl$1;\n\n    var unpack$i = utils.unpack;\n    var floor$1 = Math.floor;\n\n    var hsv2rgb = function () {\n        var assign, assign$1, assign$2, assign$3, assign$4, assign$5;\n\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n        args = unpack$i(args, 'hsv');\n        var h = args[0];\n        var s = args[1];\n        var v = args[2];\n        var r,g,b;\n        v *= 255;\n        if (s === 0) {\n            r = g = b = v;\n        } else {\n            if (h === 360) { h = 0; }\n            if (h > 360) { h -= 360; }\n            if (h < 0) { h += 360; }\n            h /= 60;\n\n            var i = floor$1(h);\n            var f = h - i;\n            var p = v * (1 - s);\n            var q = v * (1 - s * f);\n            var t = v * (1 - s * (1 - f));\n\n            switch (i) {\n                case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break\n                case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break\n                case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break\n                case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break\n                case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break\n                case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break\n            }\n        }\n        return [r,g,b,args.length > 3?args[3]:1];\n    };\n\n    var hsv2rgb_1 = hsv2rgb;\n\n    var unpack$j = utils.unpack;\n    var type$8 = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.hsv = function() {\n        return rgb2hsv(this._rgb);\n    };\n\n    chroma_1.hsv = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) ));\n    };\n\n    input.format.hsv = hsv2rgb_1;\n\n    input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$j(args, 'hsv');\n            if (type$8(args) === 'array' && args.length === 3) {\n                return 'hsv';\n            }\n        }\n    });\n\n    var labConstants = {\n        // Corresponds roughly to RGB brighter/darker\n        Kn: 18,\n\n        // D65 standard referent\n        Xn: 0.950470,\n        Yn: 1,\n        Zn: 1.088830,\n\n        t0: 0.137931034,  // 4 / 29\n        t1: 0.206896552,  // 6 / 29\n        t2: 0.12841855,   // 3 * t1 * t1\n        t3: 0.008856452,  // t1 * t1 * t1\n    };\n\n    var unpack$k = utils.unpack;\n    var pow = Math.pow;\n\n    var rgb2lab = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$k(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = rgb2xyz(r,g,b);\n        var x = ref$1[0];\n        var y = ref$1[1];\n        var z = ref$1[2];\n        var l = 116 * y - 16;\n        return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n    };\n\n    var rgb_xyz = function (r) {\n        if ((r /= 255) <= 0.04045) { return r / 12.92; }\n        return pow((r + 0.055) / 1.055, 2.4);\n    };\n\n    var xyz_lab = function (t) {\n        if (t > labConstants.t3) { return pow(t, 1 / 3); }\n        return t / labConstants.t2 + labConstants.t0;\n    };\n\n    var rgb2xyz = function (r,g,b) {\n        r = rgb_xyz(r);\n        g = rgb_xyz(g);\n        b = rgb_xyz(b);\n        var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn);\n        var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn);\n        var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn);\n        return [x,y,z];\n    };\n\n    var rgb2lab_1 = rgb2lab;\n\n    var unpack$l = utils.unpack;\n    var pow$1 = Math.pow;\n\n    /*\n     * L* [0..100]\n     * a [-100..100]\n     * b [-100..100]\n     */\n    var lab2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$l(args, 'lab');\n        var l = args[0];\n        var a = args[1];\n        var b = args[2];\n        var x,y,z, r,g,b_;\n\n        y = (l + 16) / 116;\n        x = isNaN(a) ? y : y + a / 500;\n        z = isNaN(b) ? y : y - b / 200;\n\n        y = labConstants.Yn * lab_xyz(y);\n        x = labConstants.Xn * lab_xyz(x);\n        z = labConstants.Zn * lab_xyz(z);\n\n        r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z);  // D65 -> sRGB\n        g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z);\n        b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n        return [r,g,b_,args.length > 3 ? args[3] : 1];\n    };\n\n    var xyz_rgb = function (r) {\n        return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055)\n    };\n\n    var lab_xyz = function (t) {\n        return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0)\n    };\n\n    var lab2rgb_1 = lab2rgb;\n\n    var unpack$m = utils.unpack;\n    var type$9 = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.lab = function() {\n        return rgb2lab_1(this._rgb);\n    };\n\n    chroma_1.lab = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) ));\n    };\n\n    input.format.lab = lab2rgb_1;\n\n    input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$m(args, 'lab');\n            if (type$9(args) === 'array' && args.length === 3) {\n                return 'lab';\n            }\n        }\n    });\n\n    var unpack$n = utils.unpack;\n    var RAD2DEG = utils.RAD2DEG;\n    var sqrt$1 = Math.sqrt;\n    var atan2 = Math.atan2;\n    var round$4 = Math.round;\n\n    var lab2lch = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$n(args, 'lab');\n        var l = ref[0];\n        var a = ref[1];\n        var b = ref[2];\n        var c = sqrt$1(a * a + b * b);\n        var h = (atan2(b, a) * RAD2DEG + 360) % 360;\n        if (round$4(c*10000) === 0) { h = Number.NaN; }\n        return [l, c, h];\n    };\n\n    var lab2lch_1 = lab2lch;\n\n    var unpack$o = utils.unpack;\n\n\n\n    var rgb2lch = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$o(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        var ref$1 = rgb2lab_1(r,g,b);\n        var l = ref$1[0];\n        var a = ref$1[1];\n        var b_ = ref$1[2];\n        return lab2lch_1(l,a,b_);\n    };\n\n    var rgb2lch_1 = rgb2lch;\n\n    var unpack$p = utils.unpack;\n    var DEG2RAD = utils.DEG2RAD;\n    var sin = Math.sin;\n    var cos$1 = Math.cos;\n\n    var lch2lab = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        /*\n        Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n        These formulas were invented by David Dalrymple to obtain maximum contrast without going\n        out of gamut if the parameters are in the range 0-1.\n\n        A saturation multiplier was added by Gregor Aisch\n        */\n        var ref = unpack$p(args, 'lch');\n        var l = ref[0];\n        var c = ref[1];\n        var h = ref[2];\n        if (isNaN(h)) { h = 0; }\n        h = h * DEG2RAD;\n        return [l, cos$1(h) * c, sin(h) * c]\n    };\n\n    var lch2lab_1 = lch2lab;\n\n    var unpack$q = utils.unpack;\n\n\n\n    var lch2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        args = unpack$q(args, 'lch');\n        var l = args[0];\n        var c = args[1];\n        var h = args[2];\n        var ref = lch2lab_1 (l,c,h);\n        var L = ref[0];\n        var a = ref[1];\n        var b_ = ref[2];\n        var ref$1 = lab2rgb_1 (L,a,b_);\n        var r = ref$1[0];\n        var g = ref$1[1];\n        var b = ref$1[2];\n        return [r, g, b, args.length > 3 ? args[3] : 1];\n    };\n\n    var lch2rgb_1 = lch2rgb;\n\n    var unpack$r = utils.unpack;\n\n\n    var hcl2rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var hcl = unpack$r(args, 'hcl').reverse();\n        return lch2rgb_1.apply(void 0, hcl);\n    };\n\n    var hcl2rgb_1 = hcl2rgb;\n\n    var unpack$s = utils.unpack;\n    var type$a = utils.type;\n\n\n\n\n\n\n    Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); };\n    Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); };\n\n    chroma_1.lch = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) ));\n    };\n    chroma_1.hcl = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) ));\n    };\n\n    input.format.lch = lch2rgb_1;\n    input.format.hcl = hcl2rgb_1;\n\n    ['lch','hcl'].forEach(function (m) { return input.autodetect.push({\n        p: 2,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$s(args, m);\n            if (type$a(args) === 'array' && args.length === 3) {\n                return m;\n            }\n        }\n    }); });\n\n    /**\n    \tX11 color names\n\n    \thttp://www.w3.org/TR/css3-color/#svg-color\n    */\n\n    var w3cx11 = {\n        aliceblue: '#f0f8ff',\n        antiquewhite: '#faebd7',\n        aqua: '#00ffff',\n        aquamarine: '#7fffd4',\n        azure: '#f0ffff',\n        beige: '#f5f5dc',\n        bisque: '#ffe4c4',\n        black: '#000000',\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        cornflower: '#6495ed',\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        darkgrey: '#a9a9a9',\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        darkslategrey: '#2f4f4f',\n        darkturquoise: '#00ced1',\n        darkviolet: '#9400d3',\n        deeppink: '#ff1493',\n        deepskyblue: '#00bfff',\n        dimgray: '#696969',\n        dimgrey: '#696969',\n        dodgerblue: '#1e90ff',\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        green: '#008000',\n        greenyellow: '#adff2f',\n        grey: '#808080',\n        honeydew: '#f0fff0',\n        hotpink: '#ff69b4',\n        indianred: '#cd5c5c',\n        indigo: '#4b0082',\n        ivory: '#fffff0',\n        khaki: '#f0e68c',\n        laserlemon: '#ffff54',\n        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\n        lightgoldenrod: '#fafad2',\n        lightgoldenrodyellow: '#fafad2',\n        lightgray: '#d3d3d3',\n        lightgreen: '#90ee90',\n        lightgrey: '#d3d3d3',\n        lightpink: '#ffb6c1',\n        lightsalmon: '#ffa07a',\n        lightseagreen: '#20b2aa',\n        lightskyblue: '#87cefa',\n        lightslategray: '#778899',\n        lightslategrey: '#778899',\n        lightsteelblue: '#b0c4de',\n        lightyellow: '#ffffe0',\n        lime: '#00ff00',\n        limegreen: '#32cd32',\n        linen: '#faf0e6',\n        magenta: '#ff00ff',\n        maroon: '#800000',\n        maroon2: '#7f0000',\n        maroon3: '#b03060',\n        mediumaquamarine: '#66cdaa',\n        mediumblue: '#0000cd',\n        mediumorchid: '#ba55d3',\n        mediumpurple: '#9370db',\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: '#db7093',\n        papayawhip: '#ffefd5',\n        peachpuff: '#ffdab9',\n        peru: '#cd853f',\n        pink: '#ffc0cb',\n        plum: '#dda0dd',\n        powderblue: '#b0e0e6',\n        purple: '#800080',\n        purple2: '#7f007f',\n        purple3: '#a020f0',\n        rebeccapurple: '#663399',\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        slategrey: '#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        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd32'\n    };\n\n    var w3cx11_1 = w3cx11;\n\n    var type$b = utils.type;\n\n\n\n\n\n    Color_1.prototype.name = function() {\n        var hex = rgb2hex_1(this._rgb, 'rgb');\n        for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) {\n            var n = list[i];\n\n            if (w3cx11_1[n] === hex) { return n.toLowerCase(); }\n        }\n        return hex;\n    };\n\n    input.format.named = function (name) {\n        name = name.toLowerCase();\n        if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); }\n        throw new Error('unknown color name: '+name);\n    };\n\n    input.autodetect.push({\n        p: 5,\n        test: function (h) {\n            var rest = [], len = arguments.length - 1;\n            while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ];\n\n            if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) {\n                return 'named';\n            }\n        }\n    });\n\n    var unpack$t = utils.unpack;\n\n    var rgb2num = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var ref = unpack$t(args, 'rgb');\n        var r = ref[0];\n        var g = ref[1];\n        var b = ref[2];\n        return (r << 16) + (g << 8) + b;\n    };\n\n    var rgb2num_1 = rgb2num;\n\n    var type$c = utils.type;\n\n    var num2rgb = function (num) {\n        if (type$c(num) == \"number\" && num >= 0 && num <= 0xFFFFFF) {\n            var r = num >> 16;\n            var g = (num >> 8) & 0xFF;\n            var b = num & 0xFF;\n            return [r,g,b,1];\n        }\n        throw new Error(\"unknown num color: \"+num);\n    };\n\n    var num2rgb_1 = num2rgb;\n\n    var type$d = utils.type;\n\n\n\n    Color_1.prototype.num = function() {\n        return rgb2num_1(this._rgb);\n    };\n\n    chroma_1.num = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) ));\n    };\n\n    input.format.num = num2rgb_1;\n\n    input.autodetect.push({\n        p: 5,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) {\n                return 'num';\n            }\n        }\n    });\n\n    var unpack$u = utils.unpack;\n    var type$e = utils.type;\n    var round$5 = Math.round;\n\n    Color_1.prototype.rgb = function(rnd) {\n        if ( rnd === void 0 ) rnd=true;\n\n        if (rnd === false) { return this._rgb.slice(0,3); }\n        return this._rgb.slice(0,3).map(round$5);\n    };\n\n    Color_1.prototype.rgba = function(rnd) {\n        if ( rnd === void 0 ) rnd=true;\n\n        return this._rgb.slice(0,4).map(function (v,i) {\n            return i<3 ? (rnd === false ? v : round$5(v)) : v;\n        });\n    };\n\n    chroma_1.rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) ));\n    };\n\n    input.format.rgb = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgba = unpack$u(args, 'rgba');\n        if (rgba[3] === undefined) { rgba[3] = 1; }\n        return rgba;\n    };\n\n    input.autodetect.push({\n        p: 3,\n        test: function () {\n            var args = [], len = arguments.length;\n            while ( len-- ) args[ len ] = arguments[ len ];\n\n            args = unpack$u(args, 'rgba');\n            if (type$e(args) === 'array' && (args.length === 3 ||\n                args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n                return 'rgb';\n            }\n        }\n    });\n\n    /*\n     * Based on implementation by Neil Bartlett\n     * https://github.com/neilbartlett/color-temperature\n     */\n\n    var log = Math.log;\n\n    var temperature2rgb = function (kelvin) {\n        var temp = kelvin / 100;\n        var r,g,b;\n        if (temp < 66) {\n            r = 255;\n            g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g);\n            b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b);\n        } else {\n            r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r);\n            g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g);\n            b = 255;\n        }\n        return [r,g,b,1];\n    };\n\n    var temperature2rgb_1 = temperature2rgb;\n\n    /*\n     * Based on implementation by Neil Bartlett\n     * https://github.com/neilbartlett/color-temperature\n     **/\n\n\n    var unpack$v = utils.unpack;\n    var round$6 = Math.round;\n\n    var rgb2temperature = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        var rgb = unpack$v(args, 'rgb');\n        var r = rgb[0], b = rgb[2];\n        var minTemp = 1000;\n        var maxTemp = 40000;\n        var eps = 0.4;\n        var temp;\n        while (maxTemp - minTemp > eps) {\n            temp = (maxTemp + minTemp) * 0.5;\n            var rgb$1 = temperature2rgb_1(temp);\n            if ((rgb$1[2] / rgb$1[0]) >= (b / r)) {\n                maxTemp = temp;\n            } else {\n                minTemp = temp;\n            }\n        }\n        return round$6(temp);\n    };\n\n    var rgb2temperature_1 = rgb2temperature;\n\n    Color_1.prototype.temp =\n    Color_1.prototype.kelvin =\n    Color_1.prototype.temperature = function() {\n        return rgb2temperature_1(this._rgb);\n    };\n\n    chroma_1.temp =\n    chroma_1.kelvin =\n    chroma_1.temperature = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) ));\n    };\n\n    input.format.temp =\n    input.format.kelvin =\n    input.format.temperature = temperature2rgb_1;\n\n    var type$f = utils.type;\n\n    Color_1.prototype.alpha = function(a, mutate) {\n        if ( mutate === void 0 ) mutate=false;\n\n        if (a !== undefined && type$f(a) === 'number') {\n            if (mutate) {\n                this._rgb[3] = a;\n                return this;\n            }\n            return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n        }\n        return this._rgb[3];\n    };\n\n    Color_1.prototype.clipped = function() {\n        return this._rgb._clipped || false;\n    };\n\n    Color_1.prototype.darken = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \tvar me = this;\n    \tvar lab = me.lab();\n    \tlab[0] -= labConstants.Kn * amount;\n    \treturn new Color_1(lab, 'lab').alpha(me.alpha(), true);\n    };\n\n    Color_1.prototype.brighten = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \treturn this.darken(-amount);\n    };\n\n    Color_1.prototype.darker = Color_1.prototype.darken;\n    Color_1.prototype.brighter = Color_1.prototype.brighten;\n\n    Color_1.prototype.get = function(mc) {\n        var ref = mc.split('.');\n        var mode = ref[0];\n        var channel = ref[1];\n        var src = this[mode]();\n        if (channel) {\n            var i = mode.indexOf(channel);\n            if (i > -1) { return src[i]; }\n            throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n        } else {\n            return src;\n        }\n    };\n\n    var type$g = utils.type;\n    var pow$2 = Math.pow;\n\n    var EPS = 1e-7;\n    var MAX_ITER = 20;\n\n    Color_1.prototype.luminance = function(lum) {\n        if (lum !== undefined && type$g(lum) === 'number') {\n            if (lum === 0) {\n                // return pure black\n                return new Color_1([0,0,0,this._rgb[3]], 'rgb');\n            }\n            if (lum === 1) {\n                // return pure white\n                return new Color_1([255,255,255,this._rgb[3]], 'rgb');\n            }\n            // compute new color using...\n            var cur_lum = this.luminance();\n            var mode = 'rgb';\n            var max_iter = MAX_ITER;\n\n            var test = function (low, high) {\n                var mid = low.interpolate(high, 0.5, mode);\n                var lm = mid.luminance();\n                if (Math.abs(lum - lm) < EPS || !max_iter--) {\n                    // close enough\n                    return mid;\n                }\n                return lm > lum ? test(low, mid) : test(mid, high);\n            };\n\n            var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb();\n            return new Color_1(rgb.concat( [this._rgb[3]]));\n        }\n        return rgb2luminance.apply(void 0, (this._rgb).slice(0,3));\n    };\n\n\n    var rgb2luminance = function (r,g,b) {\n        // relative luminance\n        // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        r = luminance_x(r);\n        g = luminance_x(g);\n        b = luminance_x(b);\n        return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    };\n\n    var luminance_x = function (x) {\n        x /= 255;\n        return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4);\n    };\n\n    var interpolator = {};\n\n    var type$h = utils.type;\n\n\n    var mix = function (col1, col2, f) {\n        if ( f === void 0 ) f=0.5;\n        var rest = [], len = arguments.length - 3;\n        while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ];\n\n        var mode = rest[0] || 'lrgb';\n        if (!interpolator[mode] && !rest.length) {\n            // fall back to the first supported mode\n            mode = Object.keys(interpolator)[0];\n        }\n        if (!interpolator[mode]) {\n            throw new Error((\"interpolation mode \" + mode + \" is not defined\"));\n        }\n        if (type$h(col1) !== 'object') { col1 = new Color_1(col1); }\n        if (type$h(col2) !== 'object') { col2 = new Color_1(col2); }\n        return interpolator[mode](col1, col2, f)\n            .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n    };\n\n    Color_1.prototype.mix =\n    Color_1.prototype.interpolate = function(col2, f) {\n    \tif ( f === void 0 ) f=0.5;\n    \tvar rest = [], len = arguments.length - 2;\n    \twhile ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ];\n\n    \treturn mix.apply(void 0, [ this, col2, f ].concat( rest ));\n    };\n\n    Color_1.prototype.premultiply = function(mutate) {\n    \tif ( mutate === void 0 ) mutate=false;\n\n    \tvar rgb = this._rgb;\n    \tvar a = rgb[3];\n    \tif (mutate) {\n    \t\tthis._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a];\n    \t\treturn this;\n    \t} else {\n    \t\treturn new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb');\n    \t}\n    };\n\n    Color_1.prototype.saturate = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \tvar me = this;\n    \tvar lch = me.lch();\n    \tlch[1] += labConstants.Kn * amount;\n    \tif (lch[1] < 0) { lch[1] = 0; }\n    \treturn new Color_1(lch, 'lch').alpha(me.alpha(), true);\n    };\n\n    Color_1.prototype.desaturate = function(amount) {\n    \tif ( amount === void 0 ) amount=1;\n\n    \treturn this.saturate(-amount);\n    };\n\n    var type$i = utils.type;\n\n    Color_1.prototype.set = function(mc, value, mutate) {\n        if ( mutate === void 0 ) mutate=false;\n\n        var ref = mc.split('.');\n        var mode = ref[0];\n        var channel = ref[1];\n        var src = this[mode]();\n        if (channel) {\n            var i = mode.indexOf(channel);\n            if (i > -1) {\n                if (type$i(value) == 'string') {\n                    switch(value.charAt(0)) {\n                        case '+': src[i] += +value; break;\n                        case '-': src[i] += +value; break;\n                        case '*': src[i] *= +(value.substr(1)); break;\n                        case '/': src[i] /= +(value.substr(1)); break;\n                        default: src[i] = +value;\n                    }\n                } else if (type$i(value) === 'number') {\n                    src[i] = value;\n                } else {\n                    throw new Error(\"unsupported value for Color.set\");\n                }\n                var out = new Color_1(src, mode);\n                if (mutate) {\n                    this._rgb = out._rgb;\n                    return this;\n                }\n                return out;\n            }\n            throw new Error((\"unknown channel \" + channel + \" in mode \" + mode));\n        } else {\n            return src;\n        }\n    };\n\n    var rgb$1 = function (col1, col2, f) {\n        var xyz0 = col1._rgb;\n        var xyz1 = col2._rgb;\n        return new Color_1(\n            xyz0[0] + f * (xyz1[0]-xyz0[0]),\n            xyz0[1] + f * (xyz1[1]-xyz0[1]),\n            xyz0[2] + f * (xyz1[2]-xyz0[2]),\n            'rgb'\n        )\n    };\n\n    // register interpolator\n    interpolator.rgb = rgb$1;\n\n    var sqrt$2 = Math.sqrt;\n    var pow$3 = Math.pow;\n\n    var lrgb = function (col1, col2, f) {\n        var ref = col1._rgb;\n        var x1 = ref[0];\n        var y1 = ref[1];\n        var z1 = ref[2];\n        var ref$1 = col2._rgb;\n        var x2 = ref$1[0];\n        var y2 = ref$1[1];\n        var z2 = ref$1[2];\n        return new Color_1(\n            sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f),\n            sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f),\n            sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f),\n            'rgb'\n        )\n    };\n\n    // register interpolator\n    interpolator.lrgb = lrgb;\n\n    var lab$1 = function (col1, col2, f) {\n        var xyz0 = col1.lab();\n        var xyz1 = col2.lab();\n        return new Color_1(\n            xyz0[0] + f * (xyz1[0]-xyz0[0]),\n            xyz0[1] + f * (xyz1[1]-xyz0[1]),\n            xyz0[2] + f * (xyz1[2]-xyz0[2]),\n            'lab'\n        )\n    };\n\n    // register interpolator\n    interpolator.lab = lab$1;\n\n    var _hsx = function (col1, col2, f, m) {\n        var assign, assign$1;\n\n        var xyz0, xyz1;\n        if (m === 'hsl') {\n            xyz0 = col1.hsl();\n            xyz1 = col2.hsl();\n        } else if (m === 'hsv') {\n            xyz0 = col1.hsv();\n            xyz1 = col2.hsv();\n        } else if (m === 'hcg') {\n            xyz0 = col1.hcg();\n            xyz1 = col2.hcg();\n        } else if (m === 'hsi') {\n            xyz0 = col1.hsi();\n            xyz1 = col2.hsi();\n        } else if (m === 'lch' || m === 'hcl') {\n            m = 'hcl';\n            xyz0 = col1.hcl();\n            xyz1 = col2.hcl();\n        }\n\n        var hue0, hue1, sat0, sat1, lbv0, lbv1;\n        if (m.substr(0, 1) === 'h') {\n            (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]);\n            (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]);\n        }\n\n        var sat, hue, lbv, dh;\n\n        if (!isNaN(hue0) && !isNaN(hue1)) {\n            // both colors have hue\n            if (hue1 > hue0 && hue1 - hue0 > 180) {\n                dh = hue1-(hue0+360);\n            } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n                dh = hue1+360-hue0;\n            } else{\n                dh = hue1 - hue0;\n            }\n            hue = hue0 + f * dh;\n        } else if (!isNaN(hue0)) {\n            hue = hue0;\n            if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; }\n        } else if (!isNaN(hue1)) {\n            hue = hue1;\n            if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; }\n        } else {\n            hue = Number.NaN;\n        }\n\n        if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); }\n        lbv = lbv0 + f * (lbv1-lbv0);\n        return new Color_1([hue, sat, lbv], m);\n    };\n\n    var lch$1 = function (col1, col2, f) {\n    \treturn _hsx(col1, col2, f, 'lch');\n    };\n\n    // register interpolator\n    interpolator.lch = lch$1;\n    interpolator.hcl = lch$1;\n\n    var num$1 = function (col1, col2, f) {\n        var c1 = col1.num();\n        var c2 = col2.num();\n        return new Color_1(c1 + f * (c2-c1), 'num')\n    };\n\n    // register interpolator\n    interpolator.num = num$1;\n\n    var hcg$1 = function (col1, col2, f) {\n    \treturn _hsx(col1, col2, f, 'hcg');\n    };\n\n    // register interpolator\n    interpolator.hcg = hcg$1;\n\n    var hsi$1 = function (col1, col2, f) {\n    \treturn _hsx(col1, col2, f, 'hsi');\n    };\n\n    // register interpolator\n    interpolator.hsi = hsi$1;\n\n    var hsl$1 = function (col1, col2, f) {\n    \treturn _hsx(col1, col2, f, 'hsl');\n    };\n\n    // register interpolator\n    interpolator.hsl = hsl$1;\n\n    var hsv$1 = function (col1, col2, f) {\n    \treturn _hsx(col1, col2, f, 'hsv');\n    };\n\n    // register interpolator\n    interpolator.hsv = hsv$1;\n\n    var clip_rgb$2 = utils.clip_rgb;\n    var pow$4 = Math.pow;\n    var sqrt$3 = Math.sqrt;\n    var PI$1 = Math.PI;\n    var cos$2 = Math.cos;\n    var sin$1 = Math.sin;\n    var atan2$1 = Math.atan2;\n\n    var average = function (colors, mode, weights) {\n        if ( mode === void 0 ) mode='lrgb';\n        if ( weights === void 0 ) weights=null;\n\n        var l = colors.length;\n        if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); }\n        // normalize weights\n        var k = l / weights.reduce(function(a, b) { return a + b; });\n        weights.forEach(function (w,i) { weights[i] *= k; });\n        // convert colors to Color objects\n        colors = colors.map(function (c) { return new Color_1(c); });\n        if (mode === 'lrgb') {\n            return _average_lrgb(colors, weights)\n        }\n        var first = colors.shift();\n        var xyz = first.get(mode);\n        var cnt = [];\n        var dx = 0;\n        var dy = 0;\n        // initial color\n        for (var i=0; i<xyz.length; i++) {\n            xyz[i] = (xyz[i] || 0) * weights[0];\n            cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n            if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n                var A = xyz[i] / 180 * PI$1;\n                dx += cos$2(A) * weights[0];\n                dy += sin$1(A) * weights[0];\n            }\n        }\n\n        var alpha = first.alpha() * weights[0];\n        colors.forEach(function (c,ci) {\n            var xyz2 = c.get(mode);\n            alpha += c.alpha() * weights[ci+1];\n            for (var i=0; i<xyz.length; i++) {\n                if (!isNaN(xyz2[i])) {\n                    cnt[i] += weights[ci+1];\n                    if (mode.charAt(i) === 'h') {\n                        var A = xyz2[i] / 180 * PI$1;\n                        dx += cos$2(A) * weights[ci+1];\n                        dy += sin$1(A) * weights[ci+1];\n                    } else {\n                        xyz[i] += xyz2[i] * weights[ci+1];\n                    }\n                }\n            }\n        });\n\n        for (var i$1=0; i$1<xyz.length; i$1++) {\n            if (mode.charAt(i$1) === 'h') {\n                var A$1 = atan2$1(dy / cnt[i$1], dx / cnt[i$1]) / PI$1 * 180;\n                while (A$1 < 0) { A$1 += 360; }\n                while (A$1 >= 360) { A$1 -= 360; }\n                xyz[i$1] = A$1;\n            } else {\n                xyz[i$1] = xyz[i$1]/cnt[i$1];\n            }\n        }\n        alpha /= l;\n        return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true);\n    };\n\n\n    var _average_lrgb = function (colors, weights) {\n        var l = colors.length;\n        var xyz = [0,0,0,0];\n        for (var i=0; i < colors.length; i++) {\n            var col = colors[i];\n            var f = weights[i] / l;\n            var rgb = col._rgb;\n            xyz[0] += pow$4(rgb[0],2) * f;\n            xyz[1] += pow$4(rgb[1],2) * f;\n            xyz[2] += pow$4(rgb[2],2) * f;\n            xyz[3] += rgb[3] * f;\n        }\n        xyz[0] = sqrt$3(xyz[0]);\n        xyz[1] = sqrt$3(xyz[1]);\n        xyz[2] = sqrt$3(xyz[2]);\n        if (xyz[3] > 0.9999999) { xyz[3] = 1; }\n        return new Color_1(clip_rgb$2(xyz));\n    };\n\n    // minimal multi-purpose interface\n\n    // @requires utils color analyze\n\n\n    var type$j = utils.type;\n\n    var pow$5 = Math.pow;\n\n    var scale = function(colors) {\n\n        // constructor\n        var _mode = 'rgb';\n        var _nacol = chroma_1('#ccc');\n        var _spread = 0;\n        // const _fixed = false;\n        var _domain = [0, 1];\n        var _pos = [];\n        var _padding = [0,0];\n        var _classes = false;\n        var _colors = [];\n        var _out = false;\n        var _min = 0;\n        var _max = 1;\n        var _correctLightness = false;\n        var _colorCache = {};\n        var _useCache = true;\n        var _gamma = 1;\n\n        // private methods\n\n        var setColors = function(colors) {\n            colors = colors || ['#fff', '#000'];\n            if (colors && type$j(colors) === 'string' && chroma_1.brewer &&\n                chroma_1.brewer[colors.toLowerCase()]) {\n                colors = chroma_1.brewer[colors.toLowerCase()];\n            }\n            if (type$j(colors) === 'array') {\n                // handle single color\n                if (colors.length === 1) {\n                    colors = [colors[0], colors[0]];\n                }\n                // make a copy of the colors\n                colors = colors.slice(0);\n                // convert to chroma classes\n                for (var c=0; c<colors.length; c++) {\n                    colors[c] = chroma_1(colors[c]);\n                }\n                // auto-fill color position\n                _pos.length = 0;\n                for (var c$1=0; c$1<colors.length; c$1++) {\n                    _pos.push(c$1/(colors.length-1));\n                }\n            }\n            resetCache();\n            return _colors = colors;\n        };\n\n        var getClass = function(value) {\n            if (_classes != null) {\n                var n = _classes.length-1;\n                var i = 0;\n                while (i < n && value >= _classes[i]) {\n                    i++;\n                }\n                return i-1;\n            }\n            return 0;\n        };\n\n        var tMapLightness = function (t) { return t; };\n        var tMapDomain = function (t) { return t; };\n\n        // const classifyValue = function(value) {\n        //     let val = value;\n        //     if (_classes.length > 2) {\n        //         const n = _classes.length-1;\n        //         const i = getClass(value);\n        //         const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5)));  // center of 1st class\n        //         const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5)));  // center of last class\n        //         val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n        //     }\n        //     return val;\n        // };\n\n        var getColor = function(val, bypassMap) {\n            var col, t;\n            if (bypassMap == null) { bypassMap = false; }\n            if (isNaN(val) || (val === null)) { return _nacol; }\n            if (!bypassMap) {\n                if (_classes && (_classes.length > 2)) {\n                    // find the class\n                    var c = getClass(val);\n                    t = c / (_classes.length-2);\n                } else if (_max !== _min) {\n                    // just interpolate between min/max\n                    t = (val - _min) / (_max - _min);\n                } else {\n                    t = 1;\n                }\n            } else {\n                t = val;\n            }\n\n            // domain map\n            t = tMapDomain(t);\n\n            if (!bypassMap) {\n                t = tMapLightness(t);  // lightness correction\n            }\n\n            if (_gamma !== 1) { t = pow$5(t, _gamma); }\n\n            t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n            t = Math.min(1, Math.max(0, t));\n\n            var k = Math.floor(t * 10000);\n\n            if (_useCache && _colorCache[k]) {\n                col = _colorCache[k];\n            } else {\n                if (type$j(_colors) === 'array') {\n                    //for i in [0.._pos.length-1]\n                    for (var i=0; i<_pos.length; i++) {\n                        var p = _pos[i];\n                        if (t <= p) {\n                            col = _colors[i];\n                            break;\n                        }\n                        if ((t >= p) && (i === (_pos.length-1))) {\n                            col = _colors[i];\n                            break;\n                        }\n                        if (t > p && t < _pos[i+1]) {\n                            t = (t-p)/(_pos[i+1]-p);\n                            col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode);\n                            break;\n                        }\n                    }\n                } else if (type$j(_colors) === 'function') {\n                    col = _colors(t);\n                }\n                if (_useCache) { _colorCache[k] = col; }\n            }\n            return col;\n        };\n\n        var resetCache = function () { return _colorCache = {}; };\n\n        setColors(colors);\n\n        // public interface\n\n        var f = function(v) {\n            var c = chroma_1(getColor(v));\n            if (_out && c[_out]) { return c[_out](); } else { return c; }\n        };\n\n        f.classes = function(classes) {\n            if (classes != null) {\n                if (type$j(classes) === 'array') {\n                    _classes = classes;\n                    _domain = [classes[0], classes[classes.length-1]];\n                } else {\n                    var d = chroma_1.analyze(_domain);\n                    if (classes === 0) {\n                        _classes = [d.min, d.max];\n                    } else {\n                        _classes = chroma_1.limits(d, 'e', classes);\n                    }\n                }\n                return f;\n            }\n            return _classes;\n        };\n\n\n        f.domain = function(domain) {\n            if (!arguments.length) {\n                return _domain;\n            }\n            _min = domain[0];\n            _max = domain[domain.length-1];\n            _pos = [];\n            var k = _colors.length;\n            if ((domain.length === k) && (_min !== _max)) {\n                // update positions\n                for (var i = 0, list = Array.from(domain); i < list.length; i += 1) {\n                    var d = list[i];\n\n                  _pos.push((d-_min) / (_max-_min));\n                }\n            } else {\n                for (var c=0; c<k; c++) {\n                    _pos.push(c/(k-1));\n                }\n                if (domain.length > 2) {\n                    // set domain map\n                    var tOut = domain.map(function (d,i) { return i/(domain.length-1); });\n                    var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); });\n                    if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) {\n                        tMapDomain = function (t) {\n                            if (t <= 0 || t >= 1) { return t; }\n                            var i = 0;\n                            while (t >= tBreaks[i+1]) { i++; }\n                            var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n                            var out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n                            return out;\n                        };\n                    }\n\n                }\n            }\n            _domain = [_min, _max];\n            return f;\n        };\n\n        f.mode = function(_m) {\n            if (!arguments.length) {\n                return _mode;\n            }\n            _mode = _m;\n            resetCache();\n            return f;\n        };\n\n        f.range = function(colors, _pos) {\n            setColors(colors, _pos);\n            return f;\n        };\n\n        f.out = function(_o) {\n            _out = _o;\n            return f;\n        };\n\n        f.spread = function(val) {\n            if (!arguments.length) {\n                return _spread;\n            }\n            _spread = val;\n            return f;\n        };\n\n        f.correctLightness = function(v) {\n            if (v == null) { v = true; }\n            _correctLightness = v;\n            resetCache();\n            if (_correctLightness) {\n                tMapLightness = function(t) {\n                    var L0 = getColor(0, true).lab()[0];\n                    var L1 = getColor(1, true).lab()[0];\n                    var pol = L0 > L1;\n                    var L_actual = getColor(t, true).lab()[0];\n                    var L_ideal = L0 + ((L1 - L0) * t);\n                    var L_diff = L_actual - L_ideal;\n                    var t0 = 0;\n                    var t1 = 1;\n                    var max_iter = 20;\n                    while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n                        (function() {\n                            if (pol) { L_diff *= -1; }\n                            if (L_diff < 0) {\n                                t0 = t;\n                                t += (t1 - t) * 0.5;\n                            } else {\n                                t1 = t;\n                                t += (t0 - t) * 0.5;\n                            }\n                            L_actual = getColor(t, true).lab()[0];\n                            return L_diff = L_actual - L_ideal;\n                        })();\n                    }\n                    return t;\n                };\n            } else {\n                tMapLightness = function (t) { return t; };\n            }\n            return f;\n        };\n\n        f.padding = function(p) {\n            if (p != null) {\n                if (type$j(p) === 'number') {\n                    p = [p,p];\n                }\n                _padding = p;\n                return f;\n            } else {\n                return _padding;\n            }\n        };\n\n        f.colors = function(numColors, out) {\n            // If no arguments are given, return the original colors that were provided\n            if (arguments.length < 2) { out = 'hex'; }\n            var result = [];\n\n            if (arguments.length === 0) {\n                result = _colors.slice(0);\n\n            } else if (numColors === 1) {\n                result = [f(0.5)];\n\n            } else if (numColors > 1) {\n                var dm = _domain[0];\n                var dd = _domain[1] - dm;\n                result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); });\n\n            } else { // returns all colors based on the defined classes\n                colors = [];\n                var samples = [];\n                if (_classes && (_classes.length > 2)) {\n                    for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n                        samples.push((_classes[i-1]+_classes[i])*0.5);\n                    }\n                } else {\n                    samples = _domain;\n                }\n                result = samples.map(function (v) { return f(v); });\n            }\n\n            if (chroma_1[out]) {\n                result = result.map(function (c) { return c[out](); });\n            }\n            return result;\n        };\n\n        f.cache = function(c) {\n            if (c != null) {\n                _useCache = c;\n                return f;\n            } else {\n                return _useCache;\n            }\n        };\n\n        f.gamma = function(g) {\n            if (g != null) {\n                _gamma = g;\n                return f;\n            } else {\n                return _gamma;\n            }\n        };\n\n        f.nodata = function(d) {\n            if (d != null) {\n                _nacol = chroma_1(d);\n                return f;\n            } else {\n                return _nacol;\n            }\n        };\n\n        return f;\n    };\n\n    function __range__(left, right, inclusive) {\n      var range = [];\n      var ascending = left < right;\n      var end = !inclusive ? right : ascending ? right + 1 : right - 1;\n      for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n        range.push(i);\n      }\n      return range;\n    }\n\n    //\n    // interpolates between a set of colors uzing a bezier spline\n    //\n\n    // @requires utils lab\n\n\n\n\n    var bezier = function(colors) {\n        var assign, assign$1, assign$2;\n\n        var I, lab0, lab1, lab2;\n        colors = colors.map(function (c) { return new Color_1(c); });\n        if (colors.length === 2) {\n            // linear interpolation\n            (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); }));\n                return new Color_1(lab, 'lab');\n            };\n        } else if (colors.length === 3) {\n            // quadratic bezier interpolation\n            (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); }));\n                return new Color_1(lab, 'lab');\n            };\n        } else if (colors.length === 4) {\n            // cubic bezier interpolation\n            var lab3;\n            (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]);\n            I = function(t) {\n                var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); }));\n                return new Color_1(lab, 'lab');\n            };\n        } else if (colors.length === 5) {\n            var I0 = bezier(colors.slice(0, 3));\n            var I1 = bezier(colors.slice(2, 5));\n            I = function(t) {\n                if (t < 0.5) {\n                    return I0(t*2);\n                } else {\n                    return I1((t-0.5)*2);\n                }\n            };\n        }\n        return I;\n    };\n\n    var bezier_1 = function (colors) {\n        var f = bezier(colors);\n        f.scale = function () { return scale(f); };\n        return f;\n    };\n\n    /*\n     * interpolates between a set of colors uzing a bezier spline\n     * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n     */\n\n\n\n\n    var blend = function (bottom, top, mode) {\n        if (!blend[mode]) {\n            throw new Error('unknown blend mode ' + mode);\n        }\n        return blend[mode](bottom, top);\n    };\n\n    var blend_f = function (f) { return function (bottom,top) {\n            var c0 = chroma_1(top).rgb();\n            var c1 = chroma_1(bottom).rgb();\n            return chroma_1.rgb(f(c0, c1));\n        }; };\n\n    var each = function (f) { return function (c0, c1) {\n            var out = [];\n            out[0] = f(c0[0], c1[0]);\n            out[1] = f(c0[1], c1[1]);\n            out[2] = f(c0[2], c1[2]);\n            return out;\n        }; };\n\n    var normal = function (a) { return a; };\n    var multiply = function (a,b) { return a * b / 255; };\n    var darken$1 = function (a,b) { return a > b ? b : a; };\n    var lighten = function (a,b) { return a > b ? a : b; };\n    var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); };\n    var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); };\n    var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); };\n    var dodge = function (a,b) {\n        if (a === 255) { return 255; }\n        a = 255 * (b / 255) / (1 - a / 255);\n        return a > 255 ? 255 : a\n    };\n\n    // # add = (a,b) ->\n    // #     if (a + b > 255) then 255 else a + b\n\n    blend.normal = blend_f(each(normal));\n    blend.multiply = blend_f(each(multiply));\n    blend.screen = blend_f(each(screen));\n    blend.overlay = blend_f(each(overlay));\n    blend.darken = blend_f(each(darken$1));\n    blend.lighten = blend_f(each(lighten));\n    blend.dodge = blend_f(each(dodge));\n    blend.burn = blend_f(each(burn));\n    // blend.add = blend_f(each(add));\n\n    var blend_1 = blend;\n\n    // cubehelix interpolation\n    // based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n    // http://astron-soc.in/bulletin/11June/289392011.pdf\n\n    var type$k = utils.type;\n    var clip_rgb$3 = utils.clip_rgb;\n    var TWOPI$2 = utils.TWOPI;\n    var pow$6 = Math.pow;\n    var sin$2 = Math.sin;\n    var cos$3 = Math.cos;\n\n\n    var cubehelix = function(start, rotations, hue, gamma, lightness) {\n        if ( start === void 0 ) start=300;\n        if ( rotations === void 0 ) rotations=-1.5;\n        if ( hue === void 0 ) hue=1;\n        if ( gamma === void 0 ) gamma=1;\n        if ( lightness === void 0 ) lightness=[0,1];\n\n        var dh = 0, dl;\n        if (type$k(lightness) === 'array') {\n            dl = lightness[1] - lightness[0];\n        } else {\n            dl = 0;\n            lightness = [lightness, lightness];\n        }\n\n        var f = function(fract) {\n            var a = TWOPI$2 * (((start+120)/360) + (rotations * fract));\n            var l = pow$6(lightness[0] + (dl * fract), gamma);\n            var h = dh !== 0 ? hue[0] + (fract * dh) : hue;\n            var amp = (h * l * (1-l)) / 2;\n            var cos_a = cos$3(a);\n            var sin_a = sin$2(a);\n            var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a)));\n            var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a)));\n            var b = l + (amp * (+1.97294 * cos_a));\n            return chroma_1(clip_rgb$3([r*255,g*255,b*255,1]));\n        };\n\n        f.start = function(s) {\n            if ((s == null)) { return start; }\n            start = s;\n            return f;\n        };\n\n        f.rotations = function(r) {\n            if ((r == null)) { return rotations; }\n            rotations = r;\n            return f;\n        };\n\n        f.gamma = function(g) {\n            if ((g == null)) { return gamma; }\n            gamma = g;\n            return f;\n        };\n\n        f.hue = function(h) {\n            if ((h == null)) { return hue; }\n            hue = h;\n            if (type$k(hue) === 'array') {\n                dh = hue[1] - hue[0];\n                if (dh === 0) { hue = hue[1]; }\n            } else {\n                dh = 0;\n            }\n            return f;\n        };\n\n        f.lightness = function(h) {\n            if ((h == null)) { return lightness; }\n            if (type$k(h) === 'array') {\n                lightness = h;\n                dl = h[1] - h[0];\n            } else {\n                lightness = [h,h];\n                dl = 0;\n            }\n            return f;\n        };\n\n        f.scale = function () { return chroma_1.scale(f); };\n\n        f.hue(hue);\n\n        return f;\n    };\n\n    var digits = '0123456789abcdef';\n\n    var floor$2 = Math.floor;\n    var random = Math.random;\n\n    var random_1 = function () {\n        var code = '#';\n        for (var i=0; i<6; i++) {\n            code += digits.charAt(floor$2(random() * 16));\n        }\n        return new Color_1(code, 'hex');\n    };\n\n    var log$1 = Math.log;\n    var pow$7 = Math.pow;\n    var floor$3 = Math.floor;\n    var abs = Math.abs;\n\n\n    var analyze = function (data, key) {\n        if ( key === void 0 ) key=null;\n\n        var r = {\n            min: Number.MAX_VALUE,\n            max: Number.MAX_VALUE*-1,\n            sum: 0,\n            values: [],\n            count: 0\n        };\n        if (type(data) === 'object') {\n            data = Object.values(data);\n        }\n        data.forEach(function (val) {\n            if (key && type(val) === 'object') { val = val[key]; }\n            if (val !== undefined && val !== null && !isNaN(val)) {\n                r.values.push(val);\n                r.sum += val;\n                if (val < r.min) { r.min = val; }\n                if (val > r.max) { r.max = val; }\n                r.count += 1;\n            }\n        });\n\n        r.domain = [r.min, r.max];\n\n        r.limits = function (mode, num) { return limits(r, mode, num); };\n\n        return r;\n    };\n\n\n    var limits = function (data, mode, num) {\n        if ( mode === void 0 ) mode='equal';\n        if ( num === void 0 ) num=7;\n\n        if (type(data) == 'array') {\n            data = analyze(data);\n        }\n        var min = data.min;\n        var max = data.max;\n        var values = data.values.sort(function (a,b) { return a-b; });\n\n        if (num === 1) { return [min,max]; }\n\n        var limits = [];\n\n        if (mode.substr(0,1) === 'c') { // continuous\n            limits.push(min);\n            limits.push(max);\n        }\n\n        if (mode.substr(0,1) === 'e') { // equal interval\n            limits.push(min);\n            for (var i=1; i<num; i++) {\n                limits.push(min+((i/num)*(max-min)));\n            }\n            limits.push(max);\n        }\n\n        else if (mode.substr(0,1) === 'l') { // log scale\n            if (min <= 0) {\n                throw new Error('Logarithmic scales are only possible for values > 0');\n            }\n            var min_log = Math.LOG10E * log$1(min);\n            var max_log = Math.LOG10E * log$1(max);\n            limits.push(min);\n            for (var i$1=1; i$1<num; i$1++) {\n                limits.push(pow$7(10, min_log + ((i$1/num) * (max_log - min_log))));\n            }\n            limits.push(max);\n        }\n\n        else if (mode.substr(0,1) === 'q') { // quantile scale\n            limits.push(min);\n            for (var i$2=1; i$2<num; i$2++) {\n                var p = ((values.length-1) * i$2)/num;\n                var pb = floor$3(p);\n                if (pb === p) {\n                    limits.push(values[pb]);\n                } else { // p > pb\n                    var pr = p - pb;\n                    limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr));\n                }\n            }\n            limits.push(max);\n\n        }\n\n        else if (mode.substr(0,1) === 'k') { // k-means clustering\n            /*\n            implementation based on\n            http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n            simplified for 1-d input values\n            */\n            var cluster;\n            var n = values.length;\n            var assignments = new Array(n);\n            var clusterSizes = new Array(num);\n            var repeat = true;\n            var nb_iters = 0;\n            var centroids = null;\n\n            // get seed values\n            centroids = [];\n            centroids.push(min);\n            for (var i$3=1; i$3<num; i$3++) {\n                centroids.push(min + ((i$3/num) * (max-min)));\n            }\n            centroids.push(max);\n\n            while (repeat) {\n                // assignment step\n                for (var j=0; j<num; j++) {\n                    clusterSizes[j] = 0;\n                }\n                for (var i$4=0; i$4<n; i$4++) {\n                    var value = values[i$4];\n                    var mindist = Number.MAX_VALUE;\n                    var best = (void 0);\n                    for (var j$1=0; j$1<num; j$1++) {\n                        var dist = abs(centroids[j$1]-value);\n                        if (dist < mindist) {\n                            mindist = dist;\n                            best = j$1;\n                        }\n                        clusterSizes[best]++;\n                        assignments[i$4] = best;\n                    }\n                }\n\n                // update centroids step\n                var newCentroids = new Array(num);\n                for (var j$2=0; j$2<num; j$2++) {\n                    newCentroids[j$2] = null;\n                }\n                for (var i$5=0; i$5<n; i$5++) {\n                    cluster = assignments[i$5];\n                    if (newCentroids[cluster] === null) {\n                        newCentroids[cluster] = values[i$5];\n                    } else {\n                        newCentroids[cluster] += values[i$5];\n                    }\n                }\n                for (var j$3=0; j$3<num; j$3++) {\n                    newCentroids[j$3] *= 1/clusterSizes[j$3];\n                }\n\n                // check convergence\n                repeat = false;\n                for (var j$4=0; j$4<num; j$4++) {\n                    if (newCentroids[j$4] !== centroids[j$4]) {\n                        repeat = true;\n                        break;\n                    }\n                }\n\n                centroids = newCentroids;\n                nb_iters++;\n\n                if (nb_iters > 200) {\n                    repeat = false;\n                }\n            }\n\n            // finished k-means clustering\n            // the next part is borrowed from gabrielflor.it\n            var kClusters = {};\n            for (var j$5=0; j$5<num; j$5++) {\n                kClusters[j$5] = [];\n            }\n            for (var i$6=0; i$6<n; i$6++) {\n                cluster = assignments[i$6];\n                kClusters[cluster].push(values[i$6]);\n            }\n            var tmpKMeansBreaks = [];\n            for (var j$6=0; j$6<num; j$6++) {\n                tmpKMeansBreaks.push(kClusters[j$6][0]);\n                tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length-1]);\n            }\n            tmpKMeansBreaks = tmpKMeansBreaks.sort(function (a,b){ return a-b; });\n            limits.push(tmpKMeansBreaks[0]);\n            for (var i$7=1; i$7 < tmpKMeansBreaks.length; i$7+= 2) {\n                var v = tmpKMeansBreaks[i$7];\n                if (!isNaN(v) && (limits.indexOf(v) === -1)) {\n                    limits.push(v);\n                }\n            }\n        }\n        return limits;\n    };\n\n    var analyze_1 = {analyze: analyze, limits: limits};\n\n    var contrast = function (a, b) {\n        // WCAG contrast ratio\n        // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n        a = new Color_1(a);\n        b = new Color_1(b);\n        var l1 = a.luminance();\n        var l2 = b.luminance();\n        return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n    };\n\n    var sqrt$4 = Math.sqrt;\n    var atan2$2 = Math.atan2;\n    var abs$1 = Math.abs;\n    var cos$4 = Math.cos;\n    var PI$2 = Math.PI;\n\n    var deltaE = function(a, b, L, C) {\n        if ( L === void 0 ) L=1;\n        if ( C === void 0 ) C=1;\n\n        // Delta E (CMC)\n        // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html\n        a = new Color_1(a);\n        b = new Color_1(b);\n        var ref = Array.from(a.lab());\n        var L1 = ref[0];\n        var a1 = ref[1];\n        var b1 = ref[2];\n        var ref$1 = Array.from(b.lab());\n        var L2 = ref$1[0];\n        var a2 = ref$1[1];\n        var b2 = ref$1[2];\n        var c1 = sqrt$4((a1 * a1) + (b1 * b1));\n        var c2 = sqrt$4((a2 * a2) + (b2 * b2));\n        var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1));\n        var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638;\n        var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2;\n        while (h1 < 0) { h1 += 360; }\n        while (h1 >= 360) { h1 -= 360; }\n        var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0)));\n        var c4 = c1 * c1 * c1 * c1;\n        var f = sqrt$4(c4 / (c4 + 1900.0));\n        var sh = sc * (((f * t) + 1.0) - f);\n        var delL = L1 - L2;\n        var delC = c1 - c2;\n        var delA = a1 - a2;\n        var delB = b1 - b2;\n        var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC);\n        var v1 = delL / (L * sl);\n        var v2 = delC / (C * sc);\n        var v3 = sh;\n        return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3)));\n    };\n\n    // simple Euclidean distance\n    var distance = function(a, b, mode) {\n        if ( mode === void 0 ) mode='lab';\n\n        // Delta E (CIE 1976)\n        // see http://www.brucelindbloom.com/index.html?Equations.html\n        a = new Color_1(a);\n        b = new Color_1(b);\n        var l1 = a.get(mode);\n        var l2 = b.get(mode);\n        var sum_sq = 0;\n        for (var i in l1) {\n            var d = (l1[i] || 0) - (l2[i] || 0);\n            sum_sq += d*d;\n        }\n        return Math.sqrt(sum_sq);\n    };\n\n    var valid = function () {\n        var args = [], len = arguments.length;\n        while ( len-- ) args[ len ] = arguments[ len ];\n\n        try {\n            new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) ));\n            return true;\n        } catch (e) {\n            return false;\n        }\n    };\n\n    // some pre-defined color scales:\n\n\n\n\n    var scales = {\n    \tcool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) },\n    \thot: function hot() { return scale(['#000','#f00','#ff0','#fff'], [0,.25,.75,1]).mode('rgb') }\n    };\n\n    /**\n        ColorBrewer colors for chroma.js\n\n        Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n        Pennsylvania State University.\n\n        Licensed under the Apache License, Version 2.0 (the \"License\");\n        you may not use this file except in compliance with the License.\n        You may obtain a copy of the License at\n        http://www.apache.org/licenses/LICENSE-2.0\n\n        Unless required by applicable law or agreed to in writing, software distributed\n        under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n        CONDITIONS OF ANY KIND, either express or implied. See the License for the\n        specific language governing permissions and limitations under the License.\n    */\n\n    var colorbrewer = {\n        // sequential\n        OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n        PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n        BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n        Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n        BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n        YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n        YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n        Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n        RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n        Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n        YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n        Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n        GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n        Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n        YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n        PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n        Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n        PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n        Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n        // diverging\n\n        Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n        RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n        RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n        PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n        PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n        RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n        BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n        RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n        PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n        // qualitative\n\n        Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n        Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n        Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n        Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n        Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n        Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n        Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n        Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n    };\n\n    // add lowercase aliases for case-insensitive matches\n    for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) {\n        var key = list$1[i$1];\n\n        colorbrewer[key.toLowerCase()] = colorbrewer[key];\n    }\n\n    var colorbrewer_1 = colorbrewer;\n\n    // feel free to comment out anything to rollup\n    // a smaller chroma.js built\n\n    // io --> convert colors\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    // operators --> modify existing Colors\n\n\n\n\n\n\n\n\n\n\n    // interpolators\n\n\n\n\n\n\n\n\n\n\n    // generators -- > create new colors\n    chroma_1.average = average;\n    chroma_1.bezier = bezier_1;\n    chroma_1.blend = blend_1;\n    chroma_1.cubehelix = cubehelix;\n    chroma_1.mix = chroma_1.interpolate = mix;\n    chroma_1.random = random_1;\n    chroma_1.scale = scale;\n\n    // other utility methods\n    chroma_1.analyze = analyze_1.analyze;\n    chroma_1.contrast = contrast;\n    chroma_1.deltaE = deltaE;\n    chroma_1.distance = distance;\n    chroma_1.limits = analyze_1.limits;\n    chroma_1.valid = valid;\n\n    // scale\n    chroma_1.scales = scales;\n\n    // colors\n    chroma_1.colors = w3cx11_1;\n    chroma_1.brewer = colorbrewer_1;\n\n    var chroma_js = chroma_1;\n\n    return chroma_js;\n\n})));\n","export default function getZones(from, to, exclusions = []) {\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  // in exclusions from and to have to be defined\n  exclusions = exclusions.filter(\n    (exclusion) => exclusion.from !== undefined && exclusion.to !== undefined\n  );\n\n  exclusions = JSON.parse(JSON.stringify(exclusions));\n  // we ensure that from before to\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from > exclusion.to) {\n      [exclusion.to, exclusion.from] = [exclusion.from, exclusion.to];\n    }\n  });\n\n  exclusions.sort((a, b) => a.from - b.from);\n\n  // we will rework the exclusions in order to remove overlap and outside range (from / to)\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from < from) exclusion.from = from;\n    if (exclusion.to > to) exclusion.to = to;\n  });\n  for (let i = 0; i < exclusions.length - 1; i++) {\n    if (exclusions[i].to > exclusions[i + 1].from) {\n      exclusions[i].to = exclusions[i + 1].from;\n    }\n  }\n  exclusions = exclusions.filter((exclusion) => exclusion.from < exclusion.to);\n\n  if (!exclusions || exclusions.length === 0) {\n    return [{ from, to }];\n  }\n\n  let zones = [];\n  let currentFrom = from;\n  for (let exclusion of exclusions) {\n    if (currentFrom < exclusion.from) {\n      zones.push({\n        from: currentFrom,\n        to: exclusion.from\n      });\n    }\n\n    currentFrom = exclusion.to;\n  }\n  if (currentFrom < to) {\n    zones.push({\n      from: currentFrom,\n      to: to\n    });\n  }\n\n  return zones;\n}\n","import getZones from './getZones';\n\n/**\n * Filter an array x/y based on various criteria\n * x points are expected to be sorted\n *\n * @param {object} points\n * @param {object} [options={}]\n * @param {array} [options.from]\n * @param {array} [options.to]\n * @param {array} [options.exclusions=[]]\n * @return {{x: Array<number>, y: Array<number>}}\n */\n\nexport default function filterX(points, options = {}) {\n  const { x, y } = points;\n  const { from = x[0], to = x[x.length - 1], exclusions = [] } = options;\n\n  let zones = getZones(from, to, exclusions);\n\n\n  let currentZoneIndex = 0;\n  let newX = [];\n  let newY = [];\n  let position = 0;\n  while (position < x.length) {\n    if (\n      x[position] <= zones[currentZoneIndex].to &&\n      x[position] >= zones[currentZoneIndex].from\n    ) {\n      newX.push(x[position]);\n      newY.push(y[position]);\n    } else {\n      if (x[position] > zones[currentZoneIndex].to) {\n        currentZoneIndex++;\n        if (!zones[currentZoneIndex]) break;\n      }\n    }\n    position++;\n  }\n\n  return {\n    x: newX,\n    y: newY\n  };\n}\n","import chroma from 'chroma-js';\nimport maxFct from 'ml-array-max';\nimport minFct from 'ml-array-min';\nimport filterX from 'ml-array-xy-filter-x';\n\n/**\n * Retrieve a chart with autocorrelation color\n * @param {SpectraProcessor} [spectraProcessor]\n * @param {number} [index]\n * @param {object} [options={}]\n * @param {Array} [options.autocorrelation] precalculated autocorrelation {x,y}\n * @param {Array} [options.maxDataPoints=]\n * @param {Array} [options.ids] ids of the spectra to select, by default all\n * @param {array} [options.xFilter.from]\n * @param {array} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n */\nexport function getAutocorrelationChart(spectraProcessor, index, options = {}) {\n  const {\n    autocorrelation = spectraProcessor.getAutocorrelation(index, options),\n    xFilter,\n    ids,\n  } = options;\n\n  let max = maxFct(autocorrelation.y);\n  let min = minFct(autocorrelation.y);\n\n  let colorCallback = chroma\n    .scale(['blue', 'cyan', 'yellow', 'red'])\n    .domain([min, max])\n    .mode('lch');\n\n  let colorScale = autocorrelation.y.map(\n    (y) => `rgb(${colorCallback(y).rgb().join()})`,\n  );\n\n  let mean = spectraProcessor.getMeanData({ ids });\n  if (xFilter) {\n    mean = filterX({ x: mean.x, y: mean.y }, xFilter);\n  }\n\n  let colorSpectrum = {\n    type: 'color',\n    x: mean.x,\n    y: mean.y,\n    color: colorScale,\n    styles: {\n      unselected: {\n        lineWidth: 1,\n        lineStyle: 1,\n      },\n      selected: {\n        lineWidth: 3,\n        lineStyle: 1,\n      },\n    },\n  };\n\n  return colorSpectrum;\n}\n","import { xBoxPlot } from 'ml-spectra-processing';\n\n/**\n * @private\n * @param {*} spectra\n */\n\nexport function getBoxPlotData(normalizedData) {\n  const { x, matrix } = normalizedData;\n  let nbRow = matrix.length;\n  let nbColumn = matrix[0].length;\n  let result;\n  let aColumn = new Float64Array(nbRow);\n  for (let column = 0; column < nbColumn; column++) {\n    for (let row = 0; row < nbRow; row++) {\n      aColumn[row] = matrix[row][column];\n    }\n    let info = xBoxPlot(aColumn);\n    if (!result) {\n      result = { x };\n      for (let key in info) {\n        result[key] = [];\n      }\n    }\n    for (let key in info) {\n      result[key].push(info[key]);\n    }\n  }\n  return result;\n}\n","import chroma from 'chroma-js';\nimport maxFct from 'ml-array-max';\nimport minFct from 'ml-array-min';\nimport { Matrix } from 'ml-matrix';\n\nimport { getBoxPlotData } from '../spectra/getBoxPlotData';\n\nexport function getBoxPlotChart(normalizedData, options = {}) {\n  const {\n    q13FillColor = '#000',\n    q13FillOpacity = 0.3,\n    q2StrokeColor = '',\n    q2StrokeWidth = 3,\n    minMaxFillColor = '#000',\n    minMaxFillOpacity = 0.15,\n  } = options;\n  let annotations = [];\n\n  const boxPlotData = getBoxPlotData(normalizedData);\n\n  if (q13FillOpacity && q13FillColor) {\n    let q13 = [];\n    for (let i = 0; i < boxPlotData.x.length; i++) {\n      q13.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.Q1[i],\n      });\n    }\n    for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n      q13.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.Q3[i],\n      });\n    }\n    annotations.push({\n      type: 'polygon',\n      layer: 0,\n      properties: {\n        fillColor: q13FillColor,\n        fillOpacity: q13FillOpacity,\n        strokeWidth: 0.0000001,\n        position: q13,\n      },\n    });\n  }\n\n  if (minMaxFillColor && minMaxFillOpacity) {\n    let minMax = [];\n    for (let i = 0; i < boxPlotData.x.length; i++) {\n      minMax.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.min[i],\n      });\n    }\n    for (let i = boxPlotData.x.length - 1; i >= 0; i--) {\n      minMax.push({\n        x: boxPlotData.x[i],\n        y: boxPlotData.max[i],\n      });\n    }\n\n    annotations.push({\n      type: 'polygon',\n      layer: 0,\n      properties: {\n        fillColor: minMaxFillColor,\n        fillOpacity: minMaxFillOpacity,\n        strokeWidth: 0.0000001,\n        strokeColor: '#FFF',\n        position: minMax,\n      },\n    });\n  }\n\n  let colorSpectrum = {\n    type: 'color',\n    data: {\n      x: boxPlotData.x,\n      y: boxPlotData.Q2,\n      color: q2StrokeColor\n        ? new Array(boxPlotData.x.length).fill(q2StrokeColor)\n        : getColors(normalizedData.matrix),\n    },\n    styles: {\n      unselected: {\n        lineWidth: q2StrokeWidth,\n        lineStyle: 1,\n      },\n      selected: {\n        lineWidth: q2StrokeWidth,\n        lineStyle: 1,\n      },\n    },\n    annotations,\n  };\n\n  return colorSpectrum;\n}\n\nfunction getColors(dataset) {\n  const matrix = new Matrix(dataset);\n  const stdevs = matrix.standardDeviation('column');\n  const min = minFct(stdevs);\n  const max = maxFct(stdevs);\n  const colorCallback = chroma\n    .scale(['blue', 'cyan', 'yellow', 'red'])\n    .domain([min, max])\n    .mode('lch');\n\n  const colors = stdevs.map((y) => `rgb(${colorCallback(y).rgb().join()})`);\n  return colors;\n}\n","export function addChartDataStyle(data, spectrum) {\n  data.styles = {\n    unselected: {\n      lineColor: spectrum.meta.color || 'darkgrey',\n      lineWidth: 1,\n      lineStyle: 1,\n    },\n    selected: {\n      lineColor: spectrum.meta.color || 'darkgrey',\n      lineWidth: 3,\n      lineStyle: 1,\n    },\n  };\n  data.label = spectrum.meta.id || spectrum.id;\n}\n","import { addChartDataStyle } from './addChartDataStyle';\n/**\n * Retrieve a chart with selected original data\n * @param {object} [options={}]\n * @param {Array} [options.ids] List of spectra ids, by default all\n * @param {Array} [options.yFactor=1]\n */\nexport function getChart(spectra, options = {}) {\n  const { ids, yFactor, xFilter = {} } = options;\n  let chart = {\n    data: [],\n  };\n\n  for (let spectrum of spectra) {\n    if (!ids || ids.includes(spectrum.id)) {\n      let data = spectrum.getData({ yFactor, xFilter });\n      addChartDataStyle(data, spectrum);\n      chart.data.push(data);\n    }\n  }\n  return chart;\n}\n","export function getNormalizationAnnotations(filter = {}) {\n  let { exclusions = [] } = filter;\n  let annotations = [];\n  exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n  annotations = exclusions.map((exclusion) => {\n    let annotation = {\n      type: 'rect',\n      position: [\n        { x: exclusion.from, y: '0px' },\n        { x: exclusion.to, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    };\n    return annotation;\n  });\n  if (filter.from !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: Number.MIN_SAFE_INTEGER, y: '0px' },\n        { x: filter.from, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  if (filter.to !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: filter.to, y: '0px' },\n        { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  return annotations;\n}\n","import filterX from 'ml-array-xy-filter-x';\n\nimport { addChartDataStyle } from './addChartDataStyle';\n\n/**\n * @param {Array<Spectrum>} spectra\n * @param {object} [options={}]\n * @param {object} [options.xFilter={}]\n * @param {array} [options.xFilter.from]\n * @param {array} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n */\n\nexport function getNormalizedChart(spectra, options = {}) {\n  const { xFilter } = options;\n  let chart = {\n    data: [],\n  };\n  for (let spectrum of spectra) {\n    let data = spectrum.normalized;\n    if (xFilter) {\n      data = filterX({ x: data.x, y: data.y }, xFilter);\n    }\n    addChartDataStyle(data, spectrum);\n    chart.data.push(data);\n  }\n  return chart;\n}\n","import { addChartDataStyle } from './addChartDataStyle';\n/**\n *\n * @param {SpectraProcessor} spectraProcessor\n * @param {object}   [options={}] scale spectra based on various parameters\n * @param {Array}    [options.ids] ids of selected spectra\n * @param {Array}    [options.filters=[]] Array of object containing {name:'', options:''}\n * @param {object}   [options.scale={}] object containing the options for rescaling\n * @param {string}   [options.scale.targetID=spectra[0].id]\n * @param {string}   [options.scale.method='max'] min, max, integration, minMax\n * @param {Array}    [options.scale.range] from - to to apply the method and rescale\n * @param {boolean}  [options.scale.relative=false]\n */\nexport function getPostProcessedChart(spectraProcessor, options = {}) {\n  let scaled = spectraProcessor.getPostProcessedData(options);\n\n  let chart = {\n    data: [],\n  };\n  if (!scaled || !scaled.matrix) return chart;\n\n  for (let i = 0; i < scaled.matrix.length; i++) {\n    let data = {\n      x: scaled.x,\n      y: Array.from(scaled.matrix[i]), // need to ensure not a typed array\n    };\n    addChartDataStyle(data, { meta: scaled.meta[i], id: scaled.ids[i] });\n    chart.data.push(data);\n  }\n\n  return chart;\n}\n","/**\n * @private\n * @param {*} spectra\n * @param {object} [options={}]\n * @param {Array} [options.ids] ids of selected spectra\n */\n\nexport function getNormalizedData(spectra, options = {}) {\n  const { ids } = options;\n\n  let matrix = [];\n  let meta = [];\n  let currentIDs = [];\n  let x = [];\n\n  if (Array.isArray(spectra) && spectra.length > 0) {\n    for (let spectrum of spectra) {\n      if (!ids || ids.includes(spectrum.id)) {\n        currentIDs.push(spectrum.id);\n        matrix.push(spectrum.normalized.y);\n        meta.push(spectrum.meta);\n      }\n    }\n    x = spectra[0].normalized.x;\n  }\n\n  return { ids: currentIDs, matrix, meta, x };\n}\n","import { getNormalizedData } from '../spectra/getNormalizedData';\n\nexport function getTrackAnnotation(spectra, index, options = {}) {\n  const { ids, showSpectrumID = true, sortY = true, limit = 20 } = options;\n  let annotations = [];\n\n  let normalized = getNormalizedData(spectra, { ids });\n\n  if (normalized.ids.length === 0) return annotations;\n  let line = 0;\n\n  // header containing X coordinate\n  annotations.push({\n    type: 'line',\n    position: [\n      { x: `${70}px`, y: `${15 + 15 * line}px` },\n      { x: `${85}px`, y: `${15 + 15 * line}px` },\n    ],\n    strokeWidth: 0.0000001,\n    label: {\n      size: 16,\n      text: `x: ${normalized.x[index].toPrecision(6)}`,\n      position: { x: `${130}px`, y: `${20 + 15 * line}px` },\n    },\n  });\n  line++;\n\n  let peaks = [];\n  for (let i = 0; i < normalized.ids.length; i++) {\n    peaks.push({\n      id: normalized.ids[i],\n      meta: normalized.meta[i],\n      y: normalized.matrix[i][index],\n    });\n  }\n\n  if (sortY) {\n    peaks = peaks.sort((a, b) => b.y - a.y);\n  }\n  if (limit) {\n    peaks = peaks.slice(0, limit);\n  }\n\n  for (let { id, meta, y } of peaks) {\n    annotations.push({\n      type: 'line',\n      position: [\n        { x: `${70}px`, y: `${15 + 15 * line}px` },\n        { x: `${85}px`, y: `${15 + 15 * line}px` },\n      ],\n      strokeColor: meta.color,\n      strokeWidth: 2,\n      label: {\n        text: `${y.toPrecision(4)}${showSpectrumID ? ` - ${id}` : ''}`,\n        position: { x: `${90}px`, y: `${20 + 15 * line}px` },\n      },\n    });\n    line++;\n  }\n\n  return annotations;\n}\n","/**\n * @private\n * @param {Array<object>} [metadata]\n * @param {object} [options={}] scale spectra based on various parameters\n * @param {string} [options.propertyName=\"category\"]\n */\n\nexport function getCategoriesStats(metadata, options = {}) {\n  const { propertyName = 'category' } = options;\n  let categories = {};\n  let classNumber = 0;\n  for (let metadatum of metadata) {\n    let value = metadatum[propertyName];\n    if (!categories[value]) {\n      categories[value] = {\n        classNumber: classNumber++,\n        counter: 0,\n      };\n    }\n    categories[value].counter++;\n  }\n  return categories;\n}\n","import { getCategoriesStats } from './getCategoriesStats';\n\n/**\n * @private\n * @param {Array<object>} [metadata]\n * @param {object} [options={}] scale spectra based on various parameters\n * @param {string} [options.propertyName=\"category\"]\n */\n\nexport function getClasses(metadata, options = {}) {\n  const { propertyName = 'category' } = options;\n  const categoriesStats = getCategoriesStats(metadata, options);\n  const result = new Array(metadata.length);\n  for (let i = 0; i < metadata.length; i++) {\n    result[i] = categoriesStats[metadata[i][propertyName]].classNumber;\n  }\n  return result;\n}\n","/**\n * @private\n * @param {*} spectra\n * @param {object} options\n */\n\nexport function getMetadata(spectra, options = {}) {\n  const { ids } = options;\n\n  let metadata = [];\n\n  if (Array.isArray(spectra) && spectra.length > 0) {\n    for (let spectrum of spectra) {\n      if (!ids || ids.includes(spectrum.id)) {\n        metadata.push(spectrum.meta);\n      }\n    }\n  }\n\n  return metadata;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\n\nexport function complexChromatogram(result) {\n  let spectra = result.spectra;\n  let length = spectra.length;\n  let chromatogram = {\n    times: new Array(length),\n    series: {\n      ms: {\n        dimension: 2,\n        data: new Array(length),\n      },\n    },\n  };\n\n  let existingGCMSFields = [];\n  for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n    let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n    if (spectra[0][label]) {\n      existingGCMSFields.push(label);\n      chromatogram.series[label] = {\n        dimension: 1,\n        data: new Array(length),\n      };\n    }\n  }\n\n  for (let i = 0; i < length; i++) {\n    let spectrum = spectra[i];\n    chromatogram.times[i] = spectrum.pageValue;\n    for (let j = 0; j < existingGCMSFields.length; j++) {\n      chromatogram.series[existingGCMSFields[j]].data[i] = parseFloat(\n        spectrum[existingGCMSFields[j]],\n      );\n    }\n    if (spectrum.data) {\n      chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n    }\n  }\n  result.chromatogram = chromatogram;\n}\n\nexport function isMSField(canonicDataLabel) {\n  return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\n\nexport function convertMSFieldToLabel(value) {\n  return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n","export default function convertToFloatArray(stringArray) {\n  let floatArray = [];\n  for (let i = 0; i < stringArray.length; i++) {\n    floatArray.push(parseFloat(stringArray[i]));\n  }\n  return floatArray;\n}\n","export default function fastParseXYData(spectrum, value) {\n  // TODO need to deal with result\n  //  console.log(value);\n  // we check if deltaX is defined otherwise we calculate it\n\n  let yFactor = spectrum.yFactor;\n  let deltaX = spectrum.deltaX;\n\n  spectrum.isXYdata = true;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let currentX = spectrum.firstX;\n  let currentY = spectrum.firstY;\n\n  // we skip the first line\n  //\n  let endLine = false;\n  let ascii;\n  let i = 0;\n  for (; i < value.length; i++) {\n    ascii = value.charCodeAt(i);\n    if (ascii === 13 || ascii === 10) {\n      endLine = true;\n    } else {\n      if (endLine) break;\n    }\n  }\n\n  // we proceed taking the i after the first line\n  let newLine = true;\n  let isDifference = false;\n  let isLastDifference = false;\n  let lastDifference = 0;\n  let isDuplicate = false;\n  let inComment = false;\n  let currentValue = 0; // can be a difference or a duplicate\n  let lastValue = 0; // must be the real last value\n  let isNegative = false;\n  let inValue = false;\n  let skipFirstValue = false;\n  let decimalPosition = 0;\n  for (; i <= value.length; i++) {\n    if (i === value.length) ascii = 13;\n    else ascii = value.charCodeAt(i);\n    if (inComment) {\n      // we should ignore the text if we are after $$\n      if (ascii === 13 || ascii === 10) {\n        newLine = true;\n        inComment = false;\n      }\n    } else {\n      // when is it a new value ?\n      // when it is not a digit, . or comma\n      // it is a number that is either new or we continue\n      if (ascii <= 57 && ascii >= 48) {\n        // a number\n        inValue = true;\n        if (decimalPosition > 0) {\n          currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n        } else {\n          currentValue *= 10;\n          currentValue += ascii - 48;\n        }\n      } else if (ascii === 44 || ascii === 46) {\n        // a \",\" or \".\"\n        inValue = true;\n        decimalPosition++;\n      } else {\n        if (inValue) {\n          // need to process the previous value\n          if (newLine) {\n            newLine = false; // we don't check the X value\n            // console.log(\"NEW LINE\",isDifference, lastDifference);\n            // if new line and lastDifference, the first value is just a check !\n            // that we don't check ...\n            if (isLastDifference) skipFirstValue = true;\n          } else {\n            // need to deal with duplicate and differences\n            if (skipFirstValue) {\n              skipFirstValue = false;\n            } else {\n              if (isDifference) {\n                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                isLastDifference = true;\n                isDifference = false;\n              } else if (!isDuplicate) {\n                lastValue = isNegative ? 0 - currentValue : currentValue;\n              }\n              let duplicate = isDuplicate ? currentValue - 1 : 1;\n              for (let j = 0; j < duplicate; j++) {\n                if (isLastDifference) {\n                  currentY += lastDifference;\n                } else {\n                  currentY = lastValue;\n                }\n                currentData.x.push(currentX);\n                currentData.y.push(currentY * yFactor);\n                currentX += deltaX;\n              }\n            }\n          }\n          isNegative = false;\n          currentValue = 0;\n          decimalPosition = 0;\n          inValue = false;\n          isDuplicate = false;\n        }\n\n        // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n        if (ascii < 74 && ascii > 63) {\n          inValue = true;\n          isLastDifference = false;\n          currentValue = ascii - 64;\n        } else if (ascii > 96 && ascii < 106) {\n          // negative SQZ digits a b c d e f g h i (ascii 97-105)\n          inValue = true;\n          isLastDifference = false;\n          currentValue = ascii - 96;\n          isNegative = true;\n        } else if (ascii === 115) {\n          // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n          inValue = true;\n          isDuplicate = true;\n          currentValue = 9;\n        } else if (ascii > 82 && ascii < 91) {\n          inValue = true;\n          isDuplicate = true;\n          currentValue = ascii - 82;\n        } else if (ascii > 73 && ascii < 83) {\n          // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n          inValue = true;\n          isDifference = true;\n          currentValue = ascii - 73;\n        } else if (ascii > 105 && ascii < 115) {\n          // negative DIF digits j k l m n o p q r (ascii 106-114)\n          inValue = true;\n          isDifference = true;\n          currentValue = ascii - 105;\n          isNegative = true;\n        } else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n          // $ sign, we need to check the next one\n          inValue = true;\n          inComment = true;\n        } else if (ascii === 37) {\n          // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n          inValue = true;\n          isDifference = true;\n          currentValue = 0;\n          isNegative = false;\n        } else if (ascii === 45) {\n          // a \"-\"\n          // check if after there is a number, decimal or comma\n          let ascii2 = value.charCodeAt(i + 1);\n          if (\n            (ascii2 >= 48 && ascii2 <= 57) ||\n            ascii2 === 44 ||\n            ascii2 === 46\n          ) {\n            inValue = true;\n            if (!newLine) isLastDifference = false;\n            isNegative = true;\n          }\n        } else if (ascii === 13 || ascii === 10) {\n          newLine = true;\n          inComment = false;\n        }\n        // and now analyse the details ... space or tabulation\n        // if \"+\" we just don't care\n      }\n    }\n  }\n}\n","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\n\nexport default function parsePeakTable(spectrum, value, result) {\n  spectrum.isPeaktable = true;\n\n  if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n    parseXY(spectrum, value, result);\n  } else {\n    parseXYZ(spectrum, value, result);\n  }\n\n  // we will add the data in the variables\n  if (spectrum.variables) {\n    for (let key in spectrum.variables) {\n      spectrum.variables[key].data = spectrum.data[key];\n    }\n  }\n}\n\nfunction parseXY(spectrum, value, result) {\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let values = lines[i]\n      .trim()\n      .replace(removeCommentRegExp, '')\n      .split(peakTableSplitRegExp);\n    if (values.length % 2 === 0) {\n      for (let j = 0; j < values.length; j = j + 2) {\n        // takes around 40% of the time to add and parse the 2 values nearly exclusively because of parseFloat\n        currentData.x.push(parseFloat(values[j]) * spectrum.xFactor);\n        currentData.y.push(parseFloat(values[j + 1]) * spectrum.yFactor);\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n\nfunction parseXYZ(spectrum, value, result) {\n  let currentData = {};\n  let variables = Object.keys(spectrum.variables);\n  let numberOfVariables = variables.length;\n  variables.forEach((variable) => (currentData[variable] = []));\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let values = lines[i]\n      .trim()\n      .replace(removeCommentRegExp, '')\n      .split(peakTableSplitRegExp);\n    if (values.length % numberOfVariables === 0) {\n      for (let j = 0; j < values.length; j++) {\n        // todo should try to find a xFactor (y, ...)\n        currentData[variables[j % numberOfVariables]].push(\n          parseFloat(values[j]),\n        );\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n","export default function parseXYA(spectrum, value) {\n  let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n\n  spectrum.isXYAdata = true;\n  let values;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n    currentData.x.push(parseFloat(values[0]));\n    currentData.y.push(parseFloat(values[1]));\n  }\n}\n","import getMedian from 'ml-array-median';\n\nexport default function convertTo3DZ(spectra) {\n  let minZ = spectra[0].data.y[0];\n  let maxZ = minZ;\n  let ySize = spectra.length;\n  let xSize = spectra[0].data.x.length;\n\n  let z = new Array(ySize);\n  for (let i = 0; i < ySize; i++) {\n    z[i] = spectra[i].data.y;\n    for (let j = 0; j < xSize; j++) {\n      let value = z[i][j];\n      if (value < minZ) minZ = value;\n      if (value > maxZ) maxZ = value;\n    }\n  }\n\n  const firstX = spectra[0].data.x[0];\n  const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n  const firstY = spectra[0].pageValue;\n  const lastY = spectra[ySize - 1].pageValue;\n\n  // Because the min / max value are the only information about the matrix if we invert\n  // min and max we need to invert the array\n  if (firstX > lastX) {\n    for (let spectrum of z) {\n      spectrum.reverse();\n    }\n  }\n  if (firstY > lastY) {\n    z.reverse();\n  }\n\n  return {\n    z: z,\n    minX: Math.min(firstX, lastX),\n    maxX: Math.max(firstX, lastX),\n    minY: Math.min(firstY, lastY),\n    maxY: Math.max(firstY, lastY),\n    minZ: minZ,\n    maxZ: maxZ,\n    noise: getMedian(z[0].map(Math.abs)),\n  };\n}\n","export default function generateContourLines(zData, options) {\n  let noise = zData.noise;\n  let z = zData.z;\n  let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n  let isOver0, isOver1, isOver2, isOver3;\n  let nbSubSpectra = z.length;\n  let nbPovars = z[0].length;\n  let pAx, pAy, pBx, pBy;\n\n  let x0 = zData.minX;\n  let xN = zData.maxX;\n  let dx = (xN - x0) / (nbPovars - 1);\n  let y0 = zData.minY;\n  let yN = zData.maxY;\n  let dy = (yN - y0) / (nbSubSpectra - 1);\n  let minZ = zData.minZ;\n  let maxZ = zData.maxZ;\n\n  // System.out.prvarln('y0 '+y0+' yN '+yN);\n  // -------------------------\n  // Povars attribution\n  //\n  // 0----1\n  // |  / |\n  // | /  |\n  // 2----3\n  //\n  // ---------------------d------\n\n  let iter = options.nbContourLevels * 2;\n  let contourLevels = new Array(iter);\n  let lineZValue;\n  for (let level = 0; level < iter; level++) {\n    // multiply by 2 for positif and negatif\n    let contourLevel = {};\n    contourLevels[level] = contourLevel;\n    let side = level % 2;\n    let factor =\n      (maxZ - options.noiseMultiplier * noise) *\n      Math.exp((level >> 1) - options.nbContourLevels);\n    if (side === 0) {\n      lineZValue = factor + options.noiseMultiplier * noise;\n    } else {\n      lineZValue = 0 - factor - options.noiseMultiplier * noise;\n    }\n    let lines = [];\n    contourLevel.zValue = lineZValue;\n    contourLevel.lines = lines;\n\n    if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\n    for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n      let subSpectra = z[iSubSpectra];\n      let subSpectraAfter = z[iSubSpectra + 1];\n      for (let povar = 0; povar < nbPovars - 1; povar++) {\n        povarHeight0 = subSpectra[povar];\n        povarHeight1 = subSpectra[povar + 1];\n        povarHeight2 = subSpectraAfter[povar];\n        povarHeight3 = subSpectraAfter[povar + 1];\n\n        isOver0 = povarHeight0 > lineZValue;\n        isOver1 = povarHeight1 > lineZValue;\n        isOver2 = povarHeight2 > lineZValue;\n        isOver3 = povarHeight3 > lineZValue;\n\n        // Example povar0 is over the plane and povar1 and\n        // povar2 are below, we find the varersections and add\n        // the segment\n        if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n          pAx =\n            povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n          pAy = iSubSpectra;\n          pBx = povar;\n          pBy =\n            iSubSpectra +\n            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n          lines.push(pAx * dx + x0);\n          lines.push(pAy * dy + y0);\n          lines.push(pBx * dx + x0);\n          lines.push(pBy * dy + y0);\n        }\n        // remove push does not help !!!!\n        if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n          pAx = povar + 1;\n          pAy =\n            iSubSpectra +\n            1 -\n            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n          pBx =\n            povar +\n            1 -\n            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n          pBy = iSubSpectra + 1;\n          lines.push(pAx * dx + x0);\n          lines.push(pAy * dy + y0);\n          lines.push(pBx * dx + x0);\n          lines.push(pBy * dy + y0);\n        }\n        // test around the diagonal\n        if (isOver1 !== isOver2) {\n          pAx =\n            (povar +\n              1 -\n              (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n              dx +\n            x0;\n          pAy =\n            (iSubSpectra +\n              (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n              dy +\n            y0;\n          if (isOver1 !== isOver0) {\n            pBx =\n              povar +\n              1 -\n              (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n            pBy = iSubSpectra;\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver2 !== isOver0) {\n            pBx = povar;\n            pBy =\n              iSubSpectra +\n              1 -\n              (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver1 !== isOver3) {\n            pBx = povar + 1;\n            pBy =\n              iSubSpectra +\n              (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver2 !== isOver3) {\n            pBx =\n              povar +\n              (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n            pBy = iSubSpectra + 1;\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n        }\n      }\n    }\n  }\n\n  return {\n    minX: zData.minX,\n    maxX: zData.maxX,\n    minY: zData.minY,\n    maxY: zData.maxY,\n    segments: contourLevels,\n  };\n}\n","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\n\nexport default function add2D(result, options) {\n  let zData = convertTo3DZ(result.spectra);\n  if (!options.noContour) {\n    result.contourLines = generateContourLines(zData, options);\n    delete zData.z;\n  }\n  result.minMax = zData;\n}\n","/**\n * Fast Fourier Transform module\n * 1D-FFT/IFFT, 2D-FFT/IFFT (radix-2)\n */\nvar FFT = (function(){\n  var FFT;  \n  \n  if(typeof exports !== 'undefined') {\n    FFT = exports;   // for CommonJS\n  } else {\n    FFT = {};\n  }\n  \n  var version = {\n    release: '0.3.0',\n    date: '2013-03'\n  };\n  FFT.toString = function() {\n    return \"version \" + version.release + \", released \" + version.date;\n  };\n\n  // core operations\n  var _n = 0,          // order\n      _bitrev = null,  // bit reversal table\n      _cstb = null;    // sin/cos table\n\n  var core = {\n    init : function(n) {\n      if(n !== 0 && (n & (n - 1)) === 0) {\n        _n = n;\n        core._initArray();\n        core._makeBitReversalTable();\n        core._makeCosSinTable();\n      } else {\n        throw new Error(\"init: radix-2 required\");\n      }\n    },\n    // 1D-FFT\n    fft1d : function(re, im) {\n      core.fft(re, im, 1);\n    },\n    // 1D-IFFT\n    ifft1d : function(re, im) {\n      var n = 1/_n;\n      core.fft(re, im, -1);\n      for(var i=0; i<_n; i++) {\n        re[i] *= n;\n        im[i] *= n;\n      }\n    },\n     // 1D-IFFT\n    bt1d : function(re, im) {\n      core.fft(re, im, -1);\n    },\n    // 2D-FFT Not very useful if the number of rows have to be equal to cols\n    fft2d : function(re, im) {\n      var tre = [],\n          tim = [],\n          i = 0;\n      // x-axis\n      for(var y=0; y<_n; y++) {\n        i = y*_n;\n        for(var x1=0; x1<_n; x1++) {\n          tre[x1] = re[x1 + i];\n          tim[x1] = im[x1 + i];\n        }\n        core.fft1d(tre, tim);\n        for(var x2=0; x2<_n; x2++) {\n          re[x2 + i] = tre[x2];\n          im[x2 + i] = tim[x2];\n        }\n      }\n      // y-axis\n      for(var x=0; x<_n; x++) {\n        for(var y1=0; y1<_n; y1++) {\n          i = x + y1*_n;\n          tre[y1] = re[i];\n          tim[y1] = im[i];\n        }\n        core.fft1d(tre, tim);\n        for(var y2=0; y2<_n; y2++) {\n          i = x + y2*_n;\n          re[i] = tre[y2];\n          im[i] = tim[y2];\n        }\n      }\n    },\n    // 2D-IFFT\n    ifft2d : function(re, im) {\n      var tre = [],\n          tim = [],\n          i = 0;\n      // x-axis\n      for(var y=0; y<_n; y++) {\n        i = y*_n;\n        for(var x1=0; x1<_n; x1++) {\n          tre[x1] = re[x1 + i];\n          tim[x1] = im[x1 + i];\n        }\n        core.ifft1d(tre, tim);\n        for(var x2=0; x2<_n; x2++) {\n          re[x2 + i] = tre[x2];\n          im[x2 + i] = tim[x2];\n        }\n      }\n      // y-axis\n      for(var x=0; x<_n; x++) {\n        for(var y1=0; y1<_n; y1++) {\n          i = x + y1*_n;\n          tre[y1] = re[i];\n          tim[y1] = im[i];\n        }\n        core.ifft1d(tre, tim);\n        for(var y2=0; y2<_n; y2++) {\n          i = x + y2*_n;\n          re[i] = tre[y2];\n          im[i] = tim[y2];\n        }\n      }\n    },\n    // core operation of FFT\n    fft : function(re, im, inv) {\n      var d, h, ik, m, tmp, wr, wi, xr, xi,\n          n4 = _n >> 2;\n      // bit reversal\n      for(var l=0; l<_n; l++) {\n        m = _bitrev[l];\n        if(l < m) {\n          tmp = re[l];\n          re[l] = re[m];\n          re[m] = tmp;\n          tmp = im[l];\n          im[l] = im[m];\n          im[m] = tmp;\n        }\n      }\n      // butterfly operation\n      for(var k=1; k<_n; k<<=1) {\n        h = 0;\n        d = _n/(k << 1);\n        for(var j=0; j<k; j++) {\n          wr = _cstb[h + n4];\n          wi = inv*_cstb[h];\n          for(var i=j; i<_n; i+=(k<<1)) {\n            ik = i + k;\n            xr = wr*re[ik] + wi*im[ik];\n            xi = wr*im[ik] - wi*re[ik];\n            re[ik] = re[i] - xr;\n            re[i] += xr;\n            im[ik] = im[i] - xi;\n            im[i] += xi;\n          }\n          h += d;\n        }\n      }\n    },\n    // initialize the array (supports TypedArray)\n    _initArray : function() {\n      if(typeof Uint32Array !== 'undefined') {\n        _bitrev = new Uint32Array(_n);\n      } else {\n        _bitrev = [];\n      }\n      if(typeof Float64Array !== 'undefined') {\n        _cstb = new Float64Array(_n*1.25);\n      } else {\n        _cstb = [];\n      }\n    },\n    // zero padding\n    _paddingZero : function() {\n      // TODO\n    },\n    // makes bit reversal table\n    _makeBitReversalTable : function() {\n      var i = 0,\n          j = 0,\n          k = 0;\n      _bitrev[0] = 0;\n      while(++i < _n) {\n        k = _n >> 1;\n        while(k <= j) {\n          j -= k;\n          k >>= 1;\n        }\n        j += k;\n        _bitrev[i] = j;\n      }\n    },\n    // makes trigonometiric function table\n    _makeCosSinTable : function() {\n      var n2 = _n >> 1,\n          n4 = _n >> 2,\n          n8 = _n >> 3,\n          n2p4 = n2 + n4,\n          t = Math.sin(Math.PI/_n),\n          dc = 2*t*t,\n          ds = Math.sqrt(dc*(2 - dc)),\n          c = _cstb[n4] = 1,\n          s = _cstb[0] = 0;\n      t = 2*dc;\n      for(var i=1; i<n8; i++) {\n        c -= dc;\n        dc += t*c;\n        s += ds;\n        ds -= t*s;\n        _cstb[i] = s;\n        _cstb[n4 - i] = c;\n      }\n      if(n8 !== 0) {\n        _cstb[n8] = Math.sqrt(0.5);\n      }\n      for(var j=0; j<n4; j++) {\n        _cstb[n2 - j]  = _cstb[j];\n      }\n      for(var k=0; k<n2p4; k++) {\n        _cstb[k + n2] = -_cstb[k];\n      }\n    }\n  };\n  // aliases (public APIs)\n  var apis = ['init', 'fft1d', 'ifft1d', 'fft2d', 'ifft2d'];\n  for(var i=0; i<apis.length; i++) {\n    FFT[apis[i]] = core[apis[i]];\n  }\n  FFT.bt = core.bt1d;\n  FFT.fft = core.fft1d;\n  FFT.ifft = core.ifft1d;\n  \n  return FFT;\n}).call(this);\n","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\n\n// TODO: #13 can we have a better source and more digits ? @jwist\n\nexport const gyromagneticRatio = {\n  '1H': 267.52218744e6,\n  '2H': 41.065e6,\n  '3H': 285.3508e6,\n  '3He': -203.789e6,\n  '7Li': 103.962e6,\n  '13C': 67.28284e6,\n  '14N': 19.331e6,\n  '15N': -27.116e6,\n  '17O': -36.264e6,\n  '19F': 251.662e6,\n  '23Na': 70.761e6,\n  '27Al': 69.763e6,\n  '29Si': -53.19e6,\n  '31P': 108.291e6,\n  '57Fe': 8.681e6,\n  '63Cu': 71.118e6,\n  '67Zn': 16.767e6,\n  '129Xe': -73.997e6,\n};\n","import { gyromagneticRatio } from 'nmr-processing';\n\nexport default function postProcessingNMR(entriesFlat) {\n  // specific NMR functions\n  let observeFrequency = 0;\n  let shiftOffsetVal = 0;\n\n  for (let entry of entriesFlat) {\n    for (let spectrum of entry.spectra) {\n      if (entry.ntuples && entry.ntuples.symbol) {\n        if (!observeFrequency && spectrum.observeFrequency) {\n          observeFrequency = spectrum.observeFrequency;\n        }\n        if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n          shiftOffsetVal = spectrum.shiftOffsetVal;\n        }\n      } else {\n        observeFrequency = spectrum.observeFrequency;\n        shiftOffsetVal = spectrum.shiftOffsetVal;\n      }\n\n      if (observeFrequency) {\n        if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n          spectrum.xUnits = 'PPM';\n          spectrum.xFactor = spectrum.xFactor / observeFrequency;\n          spectrum.firstX = spectrum.firstX / observeFrequency;\n          spectrum.lastX = spectrum.lastX / observeFrequency;\n          spectrum.deltaX = spectrum.deltaX / observeFrequency;\n          for (let i = 0; i < spectrum.data.x.length; i++) {\n            spectrum.data.x[i] /= observeFrequency;\n          }\n        }\n      }\n      if (shiftOffsetVal) {\n        let shift = spectrum.firstX - shiftOffsetVal;\n        spectrum.firstX = spectrum.firstX - shift;\n        spectrum.lastX = spectrum.lastX - shift;\n        for (let i = 0; i < spectrum.data.x.length; i++) {\n          spectrum.data.x[i] -= shift;\n        }\n      }\n\n      // we will check if some nucleus are missing ...\n      if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n        for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n          let symbol = entry.ntuples.symbol[i];\n          let nucleus = entry.ntuples.nucleus[i];\n          if (symbol.startsWith('F') && !nucleus) {\n            if (symbol === 'F1') entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n            if (symbol === 'F2') entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n          }\n          if (symbol === 'F2') {\n            entry.yType = entry.ntuples.nucleus[0];\n          }\n        }\n      }\n\n      if (\n        observeFrequency &&\n        entry.ntuples &&\n        entry.ntuples.symbol &&\n        entry.ntuples.nucleus\n      ) {\n        let unit = '';\n        let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n        if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n          unit = entry.ntuples.units[pageSymbolIndex];\n        }\n        if (unit !== 'PPM') {\n          if (pageSymbolIndex !== 0) {\n            throw Error('Not sure about this ntuples format');\n          }\n\n          let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n          let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n          if (!ratio0 || !ratio1) {\n            throw Error('Problem with determination of gyromagnetic ratio');\n          }\n          let ratio = (ratio0 / ratio1) * observeFrequency;\n          spectrum.pageValue /= ratio;\n        }\n      }\n    }\n  }\n}\n","export default function profiling(result, action, options) {\n  if (result.profiling) {\n    result.profiling.push({\n      action,\n      time: Date.now() - options.start,\n    });\n  }\n}\n","export default function simpleChromatogram(result) {\n  let data = result.spectra[0].data;\n  result.chromatogram = {\n    times: data.x.slice(),\n    series: {\n      intensity: {\n        dimension: 1,\n        data: data.y.slice(),\n      },\n    },\n  };\n}\n","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\n\nexport default function postProcessing(entriesFlat, result, options) {\n  // converting Hz to ppm\n  postProcessingNMR(entriesFlat);\n\n  for (let entry of entriesFlat) {\n    if (Object.keys(entry.ntuples).length > 0) {\n      let newNtuples = [];\n      let keys = Object.keys(entry.ntuples);\n      for (let i = 0; i < keys.length; i++) {\n        let key = keys[i];\n        let values = entry.ntuples[key];\n        for (let j = 0; j < values.length; j++) {\n          if (!newNtuples[j]) newNtuples[j] = {};\n          newNtuples[j][key] = values[j];\n        }\n      }\n      entry.ntuples = newNtuples;\n    }\n\n    if (entry.twoD && options.wantXY) {\n      add2D(entry, options);\n\n      profiling(result, 'Finished countour plot calculation', options);\n\n      if (!options.keepSpectra) {\n        delete entry.spectra;\n      }\n    }\n\n    // maybe it is a GC (HPLC) / MS. In this case we add a new format\n    if (options.chromatogram) {\n      if (entry.spectra.length > 1) {\n        complexChromatogram(entry);\n      } else {\n        simpleChromatogram(entry);\n      }\n      profiling(result, 'Finished chromatogram calculation', options);\n    }\n    delete entry.tmp;\n  }\n}\n","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n  let xIndex = -1;\n  let yIndex = -1;\n  let firstVariable = '';\n  let secondVariable = '';\n  if (kind.indexOf('++') > 0) {\n    firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n    secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n  } else {\n    kind = kind.replace(/[^a-zA-Z]/g, '');\n    firstVariable = kind.charAt(0);\n    secondVariable = kind.charAt(1);\n    spectrum.variables = {};\n    for (let symbol of kind) {\n      let lowerCaseSymbol = symbol.toLowerCase();\n      let index = currentEntry.ntuples.symbol.indexOf(symbol);\n      if (index === -1) throw Error(`Symbol undefined: ${symbol}`);\n      spectrum.variables[lowerCaseSymbol] = {};\n      for (let key in currentEntry.ntuples) {\n        if (currentEntry.ntuples[key][index]) {\n          spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n            currentEntry.ntuples[key][index];\n        }\n      }\n    }\n  }\n  xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n  yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n\n  if (xIndex === -1) xIndex = 0;\n  if (yIndex === -1) yIndex = 0;\n\n  if (currentEntry.ntuples.first) {\n    if (currentEntry.ntuples.first.length > xIndex) {\n      spectrum.firstX = currentEntry.ntuples.first[xIndex];\n    }\n    if (currentEntry.ntuples.first.length > yIndex) {\n      spectrum.firstY = currentEntry.ntuples.first[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.last) {\n    if (currentEntry.ntuples.last.length > xIndex) {\n      spectrum.lastX = currentEntry.ntuples.last[xIndex];\n    }\n    if (currentEntry.ntuples.last.length > yIndex) {\n      spectrum.lastY = currentEntry.ntuples.last[yIndex];\n    }\n  }\n  if (\n    currentEntry.ntuples.vardim &&\n    currentEntry.ntuples.vardim.length > xIndex\n  ) {\n    spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n  }\n  if (currentEntry.ntuples.factor) {\n    if (currentEntry.ntuples.factor.length > xIndex) {\n      spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n    }\n    if (currentEntry.ntuples.factor.length > yIndex) {\n      spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.units) {\n    if (currentEntry.ntuples.units.length > xIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[xIndex]\n      ) {\n        spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n      } else {\n        spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n      }\n    }\n    if (currentEntry.ntuples.units.length > yIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[yIndex]\n      ) {\n        spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n      } else {\n        spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n      }\n    }\n  }\n}\n","export default function prepareSpectrum(spectrum) {\n  if (!spectrum.xFactor) spectrum.xFactor = 1;\n  if (!spectrum.yFactor) spectrum.yFactor = 1;\n}\n","import { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst numberRegExp = /^[-+]?[0-9]*\\.?[0-9]+(e[-+]?[0-9]+)?$/;\n\nclass Spectrum {}\n\nconst defaultOptions = {\n  keepRecordsRegExp: /^$/,\n  canonicDataLabels: true,\n  canonicMetadataLabels: false,\n  dynamicTyping: true,\n  withoutXY: false,\n  chromatogram: false,\n  keepSpectra: false,\n  noContour: false,\n  nbContourLevels: 7,\n  noiseMultiplier: 5,\n  profiling: false,\n};\n\n/**\n *\n * @param {text} jcamp\n * @param {object} [options]\n * @param {number} [options.keepRecordsRegExp=/^$/] By default we don't keep meta information\n * @param {number} [options.canonicDataLabels=true] Canonize the Labels (uppercase without symbol)\n * @param {number} [options.canonicMetadataLabels=false] Canonize the metadata Labels (uppercase without symbol)\n * @param {number} [options.dynamicTyping=false] Convert numbers to Number\n * @param {number} [options.withoutXY=false] Remove the XY data\n * @param {number} [options.chromatogram=false] Special post-processing for GC / HPLC / MS\n * @param {number} [options.keepSpectra=false] Force to keep the spectra in case of 2D\n * @param {number} [options.noContour=false] Don't calculate countour in case of 2D\n * @param {number} [options.nbContourLevels=7] Number of positive / negative contour levels to calculate\n * @param {number} [options.noiseMultiplier=5] Define for 2D the level as 5 times the median as default\n * @param {number} [options.profiling=false] Add profiling information\n */\n\nexport default function convert(jcamp, options = {}) {\n  options = Object.assign({}, defaultOptions, options);\n  options.wantXY = !options.withoutXY;\n  options.start = Date.now();\n\n  let entriesFlat = [];\n\n  let result = {\n    profiling: options.profiling ? [] : false,\n    logs: [],\n    entries: [],\n  };\n\n  let tmpResult = { children: [] };\n  let currentEntry = tmpResult;\n  let parentsStack = [];\n\n  let spectrum = new Spectrum();\n\n  if (typeof jcamp !== 'string') {\n    throw new TypeError('the JCAMP should be a string');\n  }\n\n  profiling(result, 'Before split to LDRS', options);\n\n  let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n\n  profiling(result, 'Split to LDRS', options);\n\n  if (ldrs[0]) ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n\n  for (let ldr of ldrs) {\n    // This is a new LDR\n    let position = ldr.indexOf('=');\n    let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n    let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n\n    let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n\n    if (canonicDataLabel === 'DATATABLE') {\n      let endLine = dataValue.indexOf('\\n');\n      if (endLine === -1) endLine = dataValue.indexOf('\\r');\n      if (endLine > 0) {\n        // ##DATA TABLE= (X++(I..I)), XYDATA\n        // We need to find the variables\n\n        let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n        prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n\n        spectrum.datatable = infos[0];\n        if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n          canonicDataLabel = 'PEAKTABLE';\n        } else if (\n          infos[1] &&\n          (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)\n        ) {\n          canonicDataLabel = 'XYDATA';\n          spectrum.deltaX =\n            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n        }\n      }\n    }\n\n    if (canonicDataLabel === 'XYDATA') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n        if (dataValue.match(/.*\\+\\+.*/)) {\n          // ex: (X++(Y..Y))\n          if (!spectrum.deltaX) {\n            spectrum.deltaX =\n              (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n          }\n          fastParseXYData(spectrum, dataValue, result);\n        } else {\n          parsePeakTable(spectrum, dataValue, result);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    } else if (canonicDataLabel === 'PEAKTABLE') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        parsePeakTable(spectrum, dataValue, result);\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n    if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n      if (options.wantXY) {\n        if (dataValue.match(/.*(XYA).*/)) {\n          // ex: (XYA)\n          parseXYA(spectrum, dataValue);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n\n    if (canonicDataLabel === 'TITLE') {\n      let parentEntry = currentEntry;\n      if (!parentEntry.children) {\n        parentEntry.children = [];\n      }\n      currentEntry = {\n        spectra: [],\n        ntuples: {},\n        info: {},\n        meta: {},\n        tmp: {}, // tmp information we need to keep for postprocessing\n      };\n      parentEntry.children.push(currentEntry);\n      parentsStack.push(parentEntry);\n      entriesFlat.push(currentEntry);\n      currentEntry.title = dataValue;\n    } else if (canonicDataLabel === 'DATATYPE') {\n      currentEntry.dataType = dataValue;\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'NTUPLES') {\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'DATACLASS') {\n      currentEntry.dataClass = dataValue;\n    } else if (canonicDataLabel === 'XUNITS') {\n      spectrum.xUnits = dataValue;\n    } else if (canonicDataLabel === 'YUNITS') {\n      spectrum.yUnits = dataValue;\n    } else if (canonicDataLabel === 'FIRSTX') {\n      spectrum.firstX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTX') {\n      spectrum.lastX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'FIRSTY') {\n      spectrum.firstY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTY') {\n      spectrum.lastY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'NPOINTS') {\n      spectrum.nbPoints = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'XFACTOR') {\n      spectrum.xFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'YFACTOR') {\n      spectrum.yFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXX') {\n      spectrum.maxX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINX') {\n      spectrum.minX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXY') {\n      spectrum.maxY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINY') {\n      spectrum.minY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'DELTAX') {\n      spectrum.deltaX = parseFloat(dataValue);\n    } else if (\n      canonicDataLabel === '.OBSERVEFREQUENCY' ||\n      canonicDataLabel === '$SFO1'\n    ) {\n      if (!spectrum.observeFrequency) {\n        spectrum.observeFrequency = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n      if (!spectrum.xType) {\n        currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n      }\n    } else if (canonicDataLabel === '$OFFSET') {\n      // OFFSET for Bruker spectra\n      currentEntry.shiftOffsetNum = 0;\n      if (!spectrum.shiftOffsetVal) {\n        spectrum.shiftOffsetVal = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '$REFERENCEPOINT') {\n      // OFFSET for Varian spectra\n      // if we activate this part it does not work for ACD specmanager\n      //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n      //                 var parts = dataValue.split(/ *, */);\n      //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n      //                 spectrum.shiftOffsetVal = parseFloat(parts[3].trim());\n    } else if (canonicDataLabel === 'VARNAME') {\n      currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'SYMBOL') {\n      currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARTYPE') {\n      currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARFORM') {\n      currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'VARDIM') {\n      currentEntry.ntuples.vardim = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'UNITS') {\n      currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n    } else if (canonicDataLabel === 'FACTOR') {\n      currentEntry.ntuples.factor = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'FIRST') {\n      currentEntry.ntuples.first = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'LAST') {\n      currentEntry.ntuples.last = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MIN') {\n      currentEntry.ntuples.min = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === 'MAX') {\n      currentEntry.ntuples.max = convertToFloatArray(\n        dataValue.split(ntuplesSeparatorRegExp),\n      );\n    } else if (canonicDataLabel === '.NUCLEUS') {\n      if (currentEntry.ntuples) {\n        currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n      }\n    } else if (canonicDataLabel === 'PAGE') {\n      spectrum.page = dataValue.trim();\n      spectrum.pageValue = parseFloat(dataValue.replace(/^.*=/, ''));\n      spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n    } else if (canonicDataLabel === 'RETENTIONTIME') {\n      spectrum.pageValue = parseFloat(dataValue);\n    } else if (isMSField(canonicDataLabel)) {\n      spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n    } else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n      spectrum.sampleDescription = dataValue;\n    } else if (canonicDataLabel.startsWith('$NUC')) {\n      if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n        currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n      }\n    } else if (canonicDataLabel === 'END') {\n      currentEntry = parentsStack.pop();\n    }\n\n    if (\n      currentEntry &&\n      currentEntry.info &&\n      currentEntry.meta &&\n      canonicDataLabel.match(options.keepRecordsRegExp)\n    ) {\n      let value = dataValue.trim();\n      let target, label;\n      if (dataLabel.startsWith('$')) {\n        label = options.canonicMetadataLabels\n          ? canonicDataLabel.substring(1)\n          : dataLabel.substring(1);\n        target = currentEntry.meta;\n      } else {\n        label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n        target = currentEntry.info;\n      }\n\n      if (options.dynamicTyping) {\n        if (value.match(numberRegExp)) {\n          value = Number.parseFloat(value);\n        }\n      }\n      if (target[label]) {\n        if (!Array.isArray(target[label])) {\n          target[label] = [target[label]];\n        }\n        target[label].push(value);\n      } else {\n        target[label] = value;\n      }\n    }\n  }\n\n  profiling(result, 'Finished parsing', options);\n\n  postProcessing(entriesFlat, result, options);\n\n  profiling(result, 'Total time', options);\n\n  /*\n  if (result.children && result.children.length>0) {\n    result = { ...result, ...result.children[0] };\n  }\n  */\n  result.entries = tmpResult.children;\n  result.flatten = entriesFlat;\n\n  return result;\n}\n","export function getJcampKind(data) {\n  let dataType = data.dataType.toLowerCase();\n  let yUnits = data.spectra[0].yUnits.toLowerCase();\n\n  if (dataType.match(/infrared/)) {\n    if (yUnits.match(/absorbance/)) {\n      return IR_ABSORBANCE;\n    } else {\n      return IR_TRANSMITTANCE;\n    }\n  }\n  return undefined;\n}\n\nexport const IR_TRANSMITTANCE = {\n  normalization: {},\n  importation: {\n    converter: (transmittance) => -Math.log10(transmittance),\n  },\n  kind: 'Infrared',\n  display: {\n    xLabel: 'wavelength [cm-1]',\n    xInverted: true,\n    yLabel: 'Absorbance',\n  },\n};\n\nexport const IR_ABSORBANCE = {\n  normalization: {},\n  kind: 'Infrared',\n  display: {\n    xLabel: 'wavelength [cm-1]',\n    xInverted: true,\n    yLabel: 'Absorbance',\n  },\n};\n\nexport const nmr1H = {\n  display: {\n    xLabel: 'δ [ppm]',\n    xInverted: true,\n    yLabel: 'Intensity',\n  },\n};\n\nexport const nmr13C = {\n  display: {\n    xLabel: 'δ [ppm]',\n    xInverted: true,\n    yLabel: 'Intensity',\n  },\n};\n","import { convert } from 'jcampconverter';\n\nimport { getJcampKind } from '../Kinds';\n/**\n * Create a spectrum from a jcamp\n * @param {string} jcampText - String containing the JCAMP data\n * @return {Spectrum} - new instance of Spectrum with the provided data\n */\nexport default function jcamp(jcampText) {\n  const parsed = convert(jcampText, { xy: true, keepRecordsRegExp: /TITLE/ })\n    .flatten[0];\n  const kind = getJcampKind(parsed);\n  const data = parsed.spectra[0].data;\n  const meta = parsed.info;\n  // we convert the data\n  if (kind && kind.importation && kind.importation.converter) {\n    data.y = data.y.map(kind.importation.converter);\n  }\n\n  return { data, kind, meta };\n}\n","/**\n * Creates a g\n * @param {string} text - String containing the text data\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] Field separator\n * @return {object} - {matrix, data, x, ids}\n */\nexport default function matrix(text, options = {}) {\n  const lines = text.split(/[\\r\\n]+/).filter((value) => value);\n  const { fs = '\\t' } = options;\n  let currentMatrix = [];\n  let ids = [];\n  let meta = [];\n  let x = [];\n\n  let headers = lines[0].split(fs);\n  let labels = [];\n\n  for (let i = 0; i < headers.length; i++) {\n    let header = headers[i];\n    if (isNaN(header)) {\n      labels[i] = header;\n    } else {\n      x = headers.slice(i).map((value) => Number(value));\n      break;\n    }\n  }\n\n  for (let i = 1; i < lines.length; i++) {\n    let line = lines[i];\n    let parts = line.split('\\t');\n    ids.push(parts[0]);\n    let oneMeta = {};\n    meta.push(oneMeta);\n    for (let j = 1; j < parts.length; j++) {\n      if (j < labels.length) {\n        oneMeta[labels[j]] = parts[j];\n      } else {\n        currentMatrix.push(\n          parts.slice(labels.length).map((value) => Number(value)),\n        );\n        break;\n      }\n    }\n  }\n  return { x, meta, matrix: currentMatrix, ids };\n}\n","\n/**\n * In place modification of the 2 arrays to make X unique and sum the Y if X has the same value\n * @param {object} [points={}] : Object of points contains property x (an array) and y (an array)\n * @return points\n */\n\nexport default function uniqueX(points = {}) {\n  const { x, y } = points;\n  if (x.length < 2) return;\n  if (x.length !== y.length) {\n    throw new Error('The X and Y arrays mush have the same length');\n  }\n\n  let current = x[0];\n  let counter = 0;\n\n  for (let i = 1; i < x.length; i++) {\n    if (current !== x[i]) {\n      counter++;\n      current = x[i];\n      x[counter] = x[i];\n      if (i !== counter) {\n        y[counter] = 0;\n      }\n    }\n    if (i !== counter) {\n      y[counter] += y[i];\n    }\n  }\n\n  x.length = counter + 1;\n  y.length = counter + 1;\n}\n","import uniqueXFunction from 'ml-arrayxy-uniquex';\n\n/**\n * Parse a text-file and convert it to an array of XY points\n * @param {string} text - csv or tsv strings\n * @param {object} [options={}]\n * @param {boolean} [options.rescale = false] - will set the maximum value to 1\n * @param {boolean} [options.uniqueX = false] - Make the X values unique (works only with 'xxyy' format). If the X value is repeated the sum of Y is done.\n * @param {number} [options.xColumn = 0] - A number that specifies the x column\n * @param {number} [options.yColumn = 1] - A number that specifies the y column\n * @param {number} [options.maxNumberColumns = (Math.max(xColumn, yColumn)+1)] - A number that specifies the maximum number of y columns\n * @param {number} [options.minNumberColumns = (Math.min(xColumn, yColumn)+1)] - A number that specifies the minimum number of y columns\n * @param {boolean} [options.keepInfo = false] - shoud we keep the non numeric lines. In this case the system will return an object {data, info}\n * @return {object{x:<Array<number>>,y:<Array<number>>}\n */\nexport function parseXY(text, options = {}) {\n  let {\n    rescale = false,\n    uniqueX = false,\n    xColumn = 0,\n    yColumn = 1,\n    keepInfo = false,\n    maxNumberColumns = Number.MAX_SAFE_INTEGER,\n    minNumberColumns = 2,\n  } = options;\n\n  maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n  minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n\n  let lines = text.split(/[\\r\\n]+/);\n\n  let maxY = Number.MIN_VALUE;\n  let result = { x: [], y: [] };\n  let info = [];\n  for (let l = 0; l < lines.length; l++) {\n    let line = lines[l].trim();\n    // we will consider only lines that contains only numbers\n    if (line.match(/[0-9]+/) && line.match(/^[0-9eE,;. \\t+-]+$/)) {\n      let fields = line.split(/,[; \\t]+|[; \\t]+/);\n      if (fields.length === 1) {\n        fields = line.split(/[,; \\t]+/);\n      }\n      if (\n        fields &&\n        fields.length >= minNumberColumns &&\n        fields.length <= maxNumberColumns\n      ) {\n        let x = parseFloat(fields[xColumn].replace(',', '.'));\n        let y = parseFloat(fields[yColumn].replace(',', '.'));\n\n        if (y > maxY) maxY = y;\n        result.x.push(x);\n        result.y.push(y);\n      }\n    } else if (line) {\n      info.push({ position: result.x.length, value: line });\n    }\n  }\n\n  if (uniqueX) {\n    uniqueXFunction(result);\n  }\n\n  if (rescale) {\n    for (let i = 0; i < result.y.length; i++) {\n      result.y[i] /= maxY;\n    }\n  }\n\n  if (!keepInfo) return result;\n\n  return {\n    info,\n    data: result,\n  };\n}\n","import { parseXY } from 'xy-parser';\n\n/**\n * Create a spectrum from a text file\n * @param {string} value - String containing the JCAMP data\n * @return {Spectrum} - new instance of Spectrum with the provided data\n */\nexport default function text(value, options = {}) {\n  const { kind, parserOptions = {} } = options;\n\n  const data = parseXY(value, parserOptions);\n\n  // we convert the data\n  if (kind && kind.importation && kind.importation.converter) {\n    data.y = data.y.map(kind.importation.converter);\n  }\n\n  return { data };\n}\n","import { xCorrelation } from 'ml-spectra-processing';\n\n/**\n * @private\n */\n\nexport function getAutocorrelation(normalized, index) {\n  let matrix = normalized.matrix;\n  let nbRow = matrix.length;\n  let nbColumn = matrix[0].length;\n  let array1 = new Float64Array(nbRow);\n  let array2 = new Float64Array(nbRow);\n  let result = new Array(nbColumn);\n  for (let j = 0; j < nbRow; j++) {\n    array1[j] = matrix[j][index];\n  }\n  for (let i = 0; i < nbColumn; i++) {\n    for (let j = 0; j < nbRow; j++) {\n      array2[j] = matrix[j][i];\n    }\n    result[i] = xCorrelation(array1, array2);\n  }\n  return {\n    x: normalized.x,\n    y: result,\n  };\n}\n","import { Matrix } from 'ml-matrix';\n\n/**\n * @private\n */\n\nexport function getMeanData(normalized) {\n  let matrix = new Matrix(normalized.matrix);\n  return {\n    x: normalized.x,\n    y: matrix.mean('column'),\n  };\n}\n","export function convertToText(data, options = {}) {\n  let { fs = '\\t', rs = '\\n' } = options;\n  let { matrix, meta, ids, x } = data;\n  let allKeysObject = {};\n  for (let metum of meta) {\n    if (metum) {\n      for (let key of Object.keys(metum)) {\n        let type = typeof metum[key];\n        if (type === 'number' || type === 'string' || type === 'boolean') {\n          allKeysObject[key] = true;\n        }\n      }\n    }\n  }\n  let allKeys = Object.keys(allKeysObject);\n\n  let lines = [];\n  let line = [];\n  line.push('id', ...allKeys, ...x);\n  lines.push(line.join(fs));\n\n  for (let i = 0; i < ids.length; i++) {\n    line = [];\n    line.push(ids[i]);\n    for (let key of allKeys) {\n      line.push(meta[i][key]);\n    }\n    line.push(...matrix[i]);\n    lines.push(line.join(fs));\n  }\n  return lines.join(rs);\n}\n","import { getNormalizedData } from './getNormalizedData.js';\nimport { convertToText } from './util/convertToText.js';\n/**\n * @private\n * @param {*} spectra\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] field separator\n * @param {string} [options.rs='\\n'] record (line) separator\n */\n\nexport function getNormalizedText(spectra, options = {}) {\n  let { fs = '\\t', rs = '\\n' } = options;\n\n  return convertToText(getNormalizedData(spectra), {\n    rs,\n    fs,\n  });\n}\n","!function(e){var t;\"object\"==typeof exports?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(\"undefined\"!=typeof window?t=window:\"undefined\"!=typeof global?t=global:\"undefined\"!=typeof self&&(t=self),t.objectHash=e())}(function(){return function o(i,u,a){function s(n,e){if(!u[n]){if(!i[n]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(n,!0);if(f)return f(n,!0);throw new Error(\"Cannot find module '\"+n+\"'\")}var r=u[n]={exports:{}};i[n][0].call(r.exports,function(e){var t=i[n][1][e];return s(t||e)},r,r.exports,o,i,u,a)}return u[n].exports}for(var f=\"function\"==typeof require&&require,e=0;e<a.length;e++)s(a[e]);return s}({1:[function(w,b,m){(function(e,t,f,n,r,o,i,u,a){\"use strict\";var s=w(\"crypto\");function l(e,t){return function(e,t){var n;n=\"passthrough\"!==t.algorithm?s.createHash(t.algorithm):new y;void 0===n.write&&(n.write=n.update,n.end=n.update);g(t,n).dispatch(e),n.update||n.end(\"\");if(n.digest)return n.digest(\"buffer\"===t.encoding?void 0:t.encoding);var r=n.read();return\"buffer\"!==t.encoding?r.toString(t.encoding):r}(e,t=h(e,t))}(m=b.exports=l).sha1=function(e){return l(e)},m.keys=function(e){return l(e,{excludeValues:!0,algorithm:\"sha1\",encoding:\"hex\"})},m.MD5=function(e){return l(e,{algorithm:\"md5\",encoding:\"hex\"})},m.keysMD5=function(e){return l(e,{algorithm:\"md5\",encoding:\"hex\",excludeValues:!0})};var c=s.getHashes?s.getHashes().slice():[\"sha1\",\"md5\"];c.push(\"passthrough\");var d=[\"buffer\",\"hex\",\"binary\",\"base64\"];function h(e,t){t=t||{};var n={};if(n.algorithm=t.algorithm||\"sha1\",n.encoding=t.encoding||\"hex\",n.excludeValues=!!t.excludeValues,n.algorithm=n.algorithm.toLowerCase(),n.encoding=n.encoding.toLowerCase(),n.ignoreUnknown=!0===t.ignoreUnknown,n.respectType=!1!==t.respectType,n.respectFunctionNames=!1!==t.respectFunctionNames,n.respectFunctionProperties=!1!==t.respectFunctionProperties,n.unorderedArrays=!0===t.unorderedArrays,n.unorderedSets=!1!==t.unorderedSets,n.unorderedObjects=!1!==t.unorderedObjects,n.replacer=t.replacer||void 0,n.excludeKeys=t.excludeKeys||void 0,void 0===e)throw new Error(\"Object argument required.\");for(var r=0;r<c.length;++r)c[r].toLowerCase()===n.algorithm.toLowerCase()&&(n.algorithm=c[r]);if(-1===c.indexOf(n.algorithm))throw new Error('Algorithm \"'+n.algorithm+'\"  not supported. supported values: '+c.join(\", \"));if(-1===d.indexOf(n.encoding)&&\"passthrough\"!==n.algorithm)throw new Error('Encoding \"'+n.encoding+'\"  not supported. supported values: '+d.join(\", \"));return n}function p(e){if(\"function\"==typeof e){return null!=/^function\\s+\\w*\\s*\\(\\s*\\)\\s*{\\s+\\[native code\\]\\s+}$/i.exec(Function.prototype.toString.call(e))}}function g(u,t,a){a=a||[];function s(e){return t.update?t.update(e,\"utf8\"):t.write(e,\"utf8\")}return{dispatch:function(e){return u.replacer&&(e=u.replacer(e)),this[\"_\"+(null===e?\"null\":typeof e)](e)},_object:function(t){var e=Object.prototype.toString.call(t),n=/\\[object (.*)\\]/i.exec(e);n=(n=n?n[1]:\"unknown:[\"+e+\"]\").toLowerCase();var r;if(0<=(r=a.indexOf(t)))return this.dispatch(\"[CIRCULAR:\"+r+\"]\");if(a.push(t),void 0!==f&&f.isBuffer&&f.isBuffer(t))return s(\"buffer:\"),s(t);if(\"object\"===n||\"function\"===n||\"asyncfunction\"===n){var o=Object.keys(t);u.unorderedObjects&&(o=o.sort()),!1===u.respectType||p(t)||o.splice(0,0,\"prototype\",\"__proto__\",\"constructor\"),u.excludeKeys&&(o=o.filter(function(e){return!u.excludeKeys(e)})),s(\"object:\"+o.length+\":\");var i=this;return o.forEach(function(e){i.dispatch(e),s(\":\"),u.excludeValues||i.dispatch(t[e]),s(\",\")})}if(!this[\"_\"+n]){if(u.ignoreUnknown)return s(\"[\"+n+\"]\");throw new Error('Unknown object type \"'+n+'\"')}this[\"_\"+n](t)},_array:function(e,t){t=void 0!==t?t:!1!==u.unorderedArrays;var n=this;if(s(\"array:\"+e.length+\":\"),!t||e.length<=1)return e.forEach(function(e){return n.dispatch(e)});var r=[],o=e.map(function(e){var t=new y,n=a.slice();return g(u,t,n).dispatch(e),r=r.concat(n.slice(a.length)),t.read().toString()});return a=a.concat(r),o.sort(),this._array(o,!1)},_date:function(e){return s(\"date:\"+e.toJSON())},_symbol:function(e){return s(\"symbol:\"+e.toString())},_error:function(e){return s(\"error:\"+e.toString())},_boolean:function(e){return s(\"bool:\"+e.toString())},_string:function(e){s(\"string:\"+e.length+\":\"),s(e.toString())},_function:function(e){s(\"fn:\"),p(e)?this.dispatch(\"[native]\"):this.dispatch(e.toString()),!1!==u.respectFunctionNames&&this.dispatch(\"function-name:\"+String(e.name)),u.respectFunctionProperties&&this._object(e)},_number:function(e){return s(\"number:\"+e.toString())},_xml:function(e){return s(\"xml:\"+e.toString())},_null:function(){return s(\"Null\")},_undefined:function(){return s(\"Undefined\")},_regexp:function(e){return s(\"regex:\"+e.toString())},_uint8array:function(e){return s(\"uint8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return s(\"uint8clampedarray:\"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return s(\"uint8array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return s(\"uint16array:\"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return s(\"uint16array:\"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return s(\"uint32array:\"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return s(\"uint32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return s(\"float32array:\"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return s(\"float64array:\"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return s(\"arraybuffer:\"),this.dispatch(new Uint8Array(e))},_url:function(e){return s(\"url:\"+e.toString())},_map:function(e){s(\"map:\");var t=Array.from(e);return this._array(t,!1!==u.unorderedSets)},_set:function(e){s(\"set:\");var t=Array.from(e);return this._array(t,!1!==u.unorderedSets)},_file:function(e){return s(\"file:\"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(u.ignoreUnknown)return s(\"[blob]\");throw Error('Hashing Blob objects is currently not supported\\n(see https://github.com/puleos/object-hash/issues/26)\\nUse \"options.replacer\" or \"options.ignoreUnknown\"\\n')},_domwindow:function(){return s(\"domwindow\")},_process:function(){return s(\"process\")},_timer:function(){return s(\"timer\")},_pipe:function(){return s(\"pipe\")},_tcp:function(){return s(\"tcp\")},_udp:function(){return s(\"udp\")},_tty:function(){return s(\"tty\")},_statwatcher:function(){return s(\"statwatcher\")},_securecontext:function(){return s(\"securecontext\")},_connection:function(){return s(\"connection\")},_zlib:function(){return s(\"zlib\")},_context:function(){return s(\"context\")},_nodescript:function(){return s(\"nodescript\")},_httpparser:function(){return s(\"httpparser\")},_dataview:function(){return s(\"dataview\")},_signal:function(){return s(\"signal\")},_fsevent:function(){return s(\"fsevent\")},_tlswrap:function(){return s(\"tlswrap\")}}}function y(){return{buf:\"\",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}m.writeToStream=function(e,t,n){return void 0===n&&(n=t,t={}),g(t=h(e,t),n).dispatch(e)}}).call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/fake_5812b7fb.js\",\"/\")},{buffer:3,crypto:5,lYpoI2:10}],2:[function(e,t,f){(function(e,t,n,r,o,i,u,a,s){!function(e){\"use strict\";var f=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,n=\"+\".charCodeAt(0),r=\"/\".charCodeAt(0),o=\"0\".charCodeAt(0),i=\"a\".charCodeAt(0),u=\"A\".charCodeAt(0),a=\"-\".charCodeAt(0),s=\"_\".charCodeAt(0);function l(e){var t=e.charCodeAt(0);return t===n||t===a?62:t===r||t===s?63:t<o?-1:t<o+10?t-o+26+26:t<u+26?t-u:t<i+26?t-i+26:void 0}e.toByteArray=function(e){var t,n;if(0<e.length%4)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.length,o=\"=\"===e.charAt(r-2)?2:\"=\"===e.charAt(r-1)?1:0,i=new f(3*e.length/4-o),u=0<o?e.length-4:e.length,a=0;function s(e){i[a++]=e}for(t=0;t<u;t+=4,0)s((16711680&(n=l(e.charAt(t))<<18|l(e.charAt(t+1))<<12|l(e.charAt(t+2))<<6|l(e.charAt(t+3))))>>16),s((65280&n)>>8),s(255&n);return 2==o?s(255&(n=l(e.charAt(t))<<2|l(e.charAt(t+1))>>4)):1==o&&(s((n=l(e.charAt(t))<<10|l(e.charAt(t+1))<<4|l(e.charAt(t+2))>>2)>>8&255),s(255&n)),i},e.fromByteArray=function(e){var t,n,r,o,i=e.length%3,u=\"\";function a(e){return\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".charAt(e)}for(t=0,r=e.length-i;t<r;t+=3)n=(e[t]<<16)+(e[t+1]<<8)+e[t+2],u+=a((o=n)>>18&63)+a(o>>12&63)+a(o>>6&63)+a(63&o);switch(i){case 1:u+=a((n=e[e.length-1])>>2),u+=a(n<<4&63),u+=\"==\";break;case 2:u+=a((n=(e[e.length-2]<<8)+e[e.length-1])>>10),u+=a(n>>4&63),u+=a(n<<2&63),u+=\"=\"}return u}}(void 0===f?this.base64js={}:f)}).call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/base64-js/lib/b64.js\",\"/node_modules/gulp-browserify/node_modules/base64-js/lib\")},{buffer:3,lYpoI2:10}],3:[function(O,e,H){(function(e,t,g,n,r,o,i,u,a){var s=O(\"base64-js\"),f=O(\"ieee754\");function g(e,t,n){if(!(this instanceof g))return new g(e,t,n);var r,o,i,u,a,s=typeof e;if(\"base64\"===t&&\"string\"==s)for(e=(r=e).trim?r.trim():r.replace(/^\\s+|\\s+$/g,\"\");e.length%4!=0;)e+=\"=\";if(\"number\"==s)o=x(e);else if(\"string\"==s)o=g.byteLength(e,t);else{if(\"object\"!=s)throw new Error(\"First argument needs to be a number, array or string.\");o=x(e.length)}if(g._useTypedArrays?i=g._augment(new Uint8Array(o)):((i=this).length=o,i._isBuffer=!0),g._useTypedArrays&&\"number\"==typeof e.byteLength)i._set(e);else if(S(a=e)||g.isBuffer(a)||a&&\"object\"==typeof a&&\"number\"==typeof a.length)for(u=0;u<o;u++)g.isBuffer(e)?i[u]=e.readUInt8(u):i[u]=e[u];else if(\"string\"==s)i.write(e,0,t);else if(\"number\"==s&&!g._useTypedArrays&&!n)for(u=0;u<o;u++)i[u]=0;return i}function y(e,t,n,r){return g._charsWritten=T(function(e){for(var t=[],n=0;n<e.length;n++)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function w(e,t,n,r){return g._charsWritten=T(function(e){for(var t,n,r,o=[],i=0;i<e.length;i++)t=e.charCodeAt(i),n=t>>8,r=t%256,o.push(r),o.push(n);return o}(t),e,n,r)}function l(e,t,n){var r=\"\";n=Math.min(e.length,n);for(var o=t;o<n;o++)r+=String.fromCharCode(e[o]);return r}function c(e,t,n,r){r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(null!=t,\"missing offset\"),D(t+1<e.length,\"Trying to read beyond buffer length\"));var o,i=e.length;if(!(i<=t))return n?(o=e[t],t+1<i&&(o|=e[t+1]<<8)):(o=e[t]<<8,t+1<i&&(o|=e[t+1])),o}function d(e,t,n,r){r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(null!=t,\"missing offset\"),D(t+3<e.length,\"Trying to read beyond buffer length\"));var o,i=e.length;if(!(i<=t))return n?(t+2<i&&(o=e[t+2]<<16),t+1<i&&(o|=e[t+1]<<8),o|=e[t],t+3<i&&(o+=e[t+3]<<24>>>0)):(t+1<i&&(o=e[t+1]<<16),t+2<i&&(o|=e[t+2]<<8),t+3<i&&(o|=e[t+3]),o+=e[t]<<24>>>0),o}function h(e,t,n,r){if(r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(null!=t,\"missing offset\"),D(t+1<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t)){var o=c(e,t,n,!0);return 32768&o?-1*(65535-o+1):o}}function p(e,t,n,r){if(r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(null!=t,\"missing offset\"),D(t+3<e.length,\"Trying to read beyond buffer length\")),!(e.length<=t)){var o=d(e,t,n,!0);return 2147483648&o?-1*(4294967295-o+1):o}}function b(e,t,n,r){return r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(t+3<e.length,\"Trying to read beyond buffer length\")),f.read(e,t,n,23,4)}function m(e,t,n,r){return r||(D(\"boolean\"==typeof n,\"missing or invalid endian\"),D(t+7<e.length,\"Trying to read beyond buffer length\")),f.read(e,t,n,52,8)}function v(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+1<e.length,\"trying to write beyond buffer length\"),N(t,65535));var i=e.length;if(!(i<=n))for(var u=0,a=Math.min(i-n,2);u<a;u++)e[n+u]=(t&255<<8*(r?u:1-u))>>>8*(r?u:1-u)}function _(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+3<e.length,\"trying to write beyond buffer length\"),N(t,4294967295));var i=e.length;if(!(i<=n))for(var u=0,a=Math.min(i-n,4);u<a;u++)e[n+u]=t>>>8*(r?u:3-u)&255}function E(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+1<e.length,\"Trying to write beyond buffer length\"),Y(t,32767,-32768)),e.length<=n||v(e,0<=t?t:65535+t+1,n,r,o)}function I(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+3<e.length,\"Trying to write beyond buffer length\"),Y(t,2147483647,-2147483648)),e.length<=n||_(e,0<=t?t:4294967295+t+1,n,r,o)}function A(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+3<e.length,\"Trying to write beyond buffer length\"),F(t,34028234663852886e22,-34028234663852886e22)),e.length<=n||f.write(e,t,n,r,23,4)}function B(e,t,n,r,o){o||(D(null!=t,\"missing value\"),D(\"boolean\"==typeof r,\"missing or invalid endian\"),D(null!=n,\"missing offset\"),D(n+7<e.length,\"Trying to write beyond buffer length\"),F(t,17976931348623157e292,-17976931348623157e292)),e.length<=n||f.write(e,t,n,r,52,8)}H.Buffer=g,H.SlowBuffer=g,H.INSPECT_MAX_BYTES=50,g.poolSize=8192,g._useTypedArrays=function(){try{var e=new ArrayBuffer(0),t=new Uint8Array(e);return t.foo=function(){return 42},42===t.foo()&&\"function\"==typeof t.subarray}catch(e){return!1}}(),g.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"raw\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},g.isBuffer=function(e){return!(null==e||!e._isBuffer)},g.byteLength=function(e,t){var n;switch(e+=\"\",t||\"utf8\"){case\"hex\":n=e.length/2;break;case\"utf8\":case\"utf-8\":n=C(e).length;break;case\"ascii\":case\"binary\":case\"raw\":n=e.length;break;case\"base64\":n=k(e).length;break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":n=2*e.length;break;default:throw new Error(\"Unknown encoding\")}return n},g.concat=function(e,t){if(D(S(e),\"Usage: Buffer.concat(list, [totalLength])\\nlist should be an Array.\"),0===e.length)return new g(0);if(1===e.length)return e[0];if(\"number\"!=typeof t)for(o=t=0;o<e.length;o++)t+=e[o].length;for(var n=new g(t),r=0,o=0;o<e.length;o++){var i=e[o];i.copy(n,r),r+=i.length}return n},g.prototype.write=function(e,t,n,r){var o;isFinite(t)?isFinite(n)||(r=n,n=void 0):(o=r,r=t,t=n,n=o),t=Number(t)||0;var i,u,a,s,f,l,c,d,h,p=this.length-t;switch((!n||p<(n=Number(n)))&&(n=p),r=String(r||\"utf8\").toLowerCase()){case\"hex\":i=function(e,t,n,r){n=Number(n)||0;var o=e.length-n;(!r||o<(r=Number(r)))&&(r=o);var i=t.length;D(i%2==0,\"Invalid hex string\"),i/2<r&&(r=i/2);for(var u=0;u<r;u++){var a=parseInt(t.substr(2*u,2),16);D(!isNaN(a),\"Invalid hex string\"),e[n+u]=a}return g._charsWritten=2*u,u}(this,e,t,n);break;case\"utf8\":case\"utf-8\":l=this,c=e,d=t,h=n,i=g._charsWritten=T(C(c),l,d,h);break;case\"ascii\":case\"binary\":i=y(this,e,t,n);break;case\"base64\":u=this,a=e,s=t,f=n,i=g._charsWritten=T(k(a),u,s,f);break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":i=w(this,e,t,n);break;default:throw new Error(\"Unknown encoding\")}return i},g.prototype.toString=function(e,t,n){var r,o,i,u,a=this;if(e=String(e||\"utf8\").toLowerCase(),t=Number(t)||0,(n=void 0!==n?Number(n):n=a.length)===t)return\"\";switch(e){case\"hex\":r=function(e,t,n){var r=e.length;(!t||t<0)&&(t=0);(!n||n<0||r<n)&&(n=r);for(var o=\"\",i=t;i<n;i++)o+=j(e[i]);return o}(a,t,n);break;case\"utf8\":case\"utf-8\":r=function(e,t,n){var r=\"\",o=\"\";n=Math.min(e.length,n);for(var i=t;i<n;i++)e[i]<=127?(r+=M(o)+String.fromCharCode(e[i]),o=\"\"):o+=\"%\"+e[i].toString(16);return r+M(o)}(a,t,n);break;case\"ascii\":case\"binary\":r=l(a,t,n);break;case\"base64\":o=a,u=n,r=0===(i=t)&&u===o.length?s.fromByteArray(o):s.fromByteArray(o.slice(i,u));break;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":r=function(e,t,n){for(var r=e.slice(t,n),o=\"\",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}(a,t,n);break;default:throw new Error(\"Unknown encoding\")}return r},g.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}},g.prototype.copy=function(e,t,n,r){if(n=n||0,r||0===r||(r=this.length),t=t||0,r!==n&&0!==e.length&&0!==this.length){D(n<=r,\"sourceEnd < sourceStart\"),D(0<=t&&t<e.length,\"targetStart out of bounds\"),D(0<=n&&n<this.length,\"sourceStart out of bounds\"),D(0<=r&&r<=this.length,\"sourceEnd out of bounds\"),r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o=r-n;if(o<100||!g._useTypedArrays)for(var i=0;i<o;i++)e[i+t]=this[i+n];else e._set(this.subarray(n,n+o),t)}},g.prototype.slice=function(e,t){var n=this.length;if(e=U(e,n,0),t=U(t,n,n),g._useTypedArrays)return g._augment(this.subarray(e,t));for(var r=t-e,o=new g(r,void 0,!0),i=0;i<r;i++)o[i]=this[i+e];return o},g.prototype.get=function(e){return console.log(\".get() is deprecated. Access using array indexes instead.\"),this.readUInt8(e)},g.prototype.set=function(e,t){return console.log(\".set() is deprecated. Access using array indexes instead.\"),this.writeUInt8(e,t)},g.prototype.readUInt8=function(e,t){if(t||(D(null!=e,\"missing offset\"),D(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return this[e]},g.prototype.readUInt16LE=function(e,t){return c(this,e,!0,t)},g.prototype.readUInt16BE=function(e,t){return c(this,e,!1,t)},g.prototype.readUInt32LE=function(e,t){return d(this,e,!0,t)},g.prototype.readUInt32BE=function(e,t){return d(this,e,!1,t)},g.prototype.readInt8=function(e,t){if(t||(D(null!=e,\"missing offset\"),D(e<this.length,\"Trying to read beyond buffer length\")),!(e>=this.length))return 128&this[e]?-1*(255-this[e]+1):this[e]},g.prototype.readInt16LE=function(e,t){return h(this,e,!0,t)},g.prototype.readInt16BE=function(e,t){return h(this,e,!1,t)},g.prototype.readInt32LE=function(e,t){return p(this,e,!0,t)},g.prototype.readInt32BE=function(e,t){return p(this,e,!1,t)},g.prototype.readFloatLE=function(e,t){return b(this,e,!0,t)},g.prototype.readFloatBE=function(e,t){return b(this,e,!1,t)},g.prototype.readDoubleLE=function(e,t){return m(this,e,!0,t)},g.prototype.readDoubleBE=function(e,t){return m(this,e,!1,t)},g.prototype.writeUInt8=function(e,t,n){n||(D(null!=e,\"missing value\"),D(null!=t,\"missing offset\"),D(t<this.length,\"trying to write beyond buffer length\"),N(e,255)),t>=this.length||(this[t]=e)},g.prototype.writeUInt16LE=function(e,t,n){v(this,e,t,!0,n)},g.prototype.writeUInt16BE=function(e,t,n){v(this,e,t,!1,n)},g.prototype.writeUInt32LE=function(e,t,n){_(this,e,t,!0,n)},g.prototype.writeUInt32BE=function(e,t,n){_(this,e,t,!1,n)},g.prototype.writeInt8=function(e,t,n){n||(D(null!=e,\"missing value\"),D(null!=t,\"missing offset\"),D(t<this.length,\"Trying to write beyond buffer length\"),Y(e,127,-128)),t>=this.length||(0<=e?this.writeUInt8(e,t,n):this.writeUInt8(255+e+1,t,n))},g.prototype.writeInt16LE=function(e,t,n){E(this,e,t,!0,n)},g.prototype.writeInt16BE=function(e,t,n){E(this,e,t,!1,n)},g.prototype.writeInt32LE=function(e,t,n){I(this,e,t,!0,n)},g.prototype.writeInt32BE=function(e,t,n){I(this,e,t,!1,n)},g.prototype.writeFloatLE=function(e,t,n){A(this,e,t,!0,n)},g.prototype.writeFloatBE=function(e,t,n){A(this,e,t,!1,n)},g.prototype.writeDoubleLE=function(e,t,n){B(this,e,t,!0,n)},g.prototype.writeDoubleBE=function(e,t,n){B(this,e,t,!1,n)},g.prototype.fill=function(e,t,n){if(e=e||0,t=t||0,n=n||this.length,\"string\"==typeof e&&(e=e.charCodeAt(0)),D(\"number\"==typeof e&&!isNaN(e),\"value is not a number\"),D(t<=n,\"end < start\"),n!==t&&0!==this.length){D(0<=t&&t<this.length,\"start out of bounds\"),D(0<=n&&n<=this.length,\"end out of bounds\");for(var r=t;r<n;r++)this[r]=e}},g.prototype.inspect=function(){for(var e=[],t=this.length,n=0;n<t;n++)if(e[n]=j(this[n]),n===H.INSPECT_MAX_BYTES){e[n+1]=\"...\";break}return\"<Buffer \"+e.join(\" \")+\">\"},g.prototype.toArrayBuffer=function(){if(\"undefined\"==typeof Uint8Array)throw new Error(\"Buffer.toArrayBuffer not supported in this browser\");if(g._useTypedArrays)return new g(this).buffer;for(var e=new Uint8Array(this.length),t=0,n=e.length;t<n;t+=1)e[t]=this[t];return e.buffer};var L=g.prototype;function U(e,t,n){return\"number\"!=typeof e?n:t<=(e=~~e)?t:0<=e||0<=(e+=t)?e:0}function x(e){return(e=~~Math.ceil(+e))<0?0:e}function S(e){return(Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)})(e)}function j(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function C(e){for(var t=[],n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<=127)t.push(e.charCodeAt(n));else{var o=n;55296<=r&&r<=57343&&n++;for(var i=encodeURIComponent(e.slice(o,n+1)).substr(1).split(\"%\"),u=0;u<i.length;u++)t.push(parseInt(i[u],16))}}return t}function k(e){return s.toByteArray(e)}function T(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);o++)t[o+n]=e[o];return o}function M(e){try{return decodeURIComponent(e)}catch(e){return String.fromCharCode(65533)}}function N(e,t){D(\"number\"==typeof e,\"cannot write a non-number as a number\"),D(0<=e,\"specified a negative value for writing an unsigned value\"),D(e<=t,\"value is larger than maximum value for type\"),D(Math.floor(e)===e,\"value has a fractional component\")}function Y(e,t,n){D(\"number\"==typeof e,\"cannot write a non-number as a number\"),D(e<=t,\"value larger than maximum allowed value\"),D(n<=e,\"value smaller than minimum allowed value\"),D(Math.floor(e)===e,\"value has a fractional component\")}function F(e,t,n){D(\"number\"==typeof e,\"cannot write a non-number as a number\"),D(e<=t,\"value larger than maximum allowed value\"),D(n<=e,\"value smaller than minimum allowed value\")}function D(e,t){if(!e)throw new Error(t||\"Failed assertion\")}g._augment=function(e){return e._isBuffer=!0,e._get=e.get,e._set=e.set,e.get=L.get,e.set=L.set,e.write=L.write,e.toString=L.toString,e.toLocaleString=L.toString,e.toJSON=L.toJSON,e.copy=L.copy,e.slice=L.slice,e.readUInt8=L.readUInt8,e.readUInt16LE=L.readUInt16LE,e.readUInt16BE=L.readUInt16BE,e.readUInt32LE=L.readUInt32LE,e.readUInt32BE=L.readUInt32BE,e.readInt8=L.readInt8,e.readInt16LE=L.readInt16LE,e.readInt16BE=L.readInt16BE,e.readInt32LE=L.readInt32LE,e.readInt32BE=L.readInt32BE,e.readFloatLE=L.readFloatLE,e.readFloatBE=L.readFloatBE,e.readDoubleLE=L.readDoubleLE,e.readDoubleBE=L.readDoubleBE,e.writeUInt8=L.writeUInt8,e.writeUInt16LE=L.writeUInt16LE,e.writeUInt16BE=L.writeUInt16BE,e.writeUInt32LE=L.writeUInt32LE,e.writeUInt32BE=L.writeUInt32BE,e.writeInt8=L.writeInt8,e.writeInt16LE=L.writeInt16LE,e.writeInt16BE=L.writeInt16BE,e.writeInt32LE=L.writeInt32LE,e.writeInt32BE=L.writeInt32BE,e.writeFloatLE=L.writeFloatLE,e.writeFloatBE=L.writeFloatBE,e.writeDoubleLE=L.writeDoubleLE,e.writeDoubleBE=L.writeDoubleBE,e.fill=L.fill,e.inspect=L.inspect,e.toArrayBuffer=L.toArrayBuffer,e}}).call(this,O(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},O(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/buffer/index.js\",\"/node_modules/gulp-browserify/node_modules/buffer\")},{\"base64-js\":2,buffer:3,ieee754:11,lYpoI2:10}],4:[function(c,d,e){(function(e,t,u,n,r,o,i,a,s){var u=c(\"buffer\").Buffer,f=4,l=new u(f);l.fill(0);d.exports={hash:function(e,t,n,r){return u.isBuffer(e)||(e=new u(e)),function(e,t,n){for(var r=new u(t),o=n?r.writeInt32BE:r.writeInt32LE,i=0;i<e.length;i++)o.call(r,e[i],4*i,!0);return r}(t(function(e,t){var n;e.length%f!=0&&(n=e.length+(f-e.length%f),e=u.concat([e,l],n));for(var r=[],o=t?e.readInt32BE:e.readInt32LE,i=0;i<e.length;i+=f)r.push(o.call(e,i));return r}(e,r),8*e.length),n,r)}}}).call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/helpers.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:10}],5:[function(w,e,b){(function(e,t,a,n,r,o,i,u,s){var a=w(\"buffer\").Buffer,f=w(\"./sha\"),l=w(\"./sha256\"),c=w(\"./rng\"),d={sha1:f,sha256:l,md5:w(\"./md5\")},h=64,p=new a(h);function g(e,r){var o=d[e=e||\"sha1\"],i=[];return o||y(\"algorithm:\",e,\"is not yet supported\"),{update:function(e){return a.isBuffer(e)||(e=new a(e)),i.push(e),e.length,this},digest:function(e){var t=a.concat(i),n=r?function(e,t,n){a.isBuffer(t)||(t=new a(t)),a.isBuffer(n)||(n=new a(n)),t.length>h?t=e(t):t.length<h&&(t=a.concat([t,p],h));for(var r=new a(h),o=new a(h),i=0;i<h;i++)r[i]=54^t[i],o[i]=92^t[i];var u=e(a.concat([r,n]));return e(a.concat([o,u]))}(o,r,t):o(t);return i=null,e?n.toString(e):n}}}function y(){var e=[].slice.call(arguments).join(\" \");throw new Error([e,\"we accept pull requests\",\"http://github.com/dominictarr/crypto-browserify\"].join(\"\\n\"))}p.fill(0),b.createHash=function(e){return g(e)},b.createHmac=g,b.randomBytes=function(e,t){if(!t||!t.call)return new a(c(e));try{t.call(this,void 0,new a(c(e)))}catch(e){t(e)}},function(e,t){for(var n in e)t(e[n],n)}([\"createCredentials\",\"createCipher\",\"createCipheriv\",\"createDecipher\",\"createDecipheriv\",\"createSign\",\"createVerify\",\"createDiffieHellman\",\"pbkdf2\"],function(e){b[e]=function(){y(\"sorry,\",e,\"is not implemented yet\")}})}).call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/index.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./md5\":6,\"./rng\":7,\"./sha\":8,\"./sha256\":9,buffer:3,lYpoI2:10}],6:[function(w,b,e){(function(e,t,n,r,o,i,u,a,s){var f=w(\"./helpers\");function l(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;for(var n=1732584193,r=-271733879,o=-1732584194,i=271733878,u=0;u<e.length;u+=16){var a=n,s=r,f=o,l=i,n=d(n,r,o,i,e[u+0],7,-680876936),i=d(i,n,r,o,e[u+1],12,-389564586),o=d(o,i,n,r,e[u+2],17,606105819),r=d(r,o,i,n,e[u+3],22,-1044525330);n=d(n,r,o,i,e[u+4],7,-176418897),i=d(i,n,r,o,e[u+5],12,1200080426),o=d(o,i,n,r,e[u+6],17,-1473231341),r=d(r,o,i,n,e[u+7],22,-45705983),n=d(n,r,o,i,e[u+8],7,1770035416),i=d(i,n,r,o,e[u+9],12,-1958414417),o=d(o,i,n,r,e[u+10],17,-42063),r=d(r,o,i,n,e[u+11],22,-1990404162),n=d(n,r,o,i,e[u+12],7,1804603682),i=d(i,n,r,o,e[u+13],12,-40341101),o=d(o,i,n,r,e[u+14],17,-1502002290),n=h(n,r=d(r,o,i,n,e[u+15],22,1236535329),o,i,e[u+1],5,-165796510),i=h(i,n,r,o,e[u+6],9,-1069501632),o=h(o,i,n,r,e[u+11],14,643717713),r=h(r,o,i,n,e[u+0],20,-373897302),n=h(n,r,o,i,e[u+5],5,-701558691),i=h(i,n,r,o,e[u+10],9,38016083),o=h(o,i,n,r,e[u+15],14,-660478335),r=h(r,o,i,n,e[u+4],20,-405537848),n=h(n,r,o,i,e[u+9],5,568446438),i=h(i,n,r,o,e[u+14],9,-1019803690),o=h(o,i,n,r,e[u+3],14,-187363961),r=h(r,o,i,n,e[u+8],20,1163531501),n=h(n,r,o,i,e[u+13],5,-1444681467),i=h(i,n,r,o,e[u+2],9,-51403784),o=h(o,i,n,r,e[u+7],14,1735328473),n=p(n,r=h(r,o,i,n,e[u+12],20,-1926607734),o,i,e[u+5],4,-378558),i=p(i,n,r,o,e[u+8],11,-2022574463),o=p(o,i,n,r,e[u+11],16,1839030562),r=p(r,o,i,n,e[u+14],23,-35309556),n=p(n,r,o,i,e[u+1],4,-1530992060),i=p(i,n,r,o,e[u+4],11,1272893353),o=p(o,i,n,r,e[u+7],16,-155497632),r=p(r,o,i,n,e[u+10],23,-1094730640),n=p(n,r,o,i,e[u+13],4,681279174),i=p(i,n,r,o,e[u+0],11,-358537222),o=p(o,i,n,r,e[u+3],16,-722521979),r=p(r,o,i,n,e[u+6],23,76029189),n=p(n,r,o,i,e[u+9],4,-640364487),i=p(i,n,r,o,e[u+12],11,-421815835),o=p(o,i,n,r,e[u+15],16,530742520),n=g(n,r=p(r,o,i,n,e[u+2],23,-995338651),o,i,e[u+0],6,-198630844),i=g(i,n,r,o,e[u+7],10,1126891415),o=g(o,i,n,r,e[u+14],15,-1416354905),r=g(r,o,i,n,e[u+5],21,-57434055),n=g(n,r,o,i,e[u+12],6,1700485571),i=g(i,n,r,o,e[u+3],10,-1894986606),o=g(o,i,n,r,e[u+10],15,-1051523),r=g(r,o,i,n,e[u+1],21,-2054922799),n=g(n,r,o,i,e[u+8],6,1873313359),i=g(i,n,r,o,e[u+15],10,-30611744),o=g(o,i,n,r,e[u+6],15,-1560198380),r=g(r,o,i,n,e[u+13],21,1309151649),n=g(n,r,o,i,e[u+4],6,-145523070),i=g(i,n,r,o,e[u+11],10,-1120210379),o=g(o,i,n,r,e[u+2],15,718787259),r=g(r,o,i,n,e[u+9],21,-343485551),n=y(n,a),r=y(r,s),o=y(o,f),i=y(i,l)}return Array(n,r,o,i)}function c(e,t,n,r,o,i){return y((u=y(y(t,e),y(r,i)))<<(a=o)|u>>>32-a,n);var u,a}function d(e,t,n,r,o,i,u){return c(t&n|~t&r,e,t,o,i,u)}function h(e,t,n,r,o,i,u){return c(t&r|n&~r,e,t,o,i,u)}function p(e,t,n,r,o,i,u){return c(t^n^r,e,t,o,i,u)}function g(e,t,n,r,o,i,u){return c(n^(t|~r),e,t,o,i,u)}function y(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}b.exports=function(e){return f.hash(e,l,16)}}).call(this,w(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},w(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/md5.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:10}],7:[function(e,c,t){(function(e,t,n,r,o,i,u,a,s){var f,l;l=function(e){for(var t,n=new Array(e),r=0;r<e;r++)0==(3&r)&&(t=4294967296*Math.random()),n[r]=t>>>((3&r)<<3)&255;return n},c.exports=f||l}).call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/rng.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{buffer:3,lYpoI2:10}],8:[function(c,d,e){(function(e,t,n,r,o,i,u,a,s){var f=c(\"./helpers\");function l(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var n,r,o,i,u,a=Array(80),s=1732584193,f=-271733879,l=-1732584194,c=271733878,d=-1009589776,h=0;h<e.length;h+=16){for(var p=s,g=f,y=l,w=c,b=d,m=0;m<80;m++){a[m]=m<16?e[h+m]:E(a[m-3]^a[m-8]^a[m-14]^a[m-16],1);var v=_(_(E(s,5),(o=f,i=l,u=c,(r=m)<20?o&i|~o&u:!(r<40)&&r<60?o&i|o&u|i&u:o^i^u)),_(_(d,a[m]),(n=m)<20?1518500249:n<40?1859775393:n<60?-1894007588:-899497514)),d=c,c=l,l=E(f,30),f=s,s=v}s=_(s,p),f=_(f,g),l=_(l,y),c=_(c,w),d=_(d,b)}return Array(s,f,l,c,d)}function _(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function E(e,t){return e<<t|e>>>32-t}d.exports=function(e){return f.hash(e,l,20,!0)}}).call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:10}],9:[function(c,d,e){(function(e,t,n,r,o,i,u,a,s){function B(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function L(e,t){return e>>>t|e<<32-t}function f(e,t){var n,r,o,i,u,a,s,f,l,c,d=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),h=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),p=new Array(64);e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;for(var g,y,w,b,m,v,_,E,I=0;I<e.length;I+=16){n=h[0],r=h[1],o=h[2],i=h[3],u=h[4],a=h[5],s=h[6],f=h[7];for(var A=0;A<64;A++)p[A]=A<16?e[A+I]:B(B(B((E=p[A-2],L(E,17)^L(E,19)^E>>>10),p[A-7]),(_=p[A-15],L(_,7)^L(_,18)^_>>>3)),p[A-16]),l=B(B(B(B(f,L(v=u,6)^L(v,11)^L(v,25)),(m=u)&a^~m&s),d[A]),p[A]),c=B(L(b=n,2)^L(b,13)^L(b,22),(g=n)&(y=r)^g&(w=o)^y&w),f=s,s=a,a=u,u=B(i,l),i=o,o=r,r=n,n=B(l,c);h[0]=B(n,h[0]),h[1]=B(r,h[1]),h[2]=B(o,h[2]),h[3]=B(i,h[3]),h[4]=B(u,h[4]),h[5]=B(a,h[5]),h[6]=B(s,h[6]),h[7]=B(f,h[7])}return h}var l=c(\"./helpers\");d.exports=function(e){return l.hash(e,f,32,!0)}}).call(this,c(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},c(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/crypto-browserify/sha256.js\",\"/node_modules/gulp-browserify/node_modules/crypto-browserify\")},{\"./helpers\":4,buffer:3,lYpoI2:10}],10:[function(e,l,t){(function(e,t,n,r,o,i,u,a,s){function f(){}(e=l.exports={}).nextTick=function(){var e=\"undefined\"!=typeof window&&window.setImmediate,t=\"undefined\"!=typeof window&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener(\"message\",function(e){var t=e.source;t!==window&&null!==t||\"process-tick\"!==e.data||(e.stopPropagation(),0<n.length&&n.shift()())},!0),function(e){n.push(e),window.postMessage(\"process-tick\",\"*\")}}return function(e){setTimeout(e,0)}}(),e.title=\"browser\",e.browser=!0,e.env={},e.argv=[],e.on=f,e.addListener=f,e.once=f,e.off=f,e.removeListener=f,e.removeAllListeners=f,e.emit=f,e.binding=function(e){throw new Error(\"process.binding is not supported\")},e.cwd=function(){return\"/\"},e.chdir=function(e){throw new Error(\"process.chdir is not supported\")}}).call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/gulp-browserify/node_modules/process/browser.js\",\"/node_modules/gulp-browserify/node_modules/process\")},{buffer:3,lYpoI2:10}],11:[function(e,t,f){(function(e,t,n,r,o,i,u,a,s){f.read=function(e,t,n,r,o){var i,u,a=8*o-r-1,s=(1<<a)-1,f=s>>1,l=-7,c=n?o-1:0,d=n?-1:1,h=e[t+c];for(c+=d,i=h&(1<<-l)-1,h>>=-l,l+=a;0<l;i=256*i+e[t+c],c+=d,l-=8);for(u=i&(1<<-l)-1,i>>=-l,l+=r;0<l;u=256*u+e[t+c],c+=d,l-=8);if(0===i)i=1-f;else{if(i===s)return u?NaN:1/0*(h?-1:1);u+=Math.pow(2,r),i-=f}return(h?-1:1)*u*Math.pow(2,i-r)},f.write=function(e,t,n,r,o,i){var u,a,s,f=8*i-o-1,l=(1<<f)-1,c=l>>1,d=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,p=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,u=l):(u=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-u))<1&&(u--,s*=2),2<=(t+=1<=u+c?d/s:d*Math.pow(2,1-c))*s&&(u++,s/=2),l<=u+c?(a=0,u=l):1<=u+c?(a=(t*s-1)*Math.pow(2,o),u+=c):(a=t*Math.pow(2,c-1)*Math.pow(2,o),u=0));8<=o;e[n+h]=255&a,h+=p,a/=256,o-=8);for(u=u<<o|a,f+=o;0<f;e[n+h]=255&u,h+=p,u/=256,f-=8);e[n+h-p]|=128*g}}).call(this,e(\"lYpoI2\"),\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"buffer\").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],\"/node_modules/ieee754/index.js\",\"/node_modules/ieee754\")},{buffer:3,lYpoI2:10}]},{},[1])(1)});","import { xFindClosestIndex } from 'ml-spectra-processing';\n\nexport function getFromToIndex(xs, range) {\n  let { from, to } = range;\n  if (from === undefined) {\n    from = xs[0];\n  }\n  if (to === undefined) {\n    to = xs[xs.length - 1];\n  }\n\n  return {\n    fromIndex: xFindClosestIndex(xs, from),\n    toIndex: xFindClosestIndex(xs, to),\n  };\n}\n","import { xSum, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function integration(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xSum(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xSum(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMaxValue, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function max(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xMaxValue(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xMaxValue(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMinValue, xMultiply } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function min(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n\n  let targetValue = xMinValue(normalizedTarget.y, fromToIndex);\n  let values = matrix.map((row) => xMinValue(row, fromToIndex));\n\n  for (let i = 0; i < matrix.length; i++) {\n    let factor = targetValue / values[i];\n    matrix[i] = xMultiply(matrix[i], factor);\n  }\n}\n","import { xMinValue, xMaxValue } from 'ml-spectra-processing';\n\nimport { getFromToIndex } from './getFromToIndex';\n\nexport function minMax(matrix, normalizedTarget, range = {}) {\n  let fromToIndex = getFromToIndex(normalizedTarget.x, range);\n  let targetValue = {\n    min: xMinValue(normalizedTarget.y, fromToIndex),\n    max: xMaxValue(normalizedTarget.y, fromToIndex),\n  };\n\n  let deltaTarget = targetValue.max - targetValue.min;\n  let minTarget = targetValue.min;\n\n  let values = matrix.map((row) => {\n    return {\n      min: xMinValue(row, fromToIndex),\n      max: xMaxValue(row, fromToIndex),\n    };\n  });\n  for (let i = 0; i < matrix.length; i++) {\n    let deltaSource = values[i].max - values[i].min;\n    let minSource = values[i].min;\n    let newData = [];\n    for (let j = 0; j < normalizedTarget.y.length; j++) {\n      newData.push(\n        ((matrix[i][j] - minSource) / deltaSource) * deltaTarget + minTarget,\n      );\n    }\n    matrix[i] = newData;\n  }\n}\n","import {\n  xSubtract,\n  xyMaxYPoint,\n  xSum,\n  matrixPQN,\n  matrixYRescale,\n  matrixCenterYMean,\n} from 'ml-spectra-processing';\nimport hash from 'object-hash';\n\nimport { getNormalizedData } from './getNormalizedData';\nimport { getFromToIndex } from './scaled/getFromToIndex';\nimport { integration } from './scaled/integration';\nimport { max } from './scaled/max';\nimport { min } from './scaled/min';\nimport { minMax } from './scaled/minMax';\n/**\n * Allows to calculate relative intensity between normalized spectra\n * @param {SpectraProcessor} spectraProcessor\n * @param {object}   [options={}] scale spectra based on various parameters\n * @param {Array}    [options.ids] ids of selected spectra\n * @param {Array}    [options.filters=[]] Array of object containing {name:'', options:''}\n * @param {object}   [options.scale={}] object containing the options for rescaling\n * @param {string}   [options.scale.targetID=spectra[0].id]\n * @param {string}   [options.scale.method='max'] min, max, integration, minMax\n * @param {Array}    [options.scale.range] from - to to apply the method and rescale\n * @param {boolean}  [options.scale.relative=false]\n * @param {Array}    [options.ranges] Array of object containing {from:'', to:'', label:''}\n * @param {Array}    [options.calculations] Array of object containing {label:'', formula:''}\n * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[], ranges:[object] }\n */\n\nlet cache = {};\n\nexport function getPostProcessedData(spectraProcessor, options = {}) {\n  /**\n   * could implement a cache if all the options are identical and the normalized data is identical as well\n   * in order ot check if the normalized data are identical we should check if the normalized array of all the spectra are identical\n   * Because we don't make in-place modification when creating normalized array we can check if the 'pointer' to the object\n   * is identical\n   */\n\n  const optionsHash = hash(options);\n\n  if (!spectraProcessor.spectra || !spectraProcessor.spectra[0]) return {};\n  const { scale = {}, ids, ranges, calculations, filters = [] } = options;\n\n  const { range, targetID, relative, method = '' } = scale;\n\n  let spectra = spectraProcessor.getSpectra(ids);\n\n  // are we able to reuse the cache ?\n  // we can if the normalized information didn't change and optionsHash is the same\n  if (cache.optionsHash === optionsHash) {\n    let validCache = true;\n    for (let spectrum of spectra) {\n      if (!cache.weakMap.get(spectrum.normalized)) validCache = false;\n    }\n    if (validCache) return cache;\n  }\n  const weakMap = new WeakMap();\n  for (let spectrum of spectra) {\n    weakMap.set(spectrum.normalized, true);\n  }\n\n  let normalizedData = getNormalizedData(spectra);\n\n  for (let filter of filters) {\n    switch (filter.name) {\n      case 'pqn': {\n        normalizedData.matrix = matrixPQN(\n          normalizedData.matrix,\n          filter.options,\n        ).data;\n        break;\n      }\n      case 'centerMean': {\n        normalizedData.matrix = matrixCenterYMean(normalizedData.matrix);\n        break;\n      }\n      case 'rescale': {\n        normalizedData.matrix = matrixYRescale(\n          normalizedData.matrix,\n          filter.options,\n        );\n        break;\n      }\n      case '':\n      case undefined:\n        break;\n      default:\n        throw new Error(`Unknown matrix filter name: ${filter.name}`);\n    }\n  }\n\n  let normalizedTarget = targetID\n    ? spectraProcessor.getSpectrum(targetID).normalized\n    : spectraProcessor.spectra[0].normalized;\n\n  if (method) {\n    switch (method.toLowerCase()) {\n      case 'min':\n        min(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'max':\n        max(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'minmax':\n        minMax(normalizedData.matrix, normalizedTarget, range);\n        break;\n      case 'integration':\n        integration(normalizedData.matrix, normalizedTarget, range);\n        break;\n      default:\n        throw new Error(`getPostProcessedData: unknown method: ${method}`);\n    }\n  }\n\n  if (relative) {\n    for (let i = 0; i < normalizedData.matrix.length; i++) {\n      normalizedData.matrix[i] = xSubtract(\n        normalizedData.matrix[i],\n        normalizedTarget.y,\n      );\n    }\n  }\n\n  if (ranges) {\n    normalizedData.ranges = [];\n    for (let i = 0; i < normalizedData.matrix.length; i++) {\n      let rangesCopy = JSON.parse(JSON.stringify(ranges));\n      let yNormalized = normalizedData.matrix[i];\n      let resultRanges = {};\n      normalizedData.ranges.push(resultRanges);\n      for (let currentRange of rangesCopy) {\n        if (currentRange.label) {\n          let fromToIndex = getFromToIndex(normalizedTarget.x, currentRange);\n\n          let deltaX = normalizedTarget.x[1] - normalizedTarget.x[0];\n\n          currentRange.integration = xSum(yNormalized, fromToIndex) * deltaX;\n          currentRange.maxPoint = xyMaxYPoint(\n            { x: normalizedData.x, y: yNormalized },\n            fromToIndex,\n          );\n          resultRanges[currentRange.label] = currentRange;\n        }\n      }\n    }\n  }\n\n  if (calculations && normalizedData.ranges) {\n    normalizedData.calculations = normalizedData.ranges.map(() => {\n      return {};\n    });\n    const parameters = Object.keys(normalizedData.ranges[0]);\n    for (let calculation of calculations) {\n      // eslint-disable-next-line no-new-func\n      const callback = new Function(\n        ...parameters,\n        `return ${calculation.formula}`,\n      );\n      for (let i = 0; i < normalizedData.ranges.length; i++) {\n        let oneRanges = normalizedData.ranges[i];\n        let values = parameters.map((key) => oneRanges[key].integration);\n        normalizedData.calculations[i][calculation.label] = callback(...values);\n      }\n    }\n  }\n\n  cache = { ...normalizedData, optionsHash, weakMap };\n  return cache;\n}\n","import { getPostProcessedData } from './getPostProcessedData.js';\nimport { convertToText } from './util/convertToText.js';\n\n/**\n * @private\n * @param {SpectraProcessor} spectraProcessor\n * @param {object} [options={}]\n * @param {string} [options.fs='\\t'] field separator\n * @param {string} [options.rs='\\n'] record (line) separator\n * @param {object} [options.postProcessing={}] post processing options\n */\n\nexport function getPostProcessedText(spectraProcessor, options = {}) {\n  let {\n    fs = '\\t',\n    rs = '\\n',\n    postProcessing: postProcessingOptions = {},\n  } = options;\n  return convertToText(\n    getPostProcessedData(spectraProcessor, postProcessingOptions),\n    {\n      rs,\n      fs,\n    },\n  );\n}\n","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","import filterX from 'ml-array-xy-filter-x';\n\n/**\n *\n * @private\n * @param {Spectrum} spectrum\n * @param {object} [options.xFilter={}]\n * @param {array} [options.xFilter.from]\n * @param {array} [options.xFilter.to]\n * @param {array} [options.xFilter.exclusions=[]]\n * @param {array} [options.yFactor=1]\n */\n\nexport function getData(spectrum, options = {}) {\n  const { xFilter = {}, yFactor = 1 } = options;\n  let data = { x: spectrum.x, y: spectrum.y };\n\n  if (xFilter) {\n    data = filterX({ x: spectrum.x, y: spectrum.y }, xFilter);\n  }\n  if (yFactor && yFactor !== 1) {\n    data.y = data.y.map((y) => y * yFactor);\n  }\n  return data;\n}\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport sum from 'ml-array-sum';\n\nfunction norm(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$algorithm = options.algorithm,\n      algorithm = _options$algorithm === void 0 ? 'absolute' : _options$algorithm,\n      _options$sumValue = options.sumValue,\n      sumValue = _options$sumValue === void 0 ? 1 : _options$sumValue,\n      _options$maxValue = options.maxValue,\n      maxValue = _options$maxValue === void 0 ? 1 : _options$maxValue;\n\n  if (!isArray(input)) {\n    throw new Error('input must be an array');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  if (input.length === 0) {\n    throw new Error('input must not be empty');\n  }\n\n  switch (algorithm.toLowerCase()) {\n    case 'absolute':\n      {\n        var absoluteSumValue = absoluteSum(input) / sumValue;\n        if (absoluteSumValue === 0) return input.slice(0);\n\n        for (var i = 0; i < input.length; i++) {\n          output[i] = input[i] / absoluteSumValue;\n        }\n\n        return output;\n      }\n\n    case 'max':\n      {\n        var currentMaxValue = max(input);\n        if (currentMaxValue === 0) return input.slice(0);\n        var factor = maxValue / currentMaxValue;\n\n        for (var _i = 0; _i < input.length; _i++) {\n          output[_i] = input[_i] * factor;\n        }\n\n        return output;\n      }\n\n    case 'sum':\n      {\n        var sumFactor = sum(input) / sumValue;\n        if (sumFactor === 0) return input.slice(0);\n\n        for (var _i2 = 0; _i2 < input.length; _i2++) {\n          output[_i2] = input[_i2] / sumFactor;\n        }\n\n        return output;\n      }\n\n    default:\n      throw new Error(\"norm: unknown algorithm: \".concat(algorithm));\n  }\n}\n\nfunction absoluteSum(input) {\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += Math.abs(input[i]);\n  }\n\n  return sumValue;\n}\n\nexport default norm;\n","import isArray from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\r\n * Fill an array with sequential numbers\r\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\r\n * @param {object} [options={}]\r\n * @param {number} [options.from=0] - first value in the array\r\n * @param {number} [options.to=10] - last value in the array\r\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\r\n * @param {number} [options.step] - if not provided calculated from size\r\n * @return {Array<number>}\r\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport default sequentialFill;\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function normalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let i = 1; i < zones.length; i++) {\n    let zone = zones[i];\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { normalize } from './normalize';\n\n/**\n * Convert an array of exclusions and keep only from / to\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [exclusions=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of zones (after inversion)\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of zones (after inversion)\n */\n\nexport function invert(exclusions = [], options = {}) {\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  exclusions = normalize(exclusions, { from, to });\n  if (exclusions.length === 0) return [{ from, to }];\n\n  let zones = [];\n  for (let i = 0; i < exclusions.length; i++) {\n    let exclusion = exclusions[i];\n    let nextExclusion = exclusions[i + 1];\n    if (i === 0) {\n      if (exclusion.from > from) {\n        zones.push({ from, to: exclusion.from });\n      }\n    }\n    if (i === exclusions.length - 1) {\n      if (exclusion.to < to) {\n        zones.push({ from: exclusion.to, to });\n      }\n    } else {\n      zones.push({ from: exclusion.to, to: nextExclusion.from });\n    }\n  }\n\n  return zones;\n}\n","import { normalize } from './normalize';\n\n/**\n * Add the number of points per zone to reach a specified total\n * @param {Array} [zones=[]]\n * @param {number} [numberOfPoints] Total number of points to distribute between zones\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function zonesWithPoints(zones, numberOfPoints, options = {}) {\n  if (zones.length === 0) return zones;\n  zones = normalize(zones, options);\n\n  const totalSize = zones.reduce((previous, current) => {\n    return previous + (current.to - current.from);\n  }, 0);\n\n  let unitsPerPoint = totalSize / numberOfPoints;\n  let currentTotal = 0;\n  for (let i = 0; i < zones.length - 1; i++) {\n    let zone = zones[i];\n    zone.numberOfPoints = Math.min(\n      Math.round((zone.to - zone.from) / unitsPerPoint),\n      numberOfPoints - currentTotal,\n    );\n    currentTotal += zone.numberOfPoints;\n  }\n\n  zones[zones.length - 1].numberOfPoints = numberOfPoints - currentTotal;\n\n  return zones;\n}\n","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param {number} x0\n * @param {number} x1\n * @param {number} slope\n * @param {number} intercept\n * @return {number} integral value.\n */\nexport default function integral(x0, x1, slope, intercept) {\n  return (\n    0.5 * slope * x1 * x1 +\n    intercept * x1 -\n    (0.5 * slope * x0 * x0 + intercept * x0)\n  );\n}\n","import integral from './integral';\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n\n  let output = new Array(numberOfPoints);\n\n  let initialOriginalStep = x[1] - x[0];\n  let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n\n  // Init main variables\n  let min = from - halfStep;\n  let max = from + halfStep;\n\n  let previousX = Number.MIN_VALUE;\n  let previousY = 0;\n  let nextX = x[0] - initialOriginalStep;\n  let nextY = 0;\n\n  let currentValue = 0;\n  let slope = 0;\n  let intercept = 0;\n  let sumAtMin = 0;\n  let sumAtMax = 0;\n\n  let i = 0; // index of input\n  let j = 0; // index of output\n\n  function getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n  }\n\n  let add = 0;\n  main: while (true) {\n    if (previousX <= min && min <= nextX) {\n      add = integral(0, min - previousX, slope, previousY);\n      sumAtMin = currentValue + add;\n    }\n\n    while (nextX - max >= 0) {\n      // no overlap with original point, just consume current value\n      add = integral(0, max - previousX, slope, previousY);\n      sumAtMax = currentValue + add;\n\n      output[j++] = (sumAtMax - sumAtMin) / step;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      sumAtMin = sumAtMax;\n    }\n\n    currentValue += integral(previousX, nextX, slope, intercept);\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else if (i === xLength) {\n      nextX += lastOriginalStep;\n      nextY = 0;\n    }\n\n    slope = getSlope(previousX, previousY, nextX, nextY);\n    intercept = -slope * previousX + previousY;\n  }\n\n  return output;\n}\n","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n  let lastStep = x[x.length - 1] - x[x.length - 2];\n\n  let start = from - halfStep;\n  let output = new Array(numberOfPoints);\n\n  // Init main variables\n  let min = start;\n  let max = start + step;\n\n  let previousX = -Number.MAX_VALUE;\n  let previousY = 0;\n  let nextX = x[0];\n  let nextY = y[0];\n  let frontOutsideSpectra = 0;\n  let backOutsideSpectra = true;\n\n  let currentValue = 0;\n\n  // for slot algorithm\n  let currentPoints = 0;\n\n  let i = 1; // index of input\n  let j = 0; // index of output\n\n  main: while (true) {\n    if (previousX >= nextX) throw new Error('x must be an increasing serie');\n    while (previousX - max > 0) {\n      // no overlap with original point, just consume current value\n      if (backOutsideSpectra) {\n        currentPoints++;\n        backOutsideSpectra = false;\n      }\n\n      output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n      j++;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      currentValue = 0;\n      currentPoints = 0;\n    }\n\n    if (previousX > min) {\n      currentValue += previousY;\n      currentPoints++;\n    }\n\n    if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n      currentPoints--;\n    }\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else {\n      nextX += lastStep;\n      nextY = 0;\n      frontOutsideSpectra++;\n    }\n  }\n\n  return output;\n}\n","import sequentialFill from 'ml-array-sequential-fill';\nimport { zonesWithPoints, invert } from 'ml-zones';\n\nimport equallySpacedSmooth from './equallySpacedSmooth';\nimport equallySpacedSlot from './equallySpacedSlot';\n\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in the new array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in the new array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param {object} [arrayXY={}] - object containing 2 properties x and y (both an array)\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {string} [options.variant='smooth']\n * @param {number} [options.numberOfPoints=100]\n * @param {Array} [options.exclusions=[]] array of from / to that should be skipped for the generation of the points\n * @param {Array} [options.zones=[]] array of from / to that should be kept\n * @return {object<x: Array, y:Array>} new object with x / y array with the equally spaced data.\n */\n\nexport default function equallySpaced(arrayXY = {}, options = {}) {\n  let { x, y } = arrayXY;\n  let xLength = x.length;\n  let reverse = false;\n  if (x.length > 1 && x[0] > x[1]) {\n    x = x.slice().reverse();\n    y = y.slice().reverse();\n    reverse = true;\n  }\n\n  let {\n    from = x[0],\n    to = x[xLength - 1],\n    variant = 'smooth',\n    numberOfPoints = 100,\n    exclusions = [],\n    zones = [],\n  } = options;\n\n  if (xLength !== y.length) {\n    throw new RangeError(\"the x and y vector doesn't have the same size.\");\n  }\n\n  if (typeof from !== 'number' || isNaN(from)) {\n    throw new RangeError(\"'from' option must be a number\");\n  }\n\n  if (typeof to !== 'number' || isNaN(to)) {\n    throw new RangeError(\"'to' option must be a number\");\n  }\n\n  if (typeof numberOfPoints !== 'number' || isNaN(numberOfPoints)) {\n    throw new RangeError(\"'numberOfPoints' option must be a number\");\n  }\n\n  if (numberOfPoints < 2) {\n    throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n  }\n\n  if (zones.length === 0) {\n    zones = invert(exclusions, { from, to });\n  }\n\n  zones = zonesWithPoints(zones, numberOfPoints, { from, to });\n\n  let xResult = [];\n  let yResult = [];\n  for (let zone of zones) {\n    let zoneResult = processZone(\n      x,\n      y,\n      zone.from,\n      zone.to,\n      zone.numberOfPoints,\n      variant,\n      reverse,\n    );\n\n    xResult = xResult.concat(zoneResult.x);\n    yResult = yResult.concat(zoneResult.y);\n  }\n  if (reverse) {\n    if (from < to) {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    } else {\n      return { x: xResult, y: yResult };\n    }\n  } else {\n    if (from < to) {\n      return { x: xResult, y: yResult };\n    } else {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    }\n  }\n}\n\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n  if (numberOfPoints < 1) {\n    throw new RangeError('the number of points must be at least 1');\n  }\n\n  let output =\n    variant === 'slot'\n      ? equallySpacedSlot(x, y, from, to, numberOfPoints)\n      : equallySpacedSmooth(x, y, from, to, numberOfPoints);\n\n  return {\n    x: sequentialFill({\n      from,\n      to,\n      size: numberOfPoints,\n    }),\n    y: output,\n  };\n}\n","import isAnyArray from 'is-any-array';\nimport normed from 'ml-array-normed';\nimport rescale from 'ml-array-rescale';\nimport equallySpaced from 'ml-array-xy-equally-spaced';\nimport sg from 'ml-savitzky-golay-generalized';\nimport { xAdd, xyCalibrate, xParetoNormalization } from 'ml-spectra-processing';\nimport Stat, { minMax } from 'ml-stat/array';\n\n/**\n *\n * @private\n * @param {DataXY} spectrum\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {number} [options.numberOfPoints=1024]\n * @param {array} [options.filters=[]]\n * @param {array} [options.exclusions=[]]\n */\nexport function getNormalized(spectrum, options = {}) {\n  if (!isAnyArray(spectrum.x) || !isAnyArray(spectrum.y)) {\n    throw new Error(\n      'getNormalized: Can not get normalized data, missing original data.',\n    );\n  }\n\n  let xs = spectrum.x;\n  let {\n    from = xs[0],\n    to = xs[xs.length - 1],\n    numberOfPoints = 1024,\n    filters = [],\n    exclusions = [],\n  } = options;\n\n  let ys = spectrum.y.slice(0);\n\n  for (let filter of filters) {\n    let filterOptions = filter.options;\n    switch (filter.name) {\n      case 'centerMean': {\n        let mean = Stat.mean(spectrum.y);\n        for (let i = 0; i < ys.length; i++) {\n          ys[i] -= mean;\n        }\n        break;\n      }\n      case 'scaleSD': {\n        let std = Stat.standardDeviation(spectrum.y);\n        for (let i = 0; i < ys.length; i++) {\n          ys[i] /= std;\n        }\n        break;\n      }\n      case 'pareto': {\n        ys = xParetoNormalization(ys);\n        break;\n      }\n      case 'normalize': {\n        ys = normed(ys);\n        break;\n      }\n      case 'rescale': {\n        ys = rescale(ys);\n        break;\n      }\n      case 'calibrate': {\n        if (\n          filterOptions.from === undefined ||\n          filterOptions.to === undefined\n        ) {\n          break;\n        }\n        let shift = xyCalibrate(\n          { x: xs, y: ys },\n          { from: filterOptions.from, to: filterOptions.to },\n          { nbPeaks: filterOptions.nbPeaks, targetX: filterOptions.targetX },\n        );\n        xs = xAdd(xs, shift);\n        break;\n      }\n      case 'sg': {\n        ys = sg(ys, xs, filterOptions);\n        break;\n      }\n      case 'xFunction': {\n        xs = applyArrayFunction(xs, 'x', filterOptions.function);\n        break;\n      }\n      case 'yFunction': {\n        ys = applyArrayFunction(ys, 'y', filterOptions.function);\n        break;\n      }\n      case '':\n      case undefined:\n        break;\n      default:\n        throw new Error(`Unknown filter kind: ${filter.name}`);\n    }\n  }\n\n  const allowedBoundary = {\n    x: {\n      min: xs[0],\n      max: xs[xs.length - 1],\n    },\n    y: minMax(ys),\n  };\n\n  let data = equallySpaced(\n    { x: xs, y: ys },\n    { from, to, numberOfPoints, exclusions },\n  );\n\n  return {\n    data,\n    allowedBoundary,\n  };\n}\n\nfunction applyArrayFunction(array, variableLabel, fctString) {\n  if (!fctString) fctString = variableLabel;\n  fctString = fctString\n    .replace(/(^|\\W)([a-z]{2,})/g, '$1Math.$2')\n    .replace(/Math\\.Math/g, 'Math');\n  // eslint-disable-next-line no-new-func\n  let fct = new Function(variableLabel, `return Number(${fctString})`);\n  array = array.slice();\n  for (let i = 0; i < array.length; i++) {\n    array[i] = fct(array[i]);\n    if (isNaN(array[i])) {\n      throw Error(\n        `The callback ${fctString} does not return a number: ${array[i]}`,\n      );\n    }\n  }\n  return array;\n}\n","import {\n  xyIntegration,\n  xyMaxYPoint,\n  xyMinYPoint,\n  xFindClosestIndex,\n} from 'ml-spectra-processing';\n\n/**\n * @private\n * @param {*} spectrum\n * @param {*} ranges\n */\nexport function updateRangesInfo(spectrum, ranges = []) {\n  spectrum.ranges = {};\n  for (let range of ranges) {\n    range = JSON.parse(JSON.stringify(range));\n    spectrum.ranges[range.label] = range;\n    let fromToIndex = {\n      fromIndex: xFindClosestIndex(spectrum.normalized.x, range.from),\n      toIndex: xFindClosestIndex(spectrum.normalized.x, range.to),\n    };\n    range.integration = xyIntegration(spectrum.normalized, fromToIndex);\n    range.maxPoint = xyMaxYPoint(spectrum.normalized, fromToIndex);\n    range.minPoint = xyMinYPoint(spectrum.normalized, fromToIndex);\n    range.x = spectrum.normalized.x.slice(\n      fromToIndex.fromIndex,\n      fromToIndex.toIndex + 1,\n    );\n    range.y = spectrum.normalized.y.slice(\n      fromToIndex.fromIndex,\n      fromToIndex.toIndex + 1,\n    );\n  }\n}\n","import { minMax } from 'ml-stat/array';\n\nimport { getData } from './getData';\nimport { getNormalized } from './getNormalized';\nimport { updateRangesInfo } from './updateRangesInfo';\n\n/**\n * Class allowing manipulate one IR spectrum\n * @class spectrum\n * @param {object} [json={}] - object containing a spectrum\n * @param {Array} [json.x=[]] - x values\n * @param {Array} [json.y=[]] - y values\n */\nexport class Spectrum {\n  /**\n   *\n   * @param {array} x\n   * @param {array} y\n   * @param {string} id\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {object} [options.normalization]\n   * @param {object} [options.normalized]\n   */\n  constructor(x, y, id, options = {}) {\n    const { meta = {}, normalization = {}, normalized } = options;\n\n    if (x && x.length > 1 && x[0] > x[1]) {\n      this.x = x.reverse();\n      this.y = y.reverse();\n    } else {\n      this.x = x || [];\n      this.y = y || [];\n    }\n    this.id = id;\n    this.meta = meta;\n    this.normalizedBoundary = { x: { min: 0, max: 0 }, y: { min: 0, max: 0 } };\n    if (normalized) {\n      this.normalized = normalized;\n      this.updateNormalizedBoundary();\n      this.normalizedAllowedBoundary = this.normalizedBoundary;\n    } else {\n      this.updateNormalization(normalization);\n    }\n\n    this.updateMemory();\n  }\n\n  get minX() {\n    return this.x[0];\n  }\n\n  get maxX() {\n    return this.x[this.x.length - 1];\n  }\n\n  updateMemory() {\n    let original = ((this.x && this.x.length) || 0) * 16;\n    let normalized = this.normalized.x.length * 16;\n    this.memory = { original, normalized, total: original + normalized };\n  }\n\n  removeOriginal() {\n    this.x = undefined;\n    this.y = undefined;\n    this.updateMemory();\n  }\n\n  getXY() {\n    if (!Array.isArray(this.x) || !Array.isArray(this.y)) {\n      throw new Error('Can not get normalized data');\n    }\n    return { x: this.x, y: this.y };\n  }\n}\n\nSpectrum.prototype.getData = function (options) {\n  return getData(this, options);\n};\n\nSpectrum.prototype.updateNormalization = function (normalization) {\n  const result = getNormalized(this, normalization);\n  this.normalized = result.data;\n  this.normalizedAllowedBoundary = result.allowedBoundary;\n  this.ranges = {};\n  this.updateMemory();\n  this.updateNormalizedBoundary();\n};\n\nSpectrum.prototype.updateRangesInfo = function (ranges) {\n  updateRangesInfo(this, ranges);\n};\n\nSpectrum.prototype.updateNormalizedBoundary = function () {\n  this.normalizedBoundary.x = {\n    min: this.normalized.x[0],\n    max: this.normalized.x[this.normalized.x.length - 1],\n  };\n  this.normalizedBoundary.y = minMax(this.normalized.y);\n};\n","import { xFindClosestIndex } from 'ml-spectra-processing';\n\nimport { getAutocorrelationChart } from './jsgraph/getAutocorrelationChart';\nimport { getBoxPlotChart } from './jsgraph/getBoxPlotChart';\nimport { getChart } from './jsgraph/getChart';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations';\nimport { getNormalizedChart } from './jsgraph/getNormalizedChart';\nimport { getPostProcessedChart } from './jsgraph/getPostProcessedChart';\nimport { getTrackAnnotation } from './jsgraph/getTrackAnnotation';\nimport { getCategoriesStats } from './metadata/getCategoriesStats';\nimport { getClasses } from './metadata/getClasses';\nimport { getMetadata } from './metadata/getMetadata';\nimport parseJcamp from './parser/jcamp';\nimport parseMatrix from './parser/matrix';\nimport parseText from './parser/text';\nimport { getAutocorrelation } from './spectra/getAutocorrelation';\nimport { getBoxPlotData } from './spectra/getBoxPlotData';\nimport { getMeanData } from './spectra/getMeanData';\nimport { getNormalizedData } from './spectra/getNormalizedData';\nimport { getNormalizedText } from './spectra/getNormalizedText';\nimport { getPostProcessedData } from './spectra/getPostProcessedData';\nimport { getPostProcessedText } from './spectra/getPostProcessedText';\nimport { Spectrum } from './spectrum/Spectrum';\n\nexport class SpectraProcessor {\n  /**\n   * Manager a large number of spectra with the possibility to normalize the data\n   * and skip the original data.\n   * @param {object} [options={}]\n   * @param {boolean} [options.maxMemory=64M]\n   * @param {object} [options.normalization={}] options to normalize the spectra before comparison\n   * @param {number} [options.normalization.from]\n   * @param {number} [options.normalization.to]\n   * @param {number} [options.normalization.numberOfPoints]\n   * @param {array<object>} [options.normalization.filters]\n   * @param {string} [options.normalization.filters.X.name]\n   * @param {object} [options.normalization.filters.X.options]\n   * @param {array<object>} [options.normalization.exclusions]\n   * @param {string} [options.normalization.exclusions.X.from]\n   * @param {object} [options.normalization.exclusions.X.to]\n   */\n  constructor(options = {}) {\n    this.normalization = options.normalization;\n    this.maxMemory = options.maxMemory || 256 * 1024 * 1024;\n    this.keepOriginal = true;\n    this.spectra = [];\n  }\n\n  getNormalizationAnnotations() {\n    return getNormalizationAnnotations(\n      this.normalization,\n      this.getNormalizedBoundary(),\n    );\n  }\n\n  /**\n   * Recalculate the normalized data using the stored original data if available\n   * This will throw an error in the original data is not present\n   * @param {number} [normalization.from]\n   * @param {number} [normalization.to]\n   * @param {number} [normalization.numberOfPoints]\n   * @param {array<object>} [normalization.filters]\n   * @param {string} [normalization.filters.X.name]\n   * @param {object} [normalization.filters.X.options]\n   * @param {array<object>} [normalization.exclusions]\n   * @param {string} [normalization.exclusions.X.from]\n   * @param {object} [normalization.exclusions.X.to]\n   */\n  setNormalization(normalization = {}) {\n    if (JSON.stringify(this.normalization) === JSON.stringify(normalization)) {\n      return;\n    }\n    this.normalization = normalization;\n    for (let spectrum of this.spectra) {\n      spectrum.updateNormalization(this.normalization);\n    }\n  }\n\n  getNormalization() {\n    return this.normalization;\n  }\n\n  /**\n   * Returns an object {x:[], y:[]} containing the autocorrelation for the\n   * specified index\n   * @param {integer} [index|undefined] x index of the spectrum to autocorrelate\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @param {array} [options.x] x value if index is undefined\n   */\n  getAutocorrelation(index, options = {}) {\n    const { x } = options;\n    const normalizedData = this.getNormalizedData(options);\n    if (index === undefined && x !== undefined) {\n      index = xFindClosestIndex(normalizedData.x, x);\n    }\n\n    return getAutocorrelation(normalizedData, index);\n  }\n\n  /**\n   * Returns a {x:[], y:[]} containg the average of specified spectra\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   */\n  getMeanData(options) {\n    return getMeanData(this.getNormalizedData(options));\n  }\n\n  /**\n   * Returns an object contains 4 parameters with the normalized data\n   * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[] }\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   */\n  getNormalizedData(options = {}) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedData(spectra);\n  }\n\n  /**\n   * Returns a tab separated value containing the normalized data\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   * @param {string} [options.fs='\\t'] field separator\n   * @param {string} [options.rs='\\n'] record (line) separator\n   * @returns {string}\n   */\n  getNormalizedText(options = {}) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedText(spectra, options);\n  }\n\n  /**\n   * Returns a tab separated value containing the post processed data\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] List of spectra ids to export, by default all\n   * @param {string} [options.fs='\\t'] field separator\n   * @param {string} [options.rs='\\n'] record (line) separator\n   * @param {object} [postProcessing={}]\n   * @returns {string}\n   */\n  getPostProcessedText(options = {}) {\n    return getPostProcessedText(this, options);\n  }\n\n  getMinMaxX() {\n    let min = Number.MAX_VALUE;\n    let max = Number.MIN_VALUE;\n    for (let spectrum of this.spectra) {\n      if (spectrum.minX < min) min = spectrum.minX;\n      if (spectrum.maxX > max) max = spectrum.maxX;\n    }\n    return { min, max };\n  }\n\n  /**\n\n   * Returns an object contains 4 parameters with the scaled data\n   * @param {object} [options={}] scale spectra based on various parameters\n   * @param {object} [options.range] from - to\n   * @param {Array} [options.ids] ids of selected spectra, by default all\n   * @param {string} [options.targetID=spectra[0].id]\n   * @param {string} [options.method='max'] min, max, range, minMax\n   * @param {boolean} [options.relative=false]\n   * @returns {object} { ids:[], matrix:[Array], meta:[object], x:[] }\n   */\n  getPostProcessedData(options) {\n    return getPostProcessedData(this, options);\n  }\n\n  /**\n   * Add from text\n   * By default TITLE from the jcamp will be in the meta information\n   * @param {string} text\n   * @param {object} [options={}]\n   * @param {object} [options.parserOptions={}] XY parser options\n   * @param {object} [options.meta={}]\n   * @param {string} [options.meta.color]\n   * @param {object} [options.id={}]\n   * @param {object} [options.kind]\n   * @param {boolean} [options.force=false] replace existing spectrum (same ID)\n   */\n\n  addFromText(text, options = {}) {\n    if (options.force !== true && options.id && this.contains(options.id)) {\n      return;\n    }\n    let parsed = parseText(text, options);\n    let meta = { ...parsed.meta, ...(options.meta || {}) };\n    this.addFromData(parsed.data, { meta, id: options.id });\n  }\n\n  /**\n   * Add jcamp\n   * By default TITLE from the jcamp will be in the meta information\n   * @param {string} jcamp\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {string} [options.meta.color]\n   * @param {object} [options.id={}]\n   * @param {boolean} [options.force=false] replace existing spectrum (same ID)\n   */\n\n  addFromJcamp(jcamp, options = {}) {\n    if (options.force !== true && options.id && this.contains(options.id)) {\n      return;\n    }\n    let parsed = parseJcamp(jcamp);\n    let meta = { ...parsed.meta, ...(options.meta || {}) };\n    this.addFromData(parsed.data, { meta, id: options.id });\n  }\n\n  updateRangesInfo(options) {\n    for (let spectrum of this.spectra) {\n      spectrum.updateRangesInfo(options);\n    }\n  }\n\n  /**\n   * Returns the metadata for a set of spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @returns {object}\n   */\n  getMetadata(options = {}) {\n    const { ids } = options;\n    return getMetadata(this.getSpectra(ids));\n  }\n\n  /**\n   *\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {string} [options.propertyName=\"category\"]\n   */\n  getClasses(options) {\n    return getClasses(this.getMetadata(options), options);\n  }\n\n  /**\n   *\n   * @param {object} [options={}]\n   * @param {string} [options.propertyName=\"category\"]\n   */\n  getCategoriesStats(options) {\n    return getCategoriesStats(this.getMetadata(), options);\n  }\n\n  /**\n   * Add a spectrum based on the data\n   * @param {object} data {x, y}}\n   * @param {object} [options={}]\n   * @param {object} [options.meta={}]\n   * @param {object} [options.id]\n   * @param {object} [options.normalization={}]\n   * @param {object} [options.normalized]\n   * @return {Spectrum}\n   */\n\n  addFromData(data, options = {}) {\n    if (this.spectra.length === 0) this.keepOriginal = true;\n    const id = options.id || Math.random().toString(36).substring(2, 10);\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) index = this.spectra.length;\n    let spectrum = new Spectrum(data.x, data.y, id, {\n      meta: options.meta,\n      normalized: options.normalized,\n      normalization: this.normalization,\n    });\n    this.spectra[index] = spectrum;\n    if (!this.keepOriginal) {\n      spectrum.removeOriginal();\n    } else {\n      let memoryInfo = this.getMemoryInfo();\n      if (memoryInfo.total > this.maxMemory) {\n        this.keepOriginal = false;\n        this.removeOriginals();\n      }\n    }\n  }\n\n  removeOriginals() {\n    for (let spectrum of this.spectra) {\n      spectrum.removeOriginal();\n    }\n  }\n\n  /**\n   * Remove the spectrum from the SpectraProcessor for the specified id\n   * @param {string} id\n   */\n  removeSpectrum(id) {\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) return undefined;\n    return this.spectra.splice(index, 1);\n  }\n\n  /**\n   * Remove all the spectra not present in the list\n   * @param {Array} [ids] Array of ids of the spectra to keep\n   */\n  removeSpectraNotIn(ids) {\n    let currentIDs = this.spectra.map((spectrum) => spectrum.id);\n    for (let id of currentIDs) {\n      if (!ids.includes(id)) {\n        this.removeSpectrum(id);\n      }\n    }\n  }\n\n  /**\n   * Checks if the ID of a spectrum exists in the SpectraProcessor\n   * @param {string} id\n   */\n  contains(id) {\n    return !isNaN(this.getSpectrumIndex(id));\n  }\n\n  /**\n   * Returns the index of the spectrum in the spectra array\n   * @param {string} id\n   * @returns {number}\n   */\n  getSpectrumIndex(id) {\n    if (!id) return undefined;\n    for (let i = 0; i < this.spectra.length; i++) {\n      let spectrum = this.spectra[i];\n      if (spectrum.id === id) return i;\n    }\n    return undefined;\n  }\n\n  /**\n   * Returns an array of all the ids\n   * @returns {array}\n   */\n  getIDs() {\n    return this.spectra.map((spectrum) => spectrum.id);\n  }\n\n  /**\n   * Returns an array of spectrum from their ids\n   * @param {Array} ids\n   * @returns {Array<Spectrum}\n   */\n  getSpectra(ids) {\n    if (!ids || !Array.isArray(ids)) return this.spectra;\n    let spectra = [];\n    for (let id of ids) {\n      let index = this.getSpectrumIndex(id);\n      if (index !== undefined) {\n        spectra.push(this.spectra[index]);\n      }\n    }\n    return spectra;\n  }\n\n  /**\n   * Returns the index of the spectrum in the spectra array\n   * @param {string} id\n   * @returns {number}\n   */\n  getSpectrum(id) {\n    let index = this.getSpectrumIndex(id);\n    if (index === undefined) return undefined;\n    return this.spectra[index];\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the spectra\n   * @returns {object}\n   */\n  getChart(options) {\n    return getChart(this.spectra, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @returns {object}\n   */\n  getAutocorrelationChart(index, options) {\n    return getAutocorrelationChart(this, index, options);\n  }\n\n  /**\n   * Returns a JSGraph annotation object for the specified index\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]]\n   * @param {array} [options.showSpectrumID=true]\n   * @param {array} [options.sortY=true]\n   * @param {object} [options.limit=20]\n   * ids, showSpectrumID = true, sort = true, limit = 20\n   * @returns {object}\n   */\n  getTrackAnnotation(index, options) {\n    return getTrackAnnotation(this.spectra, index, options);\n  }\n\n  /**\n   * Returns a JSGraph annotation object for box plot\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @returns {object}\n   */\n  getBoxPlotChart(options = {}) {\n    const normalizedData = this.getNormalizedData(options);\n    return getBoxPlotChart(normalizedData, options);\n  }\n\n  /**\n   * Returns boxplot information\n   * @param {object} [options={}]\n   * @param {array} [options.ids=[]] list of ids, by default all spectra\n   * @returns {object}\n   */\n  getBoxPlotData(options = {}) {\n    const normalizedData = this.getNormalizedData(options);\n    return getBoxPlotData(normalizedData, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the normalized spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @returns {object}\n   */\n  getNormalizedChart(options) {\n    const { ids } = options;\n    let spectra = this.getSpectra(ids);\n    return getNormalizedChart(spectra, options);\n  }\n\n  /**\n   * Returns a JSGraph chart object for all the scaled normalized spectra\n   * @param {object} [options={}]\n   * @param {Array} [options.ids] ids of the spectra to select, by default all\n   * @param {object} [options.range] from - to\n   * @param {string} [options.targetID=spectra[0].id]\n   * @param {string} [options.method='max'] min, max, range, minMax\n   * @param {boolean} [options.relative=false]\n   * @returns {object}\n   */\n  getPostProcessedChart(options) {\n    return getPostProcessedChart(this, options);\n  }\n\n  getMemoryInfo() {\n    let memoryInfo = { original: 0, normalized: 0, total: 0 };\n    this.spectra.forEach((spectrum) => {\n      let memory = spectrum.memory;\n      memoryInfo.original += memory.original;\n      memoryInfo.normalized += memory.normalized;\n      memoryInfo.total += memory.total;\n    });\n    memoryInfo.keepOriginal = this.keepOriginal;\n    memoryInfo.maxMemory = this.maxMemory;\n    return memoryInfo;\n  }\n\n  getNormalizedBoundary() {\n    let boundary = {\n      x: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n      y: { min: Number.MAX_VALUE, max: Number.MIN_VALUE },\n    };\n    for (let spectrum of this.spectra) {\n      if (spectrum.normalizedBoundary.x.min < boundary.x.min) {\n        boundary.x.min = spectrum.normalizedBoundary.x.min;\n      }\n      if (spectrum.normalizedBoundary.x.max > boundary.x.max) {\n        boundary.x.max = spectrum.normalizedBoundary.x.max;\n      }\n      if (spectrum.normalizedBoundary.y.min < boundary.y.min) {\n        boundary.y.min = spectrum.normalizedBoundary.y.min;\n      }\n      if (spectrum.normalizedBoundary.y.max > boundary.y.max) {\n        boundary.y.max = spectrum.normalizedBoundary.y.max;\n      }\n    }\n    return boundary;\n  }\n\n  /**\n   * We provide the allowed from / to after normalization\n   * For the X axis we return the smallest common values\n   * For the Y axis we return the largest min / max\n   */\n  getNormalizedCommonBoundary() {\n    let boundary = {\n      x: { min: Number.NEGATIVE_INFINITY, max: Number.POSITIVE_INFINITY },\n      y: { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY },\n    };\n    for (let spectrum of this.spectra) {\n      if (spectrum.normalizedAllowedBoundary.x.min > boundary.x.min) {\n        boundary.x.min = spectrum.normalizedAllowedBoundary.x.min;\n      }\n      if (spectrum.normalizedAllowedBoundary.x.max < boundary.x.max) {\n        boundary.x.max = spectrum.normalizedAllowedBoundary.x.max;\n      }\n      if (spectrum.normalizedAllowedBoundary.y.min < boundary.y.min) {\n        boundary.y.min = spectrum.normalizedAllowedBoundary.y.min;\n      }\n      if (spectrum.normalizedAllowedBoundary.y.max > boundary.y.max) {\n        boundary.y.max = spectrum.normalizedAllowedBoundary.y.max;\n      }\n    }\n    return boundary;\n  }\n\n  /**\n   * Create SpectraProcessor from normalized TSV\n   * @param {string} text\n   * @param {object} [options={}]\n   * @param {object} [options.separator='\\t']\n   */\n  static fromNormalizedMatrix(text, options = {}) {\n    let parsed = parseMatrix(text, options);\n    if (!parsed) {\n      throw new Error('Can not parse TSV file');\n    }\n    let spectraProcessor = new SpectraProcessor();\n\n    spectraProcessor.setNormalization({\n      from: parsed.x[0],\n      to: parsed.x[parsed.x.length - 1],\n      numberOfPoints: parsed.x.length,\n    });\n\n    for (let i = 0; i < parsed.ids.length; i++) {\n      spectraProcessor.addFromData(\n        { x: [], y: [] },\n        {\n          normalized: {\n            x: parsed.x,\n            y: parsed.matrix[i],\n          },\n          id: parsed.ids[i],\n          meta: parsed.meta[i],\n        },\n      );\n    }\n\n    spectraProcessor.keepOriginal = false;\n\n    return spectraProcessor;\n  }\n}\n","export function getFilterAnnotations(filter = {}) {\n  let { exclusions = [] } = filter;\n  let annotations = [];\n  exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n  annotations = exclusions.map((exclusion) => {\n    let annotation = {\n      type: 'rect',\n      position: [\n        { x: exclusion.from, y: '0px' },\n        { x: exclusion.to, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,128,1)',\n    };\n    return annotation;\n  });\n  if (filter.from !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: Number.MIN_SAFE_INTEGER, y: '0px' },\n        { x: filter.from, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  if (filter.to !== undefined) {\n    annotations.push({\n      type: 'rect',\n      position: [\n        { x: filter.to, y: '0px' },\n        { x: Number.MAX_SAFE_INTEGER, y: '2000px' },\n      ],\n      strokeWidth: 0,\n      fillColor: 'rgba(255,255,224,1)',\n    });\n  }\n  return annotations;\n}\n"],"names":["toString","Object","prototype","isAnyArray","object","call","endsWith","a","d","e","f","length","g","h","i","j","c","b","_ref","module","exports","window","median","input","isArray","TypeError","quickSelectMedian","slice","xAdd","array1","array2","isConstant","constant","Array","Error","Number","array3","xMultiply","Float64Array","xBoxPlot","array","sort","info","Q1","Q2","Q3","min","max","q1max","q3min","middle","middleOver","xCorrelation","A","B","n","sumA","sumA2","sumB","sumB2","sumAB","Math","sqrt","xFindClosestIndex","target","low","high","abs","xGetFromToIndex","x","options","fromIndex","toIndex","from","to","undefined","xCheck","xMaxValue","maxValue","xMinValue","minValue","global","factory","this","ascending","NaN","bisector","compare","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","variance","m","s","isNaN","deviation","v","extent","identity","range","start","stop","step","arguments","ceil","e10","e5","e2","ticks","count","tickStep","floor","step0","step1","pow","log","LN10","error","sturges","values","LN2","number","histogram","value","domain","threshold","data","xz","x0","x1","tz","shift","pop","bins","bin","push","_","thresholds","map","quantile","p","freedmanDiaconis","scott","mean","numbers","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","t","random","sum","transpose","matrix","row","zip","version","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","sumValue","_options$unbiased","unbiased","_options$mean","arrayMean","sqrError","standardDeviation","xParetoNormalization","result","sqrtSD","sd","item","xSubtract","xSum","xyCheck","y","xyIntegration","currentxyIntegration","xyMaxYPoint","current","index","xyMinYPoint","GAUSSIAN_EXP_FACTOR","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","constructor","fwhm","widthToFWHM","height","getData","factor","getFactor","center","fct","area","getArea","width","fwhmToWidth","setFWHM","setHeight","exp","Lorentzian","squareFWHM","tan","PseudoVoigt","mu","setMu","getShapeGenerator","kind","shapeOptions","toLowerCase","replace","SavitzkyGolay","ys","xs","windowSize","derivative","polynomial","isInteger","RangeError","console","warn","half","np","ans","weights","fullWeights","hs","constantH","wg1","wg2","d1","d2","l","getHs","wg","GramPoly","k","Grampoly","GenFact","gf","Weight","gsd","noiseLevel","sgOptions","shape","smoothY","heightFactor","broadRatio","maxCriteria","minMaxRatio","derivativeThreshold","realTopDetection","yIn","equalSpaced","isEqualSpaced","getNoiseLevel","yCorrection","yData","dY","ddY","SG","xData","dX","maxDdy","maxY","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","widthProcessor","signals","lastK","possible","frequency","distanceJ","minDistance","gettingCloser","MAX_VALUE","soft","yLeft","yRight","determineRealTop","base","tmp","maxDx","minDx","MAX_SAFE_INTEGER","stddev","averageDeviations","peakList","alpha","beta","gamma","currentPoint","log10","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","args","isObject","Symbol","arg","names","key","val","isValidKey","assign","isPrimitive","keys","assignSymbols","_options$fromIndex","_options$toIndex","rescale","output","currentMin","currentMax","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","name","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","clz32","cos","cosh","expm1","fround","log1p","log2","round","sign","sin","sinh","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","cols","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","randInt","interval","eye","diag","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","echelonForm","clone","iMax","swapRows","reducedEchelonForm","maxRow","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","for","randomInt","diagonal","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","xyCalibrate","targetX","nbPeaks","gsdOptions","sliceddata","peaks","peak","matrixCenterYMean","nbRows","nbColumns","matrixYRescale","matrixPQN","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","limit","clip_rgb","rgb","_clipped","_unclipped","classToType","list","obj","unpack","keyOrder","split","filter","utils","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","format","autodetect","last$1","clip_rgb$1","type$1","Color","len","me","mode","sorted","chk","test","_rgb","hex","Color_1","chroma","Function","bind","concat","chroma_1","unpack$1","rgb2cmyk","ref","rgb2cmyk_1","unpack$2","cmyk2rgb","cmyk2rgb_1","unpack$3","type$2","cmyk","unpack$4","last$2","rnd","hsl2css","hsla","hsl2css_1","unpack$5","rgb2hsl","rgb2hsl_1","unpack$6","last$3","rgb2css","rgba","substr","rgb2css_1","unpack$7","round$1","hsl2rgb","t3","t2","t1","h_","hsl2rgb_1","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","round$2","css2rgb","css","trim","named","match","rgb$1","i$1","rgb$2","i$2","rgb$3","i$3","hsl","rgb$4","hsl$1","rgb$5","css2rgb_1","type$3","rest","unpack$8","gl","unpack$9","rgb2hcg","delta","_g","rgb2hcg_1","unpack$a","hcg2rgb","assign$1","assign$2","assign$3","assign$4","assign$5","_c","hcg2rgb_1","unpack$b","type$4","hcg","unpack$c","last$4","round$3","rgb2hex","u","str","hxa","rgb2hex_1","RE_HEX","RE_HEXA","hex2rgb","u$1","r$1","g$1","b$1","hex2rgb_1","type$5","unpack$d","rgb2hsi","min_","rgb2hsi_1","unpack$e","limit$1","TWOPI$1","hsi2rgb","hsi2rgb_1","unpack$f","type$6","hsi","unpack$g","type$7","unpack$h","min$1","max$1","rgb2hsl$1","max_","rgb2hsv","unpack$i","floor$1","hsv2rgb","hsv2rgb_1","unpack$j","type$8","hsv","labConstants","Kn","Xn","Yn","Zn","t0","unpack$k","rgb2lab","ref$1","rgb2xyz","z","rgb_xyz","xyz_lab","rgb2lab_1","unpack$l","pow$1","lab2rgb","b_","lab_xyz","xyz_rgb","lab2rgb_1","unpack$m","type$9","lab","unpack$n","sqrt$1","atan2","round$4","lab2lch","lab2lch_1","unpack$o","rgb2lch","rgb2lch_1","unpack$p","cos$1","lch2lab","lch2lab_1","unpack$q","lch2rgb","L","lch2rgb_1","unpack$r","hcl2rgb","hcl","reverse","hcl2rgb_1","unpack$s","type$a","lch","forEach","w3cx11","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflower","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","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","purple2","purple3","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","w3cx11_1","type$b","unpack$t","rgb2num","rgb2num_1","type$c","num2rgb","num2rgb_1","type$d","unpack$u","type$e","round$5","temperature2rgb","kelvin","temperature2rgb_1","unpack$v","round$6","rgb2temperature","minTemp","maxTemp","eps","rgb2temperature_1","temperature","type$f","mutate","clipped","darken","amount","brighten","darker","brighter","mc","channel","src","type$g","pow$2","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","interpolate","lm","rgb2luminance","luminance_x","interpolator","type$h","mix","col1","col2","premultiply","saturate","desaturate","type$i","charAt","out","xyz0","xyz1","sqrt$2","pow$3","lrgb","y1","z1","x2","y2","z2","lab$1","_hsx","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","dh","lch$1","num$1","hcg$1","hsi$1","hsv$1","clip_rgb$2","pow$4","sqrt$3","PI$1","cos$2","sin$1","atan2$1","average","colors","reduce","w","_average_lrgb","xyz","cnt","dx","dy","ci","xyz2","A$1","col","type$j","pow$5","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","c$1","resetCache","getClass","tMapLightness","tMapDomain","getColor","bypassMap","classes","analyze","limits","tOut","tBreaks","every","_m","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","padding","numColors","dm","dd","__range__","samples","end","asc","cache","nodata","inclusive","bezier","I","lab0","lab1","lab2","lab3","I0","I1","bezier_1","blend","bottom","top","blend_f","c0","each","normal","darken$1","lighten","screen","overlay","burn","dodge","blend_1","type$k","clip_rgb$3","TWOPI$2","pow$6","sin$2","cos$3","cubehelix","rotations","lightness","dl","fract","amp","cos_a","sin_a","digits","floor$2","random_1","code","log$1","pow$7","floor$3","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","nb_iters","centroids","i$4","mindist","best","j$1","dist","newCentroids","j$2","i$5","j$3","j$4","kClusters","j$5","i$6","tmpKMeansBreaks","j$6","i$7","analyze_1","contrast","l1","l2","sqrt$4","atan2$2","abs$1","cos$4","PI$2","deltaE","C","a1","b1","L2","a2","b2","sl","sc","h1","c4","sh","delL","delC","delA","delB","dH2","v1","v2","v3","distance","sum_sq","valid","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","list$1","colorbrewer_1","chroma_js","getZones","exclusions","exclusion","JSON","parse","stringify","zones","currentFrom","filterX","points","currentZoneIndex","newX","newY","position","getAutocorrelationChart","spectraProcessor","autocorrelation","getAutocorrelation","xFilter","ids","maxFct","minFct","colorCallback","colorScale","getMeanData","colorSpectrum","color","styles","unselected","lineWidth","lineStyle","selected","getBoxPlotData","normalizedData","nbRow","nbColumn","aColumn","getBoxPlotChart","q13FillColor","q13FillOpacity","q2StrokeColor","q2StrokeWidth","minMaxFillColor","minMaxFillOpacity","annotations","boxPlotData","q13","layer","properties","fillColor","fillOpacity","strokeWidth","minMax","strokeColor","getColors","dataset","stdevs","addChartDataStyle","spectrum","lineColor","meta","label","id","getChart","spectra","yFactor","chart","includes","getNormalizationAnnotations","ignore","annotation","MIN_SAFE_INTEGER","getNormalizedChart","normalized","getPostProcessedChart","scaled","getPostProcessedData","getNormalizedData","currentIDs","getTrackAnnotation","showSpectrumID","sortY","text","getCategoriesStats","metadata","propertyName","categories","classNumber","metadatum","counter","getClasses","categoriesStats","getMetadata","GC_MS_FIELDS","complexChromatogram","chromatogram","times","series","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","parseFloat","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","deltaX","isXYdata","currentData","currentX","firstX","currentY","firstY","endLine","ascii","charCodeAt","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","variables","parseXY","parseXYZ","lines","xFactor","logs","numberOfVariables","variable","parseXYA","removeSymbolRegExp","isXYAdata","convertTo3DZ","minZ","maxZ","ySize","xSize","lastX","lastY","minX","maxX","minY","noise","getMedian","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","xN","y0","yN","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","FFT","release","date","_n","_bitrev","_cstb","core","init","_initArray","_makeBitReversalTable","_makeCosSinTable","fft1d","re","im","fft","ifft1d","bt1d","fft2d","tre","tim","ifft2d","inv","ik","wr","wi","xr","n4","Uint32Array","_paddingZero","n2","n8","n2p4","dc","ds","apis","bt","ifft","gyromagneticRatio","postProcessingNMR","entriesFlat","observeFrequency","shiftOffsetVal","entry","ntuples","symbol","xUnits","toUpperCase","nucleus","startsWith","$NUC2","$NUC1","yType","unit","pageSymbolIndex","pageSymbol","units","ratio0","ratio1","ratio","profiling","action","time","Date","now","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","xIndex","yIndex","firstVariable","secondVariable","lowerCaseSymbol","vardim","nbPoints","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","numberRegExp","Spectrum","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","convert","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","substring","dataValue","infos","datatable","parentEntry","title","dataType","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","flatten","getJcampKind","IR_ABSORBANCE","IR_TRANSMITTANCE","normalization","importation","converter","transmittance","display","xLabel","xInverted","yLabel","jcampText","parsed","xy","fs","currentMatrix","headers","labels","header","parts","oneMeta","uniqueX","xColumn","yColumn","keepInfo","maxNumberColumns","minNumberColumns","MIN_VALUE","fields","uniqueXFunction","parserOptions","convertToText","rs","allKeysObject","metum","allKeys","getNormalizedText","o","require","algorithm","createHash","write","update","dispatch","digest","encoding","read","sha1","excludeValues","MD5","keysMD5","getHashes","ignoreUnknown","respectType","respectFunctionNames","respectFunctionProperties","unorderedArrays","unorderedSets","unorderedObjects","replacer","excludeKeys","exec","_object","isBuffer","_array","_date","_symbol","_error","_boolean","_string","_function","_number","_xml","_null","_undefined","_regexp","_uint8array","_uint8clampedarray","_int8array","_uint16array","_int16array","_uint32array","_int32array","_float32array","_float64array","_arraybuffer","Uint8Array","_url","_map","_set","_file","lastModfied","_blob","_domwindow","_process","_timer","_pipe","_tcp","_udp","_tty","_statwatcher","_securecontext","_connection","_zlib","_context","_nodescript","_httpparser","_dataview","_signal","_fsevent","_tlswrap","buf","writeToStream","self","Buffer","buffer","crypto","lYpoI2","toByteArray","fromByteArray","base64js","O","H","byteLength","_useTypedArrays","_augment","_isBuffer","S","readUInt8","_charsWritten","T","fromCharCode","D","N","E","Y","F","SlowBuffer","INSPECT_MAX_BYTES","poolSize","ArrayBuffer","foo","subarray","isEncoding","M","_arr","U","writeUInt8","readUInt16LE","readUInt16BE","readUInt32LE","readUInt32BE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","inspect","toArrayBuffer","encodeURIComponent","decodeURIComponent","_get","toLocaleString","ieee754","hash","sha256","md5","createHmac","randomBytes","nextTick","setImmediate","postMessage","addEventListener","source","stopPropagation","setTimeout","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","getFromToIndex","integration","normalizedTarget","fromToIndex","targetValue","deltaTarget","minTarget","deltaSource","minSource","optionsHash","ranges","calculations","filters","targetID","relative","method","getSpectra","validCache","weakMap","WeakMap","getSpectrum","rangesCopy","yNormalized","resultRanges","currentRange","maxPoint","parameters","calculation","formula","oneRanges","getPostProcessedText","postProcessingOptions","arithmeticMean","geometricMean","logMean","lnsum","grandMean","means","truncatedMean","percent","alreadySorted","harmonicMean","contraHarmonicMean","theMean","theVariance","standardError","robustMeanAndStdev","stdev","quartiles","quart","q1","q2","q3","pooledStandardDeviation","pooledVariance","vari","itemCount","itemArray","covariance","mean1","mean2","cov","skewness","s2","s3","dev","kurtosis","s4","entropy","weightedMean","weightedStandardDeviation","weightedVariance","inPlace","standardize","standardDev","_options$algorithm","_options$sumValue","_options$maxValue","absoluteSumValue","absoluteSum","currentMaxValue","_i","sumFactor","_i2","_typeof","iterator","sequentialFill","_options","_options$from","_options$to","_options$size","normalize","NEGATIVE_INFINITY","POSITIVE_INFINITY","zone","currentZone","invert","nextExclusion","zonesWithPoints","numberOfPoints","totalSize","previous","unitsPerPoint","currentTotal","integral","slope","intercept","equallySpacedSmooth","xLength","halfStep","initialOriginalStep","lastOriginalStep","previousX","previousY","nextX","nextY","sumAtMin","sumAtMax","getSlope","main","equallySpacedSlot","lastStep","frontOutsideSpectra","backOutsideSpectra","currentPoints","equallySpaced","arrayXY","variant","xResult","yResult","zoneResult","processZone","getNormalized","filterOptions","Stat","std","normed","sg","applyArrayFunction","function","allowedBoundary","variableLabel","fctString","updateRangesInfo","minPoint","normalizedBoundary","updateNormalizedBoundary","normalizedAllowedBoundary","updateNormalization","updateMemory","original","memory","total","removeOriginal","getXY","SpectraProcessor","maxMemory","keepOriginal","getNormalizedBoundary","setNormalization","getNormalization","getMinMaxX","addFromText","force","contains","parseText","addFromData","addFromJcamp","parseJcamp","getSpectrumIndex","memoryInfo","getMemoryInfo","removeOriginals","removeSpectrum","removeSpectraNotIn","getIDs","boundary","getNormalizedCommonBoundary","fromNormalizedMatrix","parseMatrix","getFilterAnnotations"],"mappings":"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"}