{"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/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-array-min/lib-es6/index.js","../node_modules/ml-array-max/lib-es6/index.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-gsd/node_modules/ml-peak-shape-generator/src/util/constants.js","../node_modules/ml-gsd/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../node_modules/ml-gsd/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../node_modules/ml-gsd/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../node_modules/ml-gsd/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../node_modules/ml-gsd/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/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/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/node_modules/is-any-array/src/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/equallySpacedSlot.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/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","import isAnyArray from 'is-any-array';\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 (isAnyArray(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 isAnyArray from 'is-any-array';\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 (isAnyArray(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\nexport function xCheckLengths(array1, array2) {\n  if (array1.length !== array2.length) {\n    throw new TypeError('Length of array1 and array2 must be identical');\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","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","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';\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 isAnyArray from 'is-any-array';\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 (isAnyArray(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","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.1';\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  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","// 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          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","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\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 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 ? numberOfPoints - 1 : 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","/**\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 ? numberOfPoints - 1 : 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","import sequentialFill from 'ml-array-sequential-fill';\nimport { zonesWithPoints, invert } from 'ml-zones';\n\nimport equallySpacedSlot from './equallySpacedSlot';\nimport equallySpacedSmooth from './equallySpacedSmooth';\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  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","Error","Number","array3","Array","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","sum","sumValue","mean","variance","values","arguments","_options$unbiased","unbiased","_options$mean","arrayMean","sqrError","standardDeviation","xParetoNormalization","result","sqrtSD","sd","item","push","_options$fromIndex","_options$toIndex","isInteger","xSubtract","xSum","xyCheck","data","y","xyIntegration","currentxyIntegration","xyMaxYPoint","current","index","xyMinYPoint","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","log","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","constructor","fwhm","widthToFWHM","height","getData","factor","getFactor","ceil","pow","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","RangeError","console","warn","half","floor","np","ans","weights","fullWeights","hs","constantH","wg1","wg2","d1","d2","l","getHs","wg","count","GramPoly","m","k","s","Grampoly","GenFact","gf","Weight","t","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","left","right","yLeft","yRight","determineRealTop","base","tmp","maxDx","minDx","MAX_SAFE_INTEGER","stddev","averageDeviations","peakList","alpha","beta","gamma","p","currentPoint","log10","rescale","output","currentMin","currentMax","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","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","value","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","row","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","v","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","random","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","NaN","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","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","xyCalibrate","range","targetX","nbPeaks","gsdOptions","sliceddata","peaks","map","peak","matrixCenterYMean","nbRows","nbColumns","matrixYRescale","matrixPQN","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","global","factory","this","limit","clip_rgb","rgb","_clipped","_unclipped","classToType","list","obj","unpack","args","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","version","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","assign","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","isNaN","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","keys","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","mid","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","x1","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","shift","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","val","bypassMap","classes","analyze","limits","domain","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","ascending","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","start","rotations","lightness","dl","fract","amp","cos_a","sin_a","digits","floor$2","random_1","code","log$1","pow$7","floor$3","key","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","x0","xN","y0","yN","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","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","pop","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","step","normalize","NEGATIVE_INFINITY","POSITIVE_INFINITY","zone","currentZone","invert","nextExclusion","zonesWithPoints","numberOfPoints","totalSize","previous","unitsPerPoint","currentTotal","equallySpacedSlot","xLength","halfStep","lastStep","previousX","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentPoints","main","integral","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","sumAtMin","sumAtMax","getSlope","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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"}