{"version":3,"file":"dcs-data.js","sources":["../node_modules/ml-array-median/node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/is-any-array/src/index.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/x/xAdd.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/x/xMultiply.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/x/xDivide.js","../node_modules/ml-array-sequential-fill/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/x/xIsMonotone.js","../node_modules/ml-array-sum/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-array-mean/lib-es6/index.js","../node_modules/ml-array-min/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-max/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/x/xSubtract.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/xy/xyCheck.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/xy/xyEnsureGrowingX.js","../node_modules/common-spectrum/node_modules/ml-spectra-processing/src/xy/xyFilterXPositive.js","../node_modules/ml-matrix/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-rescale/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/views/base.js","../node_modules/ml-matrix/src/views/transpose.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/common-spectrum/lib-esm/jsgraph/addStyle.js","../node_modules/common-spectrum/lib-esm/jsgraph/colors.js","../node_modules/common-spectrum/lib-esm/jsgraph/getJSGraph.js","../node_modules/common-spectrum/lib-esm/jsgraph/getNormalizationAnnotations.js","../node_modules/common-spectrum/lib-esm/util/appendDistinctParameter.js","../node_modules/common-spectrum/lib-esm/util/appendDistinctValue.js","../node_modules/common-spectrum/lib-esm/AnalysesManager.js","../node_modules/ml-airpls/src/choleskySolver.js","../node_modules/cuthill-mckee/cuthill-mckee.js","../node_modules/ml-airpls/src/utils.js","../node_modules/ml-airpls/src/index.js","../node_modules/baselines/src/airPLS.js","../node_modules/ml-regression-base/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-regression-base/src/maybeToPrecision.js","../node_modules/ml-regression-base/src/checkArrayLength.js","../node_modules/ml-regression-base/src/index.js","../node_modules/ml-regression-polynomial/src/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/ml-spectra-processing/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib-esm/x/xCumulative.js","../node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xPadding.js","../node_modules/ml-spectra-processing/lib-esm/x/xRolling.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib-esm/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyMaxYPoint.js","../node_modules/ml-spectra-processing/lib-esm/xy/xyCumulativeDistributionStatistics.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xFindClosestIndex.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xGetFromToIndex.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xMaxValue.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xMinValue.js","../node_modules/ml-rolling-ball-baseline/node_modules/ml-spectra-processing/lib-esm/x/xMean.js","../node_modules/ml-rolling-ball-baseline/src/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-array-normed/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-normed/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","../node_modules/ml-array-xy-filter-x/src/getZones.js","../node_modules/ml-array-xy-filter-x/src/index.js","../node_modules/ml-pad-array/src/index.js","../node_modules/ml-savitzky-golay/lib-esm/index.js","../node_modules/ml-stat/array.js","../node_modules/common-spectrum/lib-esm/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/lib-esm/util/convertUnit.js","../node_modules/common-spectrum/lib-esm/util/ensureRegexp.js","../node_modules/common-spectrum/lib-esm/util/getConvertedVariable.js","../node_modules/common-spectrum/lib-esm/util/getXYSpectrum.js","../node_modules/common-spectrum/lib-esm/Analysis.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/nmr-processing/lib-esm/constants/gyromagneticRatio.js","../node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../node_modules/common-spectrum/lib-esm/from/fromJcamp.js","../node_modules/convert-to-jcamp/src/creatorNtuples.js","../node_modules/convert-to-jcamp/src/utils/getNumber.js","../node_modules/convert-to-jcamp/src/utils/peakTableCreator.js","../node_modules/convert-to-jcamp/src/utils/xyDataCreator.js","../node_modules/convert-to-jcamp/src/fromJSON.js","../node_modules/convert-to-jcamp/src/fromVariables.js","../node_modules/common-spectrum/lib-esm/to/toJcamps.js","../node_modules/common-spectrum/lib-esm/to/toJcamp.js","../node_modules/common-spectrum/lib-esm/index.js","../node_modules/physical-chemistry-parser/src/dsc/cps/dscParseCPS.js","../src/util/getStats.js","../src/from/fromCPS.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","(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 { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(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 { median as default };\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\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","import isAnyArray from 'is-any-array';\n\n/**\n * This function divide 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>|Number} array2\n * @return {Array}\n */\nexport function xDivide(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","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } 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/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\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' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(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 { sequentialFill as default };\n","/**\n * Returns true if x is monotone\n * @param {Array} array\n * @return {boolean}\n */\nexport function xIsMonotone(array) {\n  if (array.length <= 2) {\n    return true;\n  }\n  if (array[0] === array[1]) {\n    // maybe a constant series\n    for (let i = 1; i < array.length - 1; i++) {\n      if (array[i] !== array[i + 1]) return false;\n    }\n    return true;\n  }\n\n  if (array[0] < array[array.length - 1]) {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] >= array[i + 1]) return false;\n    }\n  } else {\n    for (let i = 0; i < array.length - 1; i++) {\n      if (array[i] <= array[i + 1]) return false;\n    }\n  }\n  return true;\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction sum(input) {\n  if (!isAnyArray(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 { sum as default };\n","import sum from 'ml-array-sum';\n\nfunction mean(input) {\n  return sum(input) / input.length;\n}\n\nexport { mean as default };\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(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 { min as default };\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(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 { max as default };\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 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('Data 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 { xyCheck } from './xyCheck';\n\n/**\n * Filters x,y values to allow strictly growing values in x axis.\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @return {DataXY}\n */\nexport function xyEnsureGrowingX(data = {}) {\n  xyCheck(data);\n  const x = Array.from(data.x);\n  const y = Array.from(data.y);\n  let prevX = -Infinity;\n  let ansX = [];\n  let ansY = [];\n\n  for (let index = 0; index < x.length; index++) {\n    if (prevX < x[index]) {\n      ansX.push(x[index]);\n      ansY.push(y[index]);\n      prevX = x[index];\n    }\n  }\n  return { x: ansX, y: ansY };\n}\n","import { xyCheck } from './xyCheck';\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n * @param {DataXY} [data={}]\n * @return {{x:[],y:[]}} An object with the filtered data\n */\n\nexport function xyFilterXPositive(data = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  const newX = [];\n  const newY = [];\n  for (let i = 0; i < x.length; i++) {\n    if (x[i] > 0) {\n      newX.push(x[i]);\n      newY.push(y[i]);\n    }\n  }\n\n  return { x: newX, y: newY };\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } 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 (!isAnyArray(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 (!isAnyArray(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 { rescale as default };\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","import { isAnyArray } from 'is-any-array';\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 checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\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 { isAnyArray } from 'is-any-array';\nimport 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  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\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\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  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\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    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[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 (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(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 (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(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 (!isAnyArray(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 (!isAnyArray(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[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 (isAnyArray(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 { AbstractMatrix } from '../matrix';\n\nexport default class BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n","import BaseView from './base';\n\nexport default class MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","export function addStyle(serie, spectrum, options = {}) {\n    let { color = '#A9A9A9', opacity = 1, lineWidth = 1 } = options;\n    // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n    if (color.match(/#[0-9A-F]{6}$/i)) {\n        color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\n    }\n    else {\n        color = color.replace(/rgb ?\\((.*)\\)/, `rgba($1,${opacity})`);\n    }\n    serie.style = [\n        {\n            name: 'unselected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth,\n                    dash: 1,\n                },\n            },\n        },\n        {\n            name: 'selected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth + 2,\n                    dash: 1,\n                },\n            },\n        },\n    ];\n    serie.name = spectrum.label || spectrum.id;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkU3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNncmFwaC9hZGRTdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLFVBQVUsUUFBUSxDQUN0QixLQUE4QixFQUM5QixRQUFrQixFQUNsQixVQUF3QixFQUFFO0lBRTFCLElBQUksRUFBRSxLQUFLLEdBQUcsU0FBUyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNoRSxpRUFBaUU7SUFDakUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDakMsS0FBSyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDckU7U0FBTTtRQUNMLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxXQUFXLE9BQU8sR0FBRyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxLQUFLLENBQUMsS0FBSyxHQUFHO1FBQ1o7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxFQUFFO29CQUNKLEtBQUs7b0JBQ0wsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLElBQUksRUFBRSxDQUFDO2lCQUNSO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRTtvQkFDSixLQUFLO29CQUNMLEtBQUssRUFBRSxTQUFTLEdBQUcsQ0FBQztvQkFDcEIsSUFBSSxFQUFFLENBQUM7aUJBQ1I7YUFDRjtTQUNGO0tBQ0YsQ0FBQztJQUNGLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQzdDLENBQUMifQ==","export const COLORS = [\n    '#FFB300',\n    '#803E75',\n    '#FF6800',\n    '#A6BDD7',\n    '#C10020',\n    '#CEA262',\n    '#817066',\n    '#007D34',\n    '#F6768E',\n    '#00538A',\n    '#FF7A5C',\n    '#53377A',\n    '#FF8E00',\n    '#B32851',\n    '#F4C800',\n    '#7F180D',\n    '#93AA00',\n    '#593315',\n    '#F13A13',\n    '#232C16',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzZ3JhcGgvY29sb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRztJQUNwQixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNWLENBQUMifQ==","import { xyFilterXPositive } from 'ml-spectra-processing';\nimport { addStyle } from './addStyle';\nimport { COLORS } from './colors';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n */\nexport function getJSGraph(analyses, options = {}) {\n    const { colors = COLORS, opacities = [1], linesWidth = [1], selector = {}, normalization, xAxis = {}, yAxis = {}, } = options;\n    let series = [];\n    let xLabel = xAxis.label;\n    let yLabel = yAxis.label;\n    let xUnits = xAxis.units;\n    let yUnits = yAxis.units;\n    for (let i = 0; i < analyses.length; i++) {\n        const analysis = analyses[i];\n        let serie = {};\n        let currentData = analysis.getNormalizedSpectrum({\n            selector,\n            normalization,\n        });\n        if (!currentData)\n            continue;\n        if (!xLabel)\n            xLabel = currentData.variables.x.label;\n        if (!yLabel)\n            yLabel = currentData.variables.y.label;\n        if (!xUnits)\n            xUnits = currentData.variables.x.units;\n        if (!yUnits)\n            yUnits = currentData.variables.y.units;\n        addStyle(serie, analysis, {\n            color: colors[i % colors.length],\n            opacity: opacities[i % opacities.length],\n            lineWidth: linesWidth[i % linesWidth.length],\n        });\n        serie.data = {\n            x: currentData.variables.x.data,\n            y: currentData.variables.y.data,\n        };\n        if (xAxis.logScale) {\n            serie.data = xyFilterXPositive(serie.data);\n        }\n        series.push(serie);\n    }\n    return {\n        axes: {\n            x: {\n                label: xLabel,\n                unit: xUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...xAxis,\n            },\n            y: {\n                label: yLabel,\n                unit: yUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...yAxis,\n            },\n        },\n        series,\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0SlNHcmFwaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qc2dyYXBoL2dldEpTR3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBdUJsQzs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsUUFBb0IsRUFBRSxVQUEwQixFQUFFO0lBQzNFLE1BQU0sRUFDSixNQUFNLEdBQUcsTUFBTSxFQUNmLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNmLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNoQixRQUFRLEdBQUcsRUFBRSxFQUNiLGFBQWEsRUFDYixLQUFLLEdBQUcsRUFBRSxFQUNWLEtBQUssR0FBRyxFQUFFLEdBQ1gsR0FBRyxPQUFPLENBQUM7SUFDWixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN6QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3pCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDekIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUV6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUN4QyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7WUFDL0MsUUFBUTtZQUNSLGFBQWE7U0FDZCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVztZQUFFLFNBQVM7UUFDM0IsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDaEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN4QyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQzdDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxJQUFJLEdBQUc7WUFDWCxDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMvQixDQUFDLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNoQyxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2xCLEtBQUssQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU87UUFDTCxJQUFJLEVBQUU7WUFDSixDQUFDLEVBQUU7Z0JBQ0QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osaUJBQWlCLEVBQUUsR0FBRztnQkFDdEIsZ0JBQWdCLEVBQUUsR0FBRztnQkFDckIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxLQUFLO2FBQ1Q7WUFDRCxDQUFDLEVBQUU7Z0JBQ0QsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osaUJBQWlCLEVBQUUsR0FBRztnQkFDdEIsZ0JBQWdCLEVBQUUsR0FBRztnQkFDckIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsR0FBRyxLQUFLO2FBQ1Q7U0FDRjtRQUNELE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQyJ9","export function getNormalizationAnnotations(filter = {}, boundary = { y: { min: '0px', max: '2000px' } }) {\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: boundary.y.min },\n                { x: exclusion.to, y: boundary.y.max },\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: boundary.y.min },\n                { x: filter.from, y: boundary.y.max },\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: boundary.y.min },\n                { x: Number.MAX_SAFE_INTEGER, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Tm9ybWFsaXphdGlvbkFubm90YXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzZ3JhcGgvZ2V0Tm9ybWFsaXphdGlvbkFubm90YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsU0FBNEIsRUFBRSxFQUM5QixRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUUvQyxJQUFJLEVBQUUsVUFBVSxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVqQyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLFdBQVcsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDekMsSUFBSSxVQUFVLEdBQUc7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7YUFDdkM7WUFDRCxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUM3QixXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxFQUFFLE1BQU07WUFDWixRQUFRLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDakQsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUU7YUFDdEM7WUFDRCxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxxQkFBcUI7U0FDakMsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO1FBQzNCLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDZixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRTthQUNsRDtZQUNELFdBQVcsRUFBRSxDQUFDO1lBQ2QsU0FBUyxFQUFFLHFCQUFxQjtTQUNqQyxDQUFDLENBQUM7S0FDSjtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMifQ==","export function appendDistinctParameter(values, key, value) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            values: [],\n            count: 0,\n        };\n    }\n    if (!values[key].values.includes(value)) {\n        values[key].values.push(value);\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kRGlzdGluY3RQYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9hcHBlbmREaXN0aW5jdFBhcmFtZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE1BQXFDLEVBQ3JDLEdBQVcsRUFDWCxLQUFhO0lBRWIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDWixHQUFHO1lBQ0gsTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztTQUNULENBQUM7S0FDSDtJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztJQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN0QixDQUFDIn0=","export function appendDistinctValue(values, key) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            count: 0,\n        };\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwZW5kRGlzdGluY3RWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FwcGVuZERpc3RpbmN0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxNQUFtQyxFQUNuQyxHQUFXO0lBRVgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUc7WUFDWixHQUFHO1lBQ0gsS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO0tBQ0g7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEIsQ0FBQyJ9","import { appendDistinctParameter } from './util/appendDistinctParameter';\nimport { appendDistinctValue } from './util/appendDistinctValue';\nexport class AnalysesManager {\n    constructor() {\n        this.analyses = [];\n    }\n    addAnalysis(analysis) {\n        let index = this.getAnalysisIndex(analysis.id);\n        if (index === undefined) {\n            this.analyses.push(analysis);\n        }\n        else {\n            this.analyses[index] = analysis;\n        }\n    }\n    getAnalyses(options = {}) {\n        const { ids } = options;\n        let analyses = [];\n        for (const analysis of this.analyses) {\n            if (!ids || ids.includes(analysis.id)) {\n                analyses.push(analysis);\n            }\n        }\n        return analyses;\n    }\n    getSpectra() {\n        const spectra = [];\n        for (const analysis of this.analyses) {\n            spectra.push(...analysis.spectra);\n        }\n        return spectra;\n    }\n    /**\n     * Get an array of objects (key + count) of all the titles\n     */\n    getDistinctTitles() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.title) {\n                appendDistinctValue(values, spectrum.title);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the units\n     */\n    getDistinctUnits() {\n        var _a;\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (let [, variable] of Object.entries(spectrum.variables)) {\n                    const units = (_a = variable.units) === null || _a === void 0 ? void 0 : _a.replace(/\\s+\\[.*/, '');\n                    if (units) {\n                        appendDistinctValue(values, units);\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the labels\n     */\n    getDistinctLabels() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (let [, variable] of Object.entries(spectrum.variables)) {\n                    appendDistinctValue(values, variable.label.replace(/\\s+\\[.*/, ''));\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the dataTypes\n     */\n    getDistinctDataTypes() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.dataType) {\n                appendDistinctValue(values, spectrum.dataType);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the meta\n     */\n    getDistinctMeta() {\n        let values = {};\n        for (let spectrum of this.getSpectra()) {\n            if (spectrum.meta) {\n                for (let key in spectrum.meta) {\n                    appendDistinctParameter(values, key, spectrum.meta[key]);\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    removeAllAnalyses() {\n        this.analyses.splice(0);\n    }\n    /**\n     * Remove the analysis from the AnalysesManager for the specified id\n     */\n    removeAnalysis(id) {\n        let index = this.getAnalysisIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.analyses.splice(index, 1);\n    }\n    /**\n     * Returns the index of the analysis in the analyses array\n     */\n    getAnalysisIndex(id) {\n        if (!id)\n            return undefined;\n        for (let i = 0; i < this.analyses.length; i++) {\n            let analysis = this.analyses[i];\n            if (analysis.id === id)\n                return i;\n        }\n        return undefined;\n    }\n    /**\n     * Checks if the ID of an analysis exists in the AnalysesManager\n     */\n    includes(id) {\n        const index = this.getAnalysisIndex(id);\n        return index === undefined ? false : !isNaN(index);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5hbHlzZXNNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FuYWx5c2VzTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU1qRSxNQUFNLE9BQU8sZUFBZTtJQUcxQjtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBa0I7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDOUI7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxVQUE4QixFQUFFO1FBQ2pELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxRQUFRLEdBQWUsRUFBRSxDQUFDO1FBQzlCLEtBQUssTUFBTSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUks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","// Based on https://github.com/scijs/cholesky-solve\r\n\r\n/*\r\nThe MIT License (MIT)\r\n\r\nCopyright (c) 2013 Eric Arnebäck\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in\r\nall copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\nTHE SOFTWARE.\r\n*/\r\n\r\nfunction ldlSymbolic(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n + 1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Lp /* output of size n + 1, not defined on input */,\r\n  Parent /* output of size n, not defined on input */,\r\n  Lnz /* output of size n, not defined on input */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let i, k, p, kk, p2;\r\n\r\n  for (k = 0; k < n; k++) {\r\n    /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\r\n    Parent[k] = -1; /* parent of k is not yet known */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      /* A (i,k) is nonzero (original or permuted A) */\r\n      i = Ai[p];\r\n\r\n      if (i < k) {\r\n        /* follow path from i to root of etree, stop at flagged node */\r\n        for (; Flag[i] !== k; i = Parent[i]) {\r\n          /* find parent of i if not yet determined */\r\n          if (Parent[i] === -1) Parent[i] = k;\r\n          Lnz[i]++; /* L (k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n      }\r\n    }\r\n  }\r\n  /* construct Lp index array from Lnz column counts */\r\n  Lp[0] = 0;\r\n  for (k = 0; k < n; k++) {\r\n    Lp[k + 1] = Lp[k] + Lnz[k];\r\n  }\r\n}\r\n\r\nfunction ldlNumeric(\r\n  n /* A and L are n-by-n, where n >= 0 */,\r\n  Ap /* input of size n+1, not modified */,\r\n  Ai /* input of size nz=Ap[n], not modified */,\r\n  Ax /* input of size nz=Ap[n], not modified */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Parent /* input of size n, not modified */,\r\n  Lnz /* output of size n, not defn. on input */,\r\n  Li /* output of size lnz=Lp[n], not defined on input */,\r\n  Lx /* output of size lnz=Lp[n], not defined on input */,\r\n  D /* output of size n, not defined on input */,\r\n  Y /* workspace of size n, not defn. on input or output */,\r\n  Pattern /* workspace of size n, not defn. on input or output */,\r\n  Flag /* workspace of size n, not defn. on input or output */,\r\n) {\r\n  let yi, lKi;\r\n  let i, k, p, kk, p2, len, top;\r\n  for (k = 0; k < n; k++) {\r\n    /* compute nonzero Pattern of kth row of L, in topological order */\r\n    Y[k] = 0.0; /* Y(0:k) is now all zero */\r\n    top = n; /* stack for pattern is empty */\r\n    Flag[k] = k; /* mark node k as visited */\r\n    Lnz[k] = 0; /* count of nonzeros in column k of L */\r\n    kk = k; /* kth original, or permuted, column */\r\n    p2 = Ap[kk + 1];\r\n    for (p = Ap[kk]; p < p2; p++) {\r\n      i = Ai[p]; /* get A(i,k) */\r\n      if (i <= k) {\r\n        Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\r\n        for (len = 0; Flag[i] !== k; i = Parent[i]) {\r\n          Pattern[len++] = i; /* L(k,i) is nonzero */\r\n          Flag[i] = k; /* mark i as visited */\r\n        }\r\n        while (len > 0) Pattern[--top] = Pattern[--len];\r\n      }\r\n    }\r\n    /* compute numerical values kth row of L (a sparse triangular solve) */\r\n    D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\r\n    Y[k] = 0.0;\r\n    for (; top < n; top++) {\r\n      i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\r\n      yi = Y[i]; /* get and clear Y(i) */\r\n      Y[i] = 0.0;\r\n      p2 = Lp[i] + Lnz[i];\r\n      for (p = Lp[i]; p < p2; p++) {\r\n        Y[Li[p]] -= Lx[p] * yi;\r\n      }\r\n      lKi = yi / D[i]; /* the nonzero entry L(k,i) */\r\n      D[k] -= lKi * yi;\r\n      Li[p] = k; /* store L(k,i) in column form of L */\r\n      Lx[p] = lKi;\r\n      Lnz[i]++; /* increment count of nonzeros in col i */\r\n    }\r\n\r\n    if (D[k] === 0.0) return k; /* failure, D(k,k) is zero */\r\n  }\r\n\r\n  return n; /* success, diagonal of D is all nonzero */\r\n}\r\n\r\nfunction ldlLsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = 0; j < n; j++) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[Li[p]] -= Lx[p] * X[j];\r\n    }\r\n  }\r\n}\r\nfunction ldlDsolve(\r\n  n /* D is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  D /* input of size n, not modified */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] /= D[j];\r\n  }\r\n}\r\nfunction ldlLTsolve(\r\n  n /* L is n-by-n, where n >= 0 */,\r\n  X /* size n. right-hand-side on input, soln. on output */,\r\n  Lp /* input of size n+1, not modified */,\r\n  Li /* input of size lnz=Lp[n], not modified */,\r\n  Lx /* input of size lnz=Lp[n], not modified */,\r\n) {\r\n  let j, p, p2;\r\n  for (j = n - 1; j >= 0; j--) {\r\n    p2 = Lp[j + 1];\r\n    for (p = Lp[j]; p < p2; p++) {\r\n      X[j] -= Lx[p] * X[Li[p]];\r\n    }\r\n  }\r\n}\r\n\r\nfunction ldlPerm(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[j] = B[P[j]];\r\n  }\r\n}\r\n\r\nfunction ldlPermt(\r\n  n /* size of X, B, and P */,\r\n  X /* output of size n. */,\r\n  B /* input of size n. */,\r\n  P /* input permutation array of size n. */,\r\n) {\r\n  let j;\r\n  for (j = 0; j < n; j++) {\r\n    X[P[j]] = B[j];\r\n  }\r\n}\r\n\r\nfunction prepare(M, n, P) {\r\n  // if a permutation was specified, apply it.\r\n  if (P) {\r\n    let Pinv = new Array(n);\r\n\r\n    for (let k = 0; k < n; k++) {\r\n      Pinv[P[k]] = k;\r\n    }\r\n\r\n    let Mt = []; // scratch memory\r\n    // Apply permutation. We make M into P*M*P^T\r\n    for (let a = 0; a < M.length; ++a) {\r\n      let ar = Pinv[M[a][0]];\r\n      let ac = Pinv[M[a][1]];\r\n\r\n      // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\r\n      // if permuted element is below diagonal, we simply transpose it.\r\n      if (ac < ar) {\r\n        let t = ac;\r\n        ac = ar;\r\n        ar = t;\r\n      }\r\n\r\n      Mt[a] = [];\r\n      Mt[a][0] = ar;\r\n      Mt[a][1] = ac;\r\n      Mt[a][2] = M[a][2];\r\n    }\r\n\r\n    M = Mt; // copy scratch memory.\r\n  } else {\r\n    // if P argument is null, we just use an identity permutation.\r\n    P = [];\r\n    for (let i = 0; i < n; ++i) {\r\n      P[i] = i;\r\n    }\r\n  }\r\n\r\n  // The sparse matrix we are decomposing is A.\r\n  // Now we shall create A from M.\r\n  let Ap = new Array(n + 1);\r\n  let Ai = new Array(M.length);\r\n  let Ax = new Array(M.length);\r\n\r\n  // count number of non-zero elements in columns.\r\n  let LNZ = [];\r\n  for (let i = 0; i < n; ++i) {\r\n    LNZ[i] = 0;\r\n  }\r\n  for (let a = 0; a < M.length; ++a) {\r\n    LNZ[M[a][1]]++;\r\n  }\r\n\r\n  Ap[0] = 0;\r\n  for (let i = 0; i < n; ++i) {\r\n    Ap[i + 1] = Ap[i] + LNZ[i];\r\n  }\r\n\r\n  let coloffset = [];\r\n  for (let a = 0; a < n; ++a) {\r\n    coloffset[a] = 0;\r\n  }\r\n\r\n  // go through all elements in M, and add them to sparse matrix A.\r\n  for (let i = 0; i < M.length; ++i) {\r\n    let e = M[i];\r\n    let col = e[1];\r\n\r\n    let adr = Ap[col] + coloffset[col];\r\n    Ai[adr] = e[0];\r\n    Ax[adr] = e[2];\r\n\r\n    coloffset[col]++;\r\n  }\r\n\r\n  let D = new Array(n);\r\n  let Y = new Array(n);\r\n  let Lp = new Array(n + 1);\r\n  let Parent = new Array(n);\r\n  let Lnz = new Array(n);\r\n  let Flag = new Array(n);\r\n  let Pattern = new Array(n);\r\n  let bp1 = new Array(n);\r\n  let x = new Array(n);\r\n  let d;\r\n\r\n  ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\r\n\r\n  let Lx = new Array(Lp[n]);\r\n  let Li = new Array(Lp[n]);\r\n\r\n  d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\r\n\r\n  if (d === n) {\r\n    return function (b) {\r\n      ldlPerm(n, bp1, b, P);\r\n      ldlLsolve(n, bp1, Lp, Li, Lx);\r\n      ldlDsolve(n, bp1, D);\r\n      ldlLTsolve(n, bp1, Lp, Li, Lx);\r\n      ldlPermt(n, x, bp1, P);\r\n\r\n      return x;\r\n    };\r\n  } else {\r\n    return null;\r\n  }\r\n}\r\n\r\nexport { prepare as default };\r\n","'use strict'\n\nmodule.exports = cuthillMckee\n\nfunction compareNum(a, b) { return a - b }\n\nfunction cuthillMckee(list, n) {\n  var adj = new Array(n)\n  var visited = new Array(n)\n  for(var i=0; i<n; ++i) {\n    adj[i]     = []\n    visited[i] = false\n  }\n\n  for(var i=0; i<list.length; ++i) {\n    var l = list[i]\n    adj[l[0]].push(l[1])\n  }\n\n  var toVisit = new Array(n)\n  var eol = 0\n  var ptr = 0\n  for(var i=0; i<n; ++i) {\n    if(visited[i]) {\n      continue\n    }\n    toVisit[eol++] = i\n    visited[i] = true\n    while(ptr < eol) {\n      var v = toVisit[ptr++]\n      var nbhd = adj[v]\n      nbhd.sort(compareNum)\n      for(var j=0; j<nbhd.length; ++j) {\n        var u = nbhd[j]\n        if(visited[u]) {\n          continue\n        }\n        visited[u] = true\n        toVisit[eol++] = u\n      }\n    }\n  }\n\n  var result = new Array(n)\n  for(var i=0; i<n; ++i) {\n    result[toVisit[i]] = i\n  }\n\n  return result\n}\n","import cuthillMckee from 'cuthill-mckee';\r\n\r\nconst getClosestNumber = (array = [], goal = 0) => {\r\n  const closest = array.reduce((prev, curr) => {\r\n    return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\r\n  });\r\n  return closest;\r\n};\r\n\r\nconst getCloseIndex = (array = [], goal = 0) => {\r\n  const closest = getClosestNumber(array, goal);\r\n  return array.indexOf(closest);\r\n};\r\n\r\nconst updateSystem = (matrix, y, weights) => {\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let newMatrix = new Array(matrix.length);\r\n  let newVector = new Float64Array(nbPoints);\r\n  for (let i = 0; i < l; i++) {\r\n    let w = weights[i];\r\n    let diag = i * 2;\r\n    let next = diag + 1;\r\n    newMatrix[diag] = matrix[diag].slice();\r\n    newMatrix[next] = matrix[next].slice();\r\n    if (w === 0) {\r\n      newVector[i] = 0;\r\n    } else {\r\n      newVector[i] = y[i] * w;\r\n      newMatrix[diag][2] += w;\r\n    }\r\n  }\r\n  newVector[l] = y[l] * weights[l];\r\n  newMatrix[l * 2] = matrix[l * 2].slice();\r\n  newMatrix[l * 2][2] += weights[l];\r\n\r\n  return [newMatrix, newVector];\r\n};\r\n\r\nconst getDeltaMatrix = (nbPoints, lambda) => {\r\n  let matrix = [];\r\n  let last = nbPoints - 1;\r\n  for (let i = 0; i < last; i++) {\r\n    matrix.push([i, i, lambda * 2]);\r\n    matrix.push([i + 1, i, -1 * lambda]);\r\n  }\r\n  matrix[0][2] = lambda;\r\n  matrix.push([last, last, lambda]);\r\n  return {\r\n    lowerTriangularNonZeros: matrix,\r\n    permutationEncodedArray: cuthillMckee(matrix, nbPoints),\r\n  };\r\n};\r\n\r\nexport { updateSystem, getDeltaMatrix, getCloseIndex, getClosestNumber };\r\n","import Cholesky from './choleskySolver';\r\nimport { updateSystem, getDeltaMatrix, getCloseIndex } from './utils';\r\n\r\n/**\r\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\r\n * for further information about the parameters you can get the [paper of airPLS](https://github.com/zmzhang/airPLS/blob/master/airPLS_manuscript.pdf)\r\n * @param {Array<number>} x - x axis data useful when control points or zones are submitted\r\n * @param {Array<number>} y - Original data\r\n * @param {object} [options={}] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximal number of iterations if the method does not reach the stop criterion\r\n * @param {number} [options.factorCriterion = 0.001] - Factor of the sum of absolute value of original data, to compute stop criterion\r\n * @param {Array<number>} [options.weights = [1,1,...]] - Initial weights vector, default each point has the same weight\r\n * @param {number} [options.lambda = 100] - Factor of weights matrix in -> [I + lambda D'D]z = x\r\n * @param {Array<number>} [options.controlPoints = []] - Array of x axis values to force that baseline cross those points.\r\n * @param {Array<number>} [options.baseLineZones = []] - Array of x axis values (as from - to), to force that baseline cross those zones.\r\n * @returns {{corrected: Array<number>, error: number, iteration: number, baseline: Array<number>}}\r\n */\r\nfunction airPLS(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    lambda = 100,\r\n    factorCriterion = 0.001,\r\n    weights = new Array(y.length).fill(1),\r\n    controlPoints = [],\r\n    baseLineZones = [],\r\n  } = options;\r\n\r\n  if (controlPoints.length > 0) {\r\n    controlPoints.forEach((e, i, arr) => (arr[i] = getCloseIndex(x, e)));\r\n  }\r\n  if (baseLineZones.length > 0) {\r\n    baseLineZones.forEach((range) => {\r\n      let indexFrom = getCloseIndex(x, range.from);\r\n      let indexTo = getCloseIndex(x, range.to);\r\n      if (indexFrom > indexTo) [indexFrom, indexTo] = [indexTo, indexFrom];\r\n      for (let i = indexFrom; i < indexTo; i++) {\r\n        controlPoints.push(i);\r\n      }\r\n    });\r\n  }\r\n\r\n  let baseline, iteration;\r\n  let nbPoints = y.length;\r\n  let l = nbPoints - 1;\r\n  let sumNegDifferences = Number.MAX_SAFE_INTEGER;\r\n  let stopCriterion =\r\n    factorCriterion * y.reduce((sum, e) => Math.abs(e) + sum, 0);\r\n\r\n  let { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(\r\n    nbPoints,\r\n    lambda,\r\n  );\r\n\r\n  for (\r\n    iteration = 0;\r\n    iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion;\r\n    iteration++\r\n  ) {\r\n    let [leftHandSide, rightHandSide] = updateSystem(\r\n      lowerTriangularNonZeros,\r\n      y,\r\n      weights,\r\n    );\r\n\r\n    let cho = Cholesky(leftHandSide, nbPoints, permutationEncodedArray);\r\n\r\n    baseline = cho(rightHandSide);\r\n\r\n    sumNegDifferences = 0;\r\n\r\n    let difference = y.map(calculateError);\r\n\r\n    let maxNegativeDiff = -1 * Number.MAX_SAFE_INTEGER;\r\n    for (let i = 1; i < l; i++) {\r\n      let diff = difference[i];\r\n      if (diff >= 0) {\r\n        weights[i] = 0;\r\n      } else {\r\n        weights[i] = Math.exp((iteration * diff) / sumNegDifferences);\r\n        if (maxNegativeDiff < diff) maxNegativeDiff = diff;\r\n      }\r\n    }\r\n\r\n    let value = Math.exp((iteration * maxNegativeDiff) / sumNegDifferences);\r\n    weights[0] = value;\r\n    weights[l] = value;\r\n    controlPoints.forEach((i) => (weights[i] = value));\r\n  }\r\n\r\n  return {\r\n    corrected: y.map((e, i) => e - baseline[i]),\r\n    baseline,\r\n    iteration,\r\n    error: sumNegDifferences,\r\n  };\r\n\r\n  function calculateError(e, i) {\r\n    let diff = e - baseline[i];\r\n    if (diff < 0) sumNegDifferences += diff;\r\n    return diff;\r\n  }\r\n}\r\n\r\nexport { airPLS as default };\r\n","import airpls from 'ml-airpls';\nimport sequentialFill from 'ml-array-sequential-fill';\n/**\n * Adaptive iteratively reweighted penalized least squares [1]\n *\n * This function calls ml-airpls\n *\n * References:\n * [1] Zhang, Z.-M.; Chen, S.; Liang, Y.-Z.\n * Baseline Correction Using Adaptive Iteratively Reweighted Penalized Least Squares.\n * Analyst 2010, 135 (5), 1138–1146. https://doi.org/10.1039/B922045C.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {object} [options.regression] - Options for the regression\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.regression.§Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function airPLSBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n  let output = airpls(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","export default function maybeToPrecision(value, digits) {\n  if (value < 0) {\n    value = 0 - value;\n    if (typeof digits === 'number') {\n      return `- ${value.toPrecision(digits)}`;\n    } else {\n      return `- ${value.toString()}`;\n    }\n  } else {\n    if (typeof digits === 'number') {\n      return value.toPrecision(digits);\n    } else {\n      return value.toString();\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport default function checkArraySize(x, y) {\n  if (!isAnyArray(x) || !isAnyArray(y)) {\n    throw new TypeError('x and y must be arrays');\n  }\n  if (x.length !== y.length) {\n    throw new RangeError('x and y arrays must have the same length');\n  }\n}\n","import { isAnyArray } from 'is-any-array';\n\nexport { default as maybeToPrecision } from './maybeToPrecision';\nexport { default as checkArrayLength } from './checkArrayLength';\n\nexport default class BaseRegression {\n  constructor() {\n    if (new.target === BaseRegression) {\n      throw new Error('BaseRegression must be subclassed');\n    }\n  }\n\n  predict(x) {\n    if (typeof x === 'number') {\n      return this._predict(x);\n    } else if (isAnyArray(x)) {\n      const y = [];\n      for (let i = 0; i < x.length; i++) {\n        y.push(this._predict(x[i]));\n      }\n      return y;\n    } else {\n      throw new TypeError('x must be a number or array');\n    }\n  }\n\n  _predict() {\n    throw new Error('_predict must be implemented');\n  }\n\n  train() {\n    // Do nothing for this package\n  }\n\n  toString() {\n    return '';\n  }\n\n  toLaTeX() {\n    return '';\n  }\n\n  /**\n   * Return the correlation coefficient of determination (r) and chi-square.\n   * @param {Array<number>} x\n   * @param {Array<number>} y\n   * @return {object}\n   */\n  score(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y) || x.length !== y.length) {\n      throw new Error('x and y must be arrays of the same length');\n    }\n\n    const n = x.length;\n    const y2 = new Array(n);\n    for (let i = 0; i < n; i++) {\n      y2[i] = this._predict(x[i]);\n    }\n\n    let xSum = 0;\n    let ySum = 0;\n    let chi2 = 0;\n    let rmsd = 0;\n    let xSquared = 0;\n    let ySquared = 0;\n    let xY = 0;\n    for (let i = 0; i < n; i++) {\n      xSum += y2[i];\n      ySum += y[i];\n      xSquared += y2[i] * y2[i];\n      ySquared += y[i] * y[i];\n      xY += y2[i] * y[i];\n      if (y[i] !== 0) {\n        chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n      }\n      rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n    }\n\n    const r =\n      (n * xY - xSum * ySum) /\n      Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n\n    return {\n      r: r,\n      r2: r * r,\n      chi2: chi2,\n      rmsd: Math.sqrt(rmsd / n),\n    };\n  }\n}\n","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\n\nexport default class PolynomialRegression extends BaseRegression {\n  constructor(x, y, degree) {\n    super();\n    if (x === true) {\n      this.degree = y.degree;\n      this.powers = y.powers;\n      this.coefficients = y.coefficients;\n    } else {\n      checkArrayLength(x, y);\n      regress(this, x, y, degree);\n    }\n  }\n\n  _predict(x) {\n    let y = 0;\n    for (let k = 0; k < this.powers.length; k++) {\n      y += this.coefficients[k] * Math.pow(x, this.powers[k]);\n    }\n    return y;\n  }\n\n  toJSON() {\n    return {\n      name: 'polynomialRegression',\n      degree: this.degree,\n      powers: this.powers,\n      coefficients: this.coefficients,\n    };\n  }\n\n  toString(precision) {\n    return this._toFormula(precision, false);\n  }\n\n  toLaTeX(precision) {\n    return this._toFormula(precision, true);\n  }\n\n  _toFormula(precision, isLaTeX) {\n    let sup = '^';\n    let closeSup = '';\n    let times = ' * ';\n    if (isLaTeX) {\n      sup = '^{';\n      closeSup = '}';\n      times = '';\n    }\n\n    let fn = '';\n    let str = '';\n    for (let k = 0; k < this.coefficients.length; k++) {\n      str = '';\n      if (this.coefficients[k] !== 0) {\n        if (this.powers[k] === 0) {\n          str = maybeToPrecision(this.coefficients[k], precision);\n        } else {\n          if (this.powers[k] === 1) {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x`;\n          } else {\n            str = `${maybeToPrecision(this.coefficients[k], precision) +\n              times}x${sup}${this.powers[k]}${closeSup}`;\n          }\n        }\n\n        if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n          str = ` + ${str}`;\n        } else if (k !== this.coefficients.length - 1) {\n          str = ` ${str}`;\n        }\n      }\n      fn = str + fn;\n    }\n    if (fn.charAt(0) === '+') {\n      fn = fn.slice(1);\n    }\n\n    return `f(x) = ${fn}`;\n  }\n\n  static load(json) {\n    if (json.name !== 'polynomialRegression') {\n      throw new TypeError('not a polynomial regression model');\n    }\n    return new PolynomialRegression(true, json);\n  }\n}\n\nfunction regress(pr, x, y, degree) {\n  const n = x.length;\n  let powers;\n  if (Array.isArray(degree)) {\n    powers = degree;\n    degree = powers.length;\n  } else {\n    degree++;\n    powers = new Array(degree);\n    for (let k = 0; k < degree; k++) {\n      powers[k] = k;\n    }\n  }\n  const F = new Matrix(n, degree);\n  const Y = new Matrix([y]);\n  for (let k = 0; k < degree; k++) {\n    for (let i = 0; i < n; i++) {\n      if (powers[k] === 0) {\n        F.set(i, k, 1);\n      } else {\n        F.set(i, k, Math.pow(x[i], powers[k]));\n      }\n    }\n  }\n\n  const FT = new MatrixTransposeView(F);\n  const A = FT.mmul(F);\n  const B = FT.mmul(new MatrixTransposeView(Y));\n\n  pr.degree = degree - 1;\n  pr.powers = powers;\n  pr.coefficients = solve(A, B).to1DArray();\n}\n","import PolynomialRegression from 'ml-regression-polynomial';\r\n\r\n/**\r\n * Iterative regression-based baseline correction\r\n * @param {Array<number>} x - Independent axis variable\r\n * @param {Array<number>} y - Dependent axis variable\r\n * @param {object} [options] - Options object\r\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\r\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\r\n * @param {*} [options.regressionOptions] - Options for regressionFunction\r\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\r\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\r\n */\r\nexport default function baselineCorrectionRegression(x, y, options = {}) {\r\n  let {\r\n    maxIterations = 100,\r\n    Regression = PolynomialRegression,\r\n    regressionOptions,\r\n    tolerance = 0.001,\r\n  } = options;\r\n\r\n  if (!regressionOptions && Regression === PolynomialRegression) {\r\n    regressionOptions = 3;\r\n  }\r\n\r\n  let baseline = y.slice();\r\n  let fitting = y.slice();\r\n  let oldFitting = y;\r\n  let iteration = 0;\r\n  let delta;\r\n  let regression;\r\n  while (iteration < maxIterations) {\r\n    // Calculate the fitting result\r\n    regression = new Regression(x, baseline, regressionOptions);\r\n\r\n    delta = 0;\r\n    for (let i = 0; i < baseline.length; i++) {\r\n      fitting[i] = regression.predict(x[i]);\r\n      if (baseline[i] > fitting[i]) {\r\n        baseline[i] = fitting[i];\r\n      }\r\n\r\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\r\n    }\r\n\r\n    // Stop criterion\r\n    if (delta < tolerance) {\r\n      break;\r\n    } else {\r\n      oldFitting = fitting.slice();\r\n      iteration++;\r\n    }\r\n  }\r\n\r\n  // removes baseline\r\n  let corrected = new Array(baseline.length);\r\n  for (let j = 0; j < baseline.length; j++) {\r\n    corrected[j] = y[j] - baseline[j];\r\n  }\r\n\r\n  return {\r\n    corrected,\r\n    delta,\r\n    iteration,\r\n    baseline,\r\n    regression: regression,\r\n  };\r\n}\r\n","import sequentialFill from 'ml-array-sequential-fill';\nimport baselineCorrection from 'ml-baseline-correction-regression';\n\n/**\n * Iterative polynomial fitting [1]\n *\n * Implementation based on ml-baseline-correction-regression\n *\n * References:\n * [1] Gan, F.; Ruan, G.; Mo, J.\n * Baseline Correction by Improved Iterative Polynomial Fitting with Automatic Threshold.\n *  Chemometrics and Intelligent Laboratory Systems 2006, 82 (1), 59–65.\n * https://doi.org/10.1016/j.chemolab.2005.08.009.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {Object} [options.regression]\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {Object} [options.regression]\n * @param {function} [options.regression.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {Object} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function iterativePolynomialBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n\n  let output = baselineCorrection(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculate a new array of the same size that is the cumulative values\n *\n * @param array - DoubleArray\n */\nexport function xCumulative(array) {\n    if (!isAnyArray(array)) {\n        throw new TypeError('input must be an array');\n    }\n    let newArray = new Float64Array(array.length);\n    if (array.length < 1)\n        return newArray;\n    newArray[0] = array[0];\n    for (let i = 1; i < array.length; i++) {\n        newArray[i] = newArray[i - 1] + array[i];\n    }\n    return newArray;\n}\n//# sourceMappingURL=xCumulative.js.map","/**\n * Returns the closest index of a `target`\n *\n * @param array - array of numbers\n * @param target - target\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\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            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\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            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n *\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex, from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is valdi\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n/**\n * XCheckLengths.\n *\n * @param array1 - First array.\n * @param array2 - Second array.\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//# sourceMappingURL=xCheck.js.map","import { xCheck } from './xCheck';\n/**\n * This function pads an array\n *\n *\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm = '' } = options;\n    xCheck(array);\n    if (!algorithm) {\n        if (array instanceof Float64Array) {\n            return array.slice();\n        }\n        else {\n            return Float64Array.from(array);\n        }\n    }\n    let result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    let fromEnd = size + array.length;\n    let toEnd = 2 * size + array.length;\n    switch (algorithm.toLowerCase()) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array[array.length - 1];\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw Error('xPadding: unknown algorithm');\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function')\n        throw Error('fct has to be a function');\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    array = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < array.length - window + 1; i++) {\n        let subArray = new Float64Array(array.buffer, i * 8, window);\n        // we will send a view to the original buffer\n        newArray.push(fct(subArray));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import mean from 'ml-array-mean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, mean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import median from 'ml-array-median';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - the array that will be rotated\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, median, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Throw an error in no an object of x,y arrays\n *\n * @param data - array of points {x,y,z}\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (typeof data !== 'object' || !isAnyArray(data.x) || !isAnyArray(data.y)) {\n        throw new Error('Data 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 must have the same length');\n    }\n    if (minLength) {\n        if (data.x.length < minLength) {\n            throw new Error(`data.x must have a length of at least ${minLength}`);\n        }\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\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)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import max from 'ml-array-max';\nimport { xCumulative } from '../x/xCumulative';\nimport { xyCheck } from './xyCheck';\nimport { xyMaxYPoint } from './xyMaxYPoint';\nconst STEPS = [0.25, 0.5, 0.75];\n/**\n * Cumulative Distribution Statistics\n *\n * @param data - array of points {x,y}\n * @returns x0, x25, x50, x75, x100, mode (x for maxY)\n */\nexport function xyCumulativeDistributionStatistics(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x.length === 0) {\n        throw new Error('xyCumulativeDistributionStatistics: Array length must be greater than 0');\n    }\n    const cumulativeSum = xCumulative(y);\n    const maxY = max(cumulativeSum);\n    for (let i = 0; i < cumulativeSum.length; i++) {\n        cumulativeSum[i] /= maxY;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const result = {};\n    // need to find the x values closest to STEPS/100\n    result.x0 = x[0];\n    result.x100 = x[x.length - 1];\n    let currentStep = 0;\n    breakPoint: for (let i = 1; i < cumulativeSum.length; i++) {\n        while (STEPS[currentStep] < cumulativeSum[i]) {\n            result[`x${STEPS[currentStep] * 100}`] =\n                x[i - 1] +\n                    (x[i] - x[i - 1]) *\n                        ((STEPS[currentStep] - cumulativeSum[i - 1]) /\n                            (cumulativeSum[i] - cumulativeSum[i - 1]));\n            currentStep++;\n            if (currentStep === STEPS.length)\n                break breakPoint;\n        }\n    }\n    result.xMode = xyMaxYPoint(data).x;\n    let sumXY = 0;\n    let sumY = 0;\n    for (let i = 0; i < x.length; i++) {\n        sumXY += x[i] * y[i];\n        sumY += y[i];\n    }\n    result.xMean = sumXY / sumY;\n    return result;\n}\n//# sourceMappingURL=xyCumulativeDistributionStatistics.js.map","import { xRollingAverage } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingAverageBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingAverage(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is of type array\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n *\n * @param array - array of numbers\n * @param target - target\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\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            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\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            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n *\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex, from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\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//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\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//# sourceMappingURL=xMinValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n * @export\n * @param {Array} spectrum\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the spectrum length\n */\nexport function rollingBall(spectrum, options = {}) {\n  if (!isAnyArray(spectrum)) {\n    throw new Error('Spectrum must be an array');\n  }\n\n  if (spectrum.length === 0) {\n    throw new TypeError('Spectrum must not be empty');\n  }\n\n  const numberPoints = spectrum.length;\n  const maxima = new Float64Array(numberPoints);\n  const minima = new Float64Array(numberPoints);\n  const baseline = new Float64Array(numberPoints);\n\n  // windowM 4 percent of spectrum length\n  // windowS 8 percent of spectrum length\n  const {\n    windowM = Math.round(numberPoints * 0.04),\n    windowS = Math.round(numberPoints * 0.08),\n  } = options;\n\n  // fi(1) in original paper\n  for (let i = 0; i < spectrum.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, spectrum.length);\n\n    minima[i] = xMinValue(spectrum, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  // fi in original paper\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowM);\n    let windowRight = Math.min(i + windowM + 1, minima.length);\n    maxima[i] = xMaxValue(minima, {\n      fromIndex: windowLeft,\n      toIndex: windowRight,\n    });\n  }\n\n  for (let i = 0; i < minima.length; i++) {\n    let windowLeft = Math.max(0, i - windowS);\n    let windowRight = Math.min(i + windowS + 1, maxima.length);\n    baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n  }\n\n  return baseline;\n}\n","import { rollingBall } from 'ml-rolling-ball-baseline';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Algorithm described in (1), but in the implementation here the window width does not change.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the specturm length\n * @returns {BaselineOutput}\n */\nexport function rollingBallBaseline(ys, options = {}) {\n  const baseline = rollingBall(ys, options);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","import { xRollingMedian } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingMedianBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window: window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = Object.assign({}, defaults, options);\n  let baseline = xRollingMedian(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline: baseline, correctedSpectrum: corrected };\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } 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 (!isAnyArray(input)) {\n    throw new Error('input must be an array');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(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 { norm as default };\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 a growing series');\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_SAFE_INTEGER;\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 >= nextX) throw new Error('x must be a growing series');\n    if (previousX <= min && min <= nextX) {\n      add = integral(0, min - previousX, slope, previousY);\n      sumAtMin = currentValue + add;\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","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","'use strict';\n\nvar defaultOptions = {\n  size: 1,\n  value: 0\n};\n\n/**\n * Case when the entry is an array\n * @param data\n * @param options\n * @returns {Array}\n */\nfunction arrayCase(data, options) {\n  var len = data.length;\n  if (typeof options.size === 'number') {\n    options.size = [options.size, options.size];\n  }\n\n  var cond = len + options.size[0] + options.size[1];\n\n  var output;\n  if (options.output) {\n    if (options.output.length !== cond) {\n      throw new RangeError('Wrong output size');\n    }\n    output = options.output;\n  } else {\n    output = new Array(cond);\n  }\n\n  var i;\n  if (options.value === 'circular') {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) {\n        output[i] = data[(len - (options.size[0] % len) + i) % len];\n      } else if (i < options.size[0] + len) {\n        output[i] = data[i - options.size[0]];\n      } else {\n        output[i] = data[(i - options.size[0]) % len];\n      }\n    }\n  } else if (options.value === 'replicate') {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = data[0];\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = data[len - 1];\n    }\n  } else if (options.value === 'symmetric') {\n    if (options.size[0] > len || options.size[1] > len) {\n      throw new RangeError(\n        'expanded value should not be bigger than the data length'\n      );\n    }\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = data[options.size[0] - 1 - i];\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = data[2 * len + options.size[0] - i - 1];\n    }\n  } else {\n    for (i = 0; i < cond; i++) {\n      if (i < options.size[0]) output[i] = options.value;\n      else if (i < options.size[0] + len) output[i] = data[i - options.size[0]];\n      else output[i] = options.value;\n    }\n  }\n\n  return output;\n}\n\n/**\n * Case when the entry is a matrix\n * @param data\n * @param options\n * @returns {Array}\n */\nfunction matrixCase(data, options) {\n  // var row = data.length;\n  // var col = data[0].length;\n  if (options.size[0] === undefined) {\n    options.size = [options.size, options.size, options.size, options.size];\n  }\n  throw new Error('matrix not supported yet, sorry');\n}\n\n/**\n * Pads and array\n * @param {Array <number>} data\n * @param {object} options\n */\nfunction padArray(data, options) {\n  options = Object.assign({}, defaultOptions, options);\n  if (Array.isArray(data)) {\n    if (Array.isArray(data[0])) return matrixCase(data, options);\n    else return arrayCase(data, options);\n  } else {\n    throw new TypeError('data should be an array');\n  }\n}\n\nmodule.exports = padArray;\n","import { Matrix, MatrixTransposeView, inverse } from 'ml-matrix';\nimport padArray from 'ml-pad-array';\nfunction factorial(n) {\n    let r = 1;\n    while (n > 0)\n        r *= n--;\n    return r;\n}\nexport default function savitzkyGolay(data, h, options = {}) {\n    const { windowSize = 5, derivative = 1, polynomial = 2, pad = 'none', padValue = 'replicate', } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\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    let C, norm;\n    let step = Math.floor(windowSize / 2);\n    if (pad === 'pre') {\n        data = padArray(data, { size: step, value: padValue });\n    }\n    let ans = new Array(data.length - 2 * step);\n    if (windowSize === 5 &&\n        polynomial === 2 &&\n        (derivative === 1 || derivative === 2)) {\n        if (derivative === 1) {\n            C = [-2, -1, 0, 1, 2];\n            norm = 10;\n        }\n        else {\n            C = [2, -1, -2, -1, 2];\n            norm = 7;\n        }\n    }\n    else {\n        let J = Matrix.ones(windowSize, polynomial + 1);\n        let inic = -(windowSize - 1) / 2;\n        for (let i = 0; i < J.rows; i++) {\n            for (let j = 0; j < J.columns; j++) {\n                if (inic + 1 !== 0 || j !== 0)\n                    J.set(i, j, Math.pow(inic + i, j));\n            }\n        }\n        let Jtranspose = new MatrixTransposeView(J);\n        let Jinv = inverse(Jtranspose.mmul(J));\n        C = Jinv.mmul(Jtranspose);\n        C = C.getRow(derivative);\n        norm = 1 / factorial(derivative);\n    }\n    let det = norm * Math.pow(h, derivative);\n    for (let k = 0; k < data.length - 2 * step; k++) {\n        let d = 0;\n        for (let l = 0; l < C.length; l++)\n            d += (C[l] * data[l + k]) / det;\n        ans[k] = d;\n    }\n    if (pad === 'post') {\n        ans = padArray(ans, { size: step, value: padValue });\n    }\n    return ans;\n}\n//# sourceMappingURL=index.js.map","'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 { airPLSBaseline, rollingAverageBaseline, iterativePolynomialBaseline, rollingBallBaseline, rollingMedianBaseline, } from 'baselines';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport normed from 'ml-array-normed';\nimport rescale from 'ml-array-rescale';\nimport equallySpaced from 'ml-array-xy-equally-spaced';\nimport filterX from 'ml-array-xy-filter-x';\nimport savitzkyGolay from 'ml-savitzky-golay';\nimport { xDivide, xSubtract, xMultiply, xAdd, xIsMonotone, xyEnsureGrowingX, } from 'ml-spectra-processing';\nimport Stat from 'ml-stat/array';\nexport function getNormalizedSpectrum(spectrum, options = {}) {\n    var _a;\n    let data = {\n        x: spectrum.variables.x.data,\n        y: spectrum.variables.y.data,\n    };\n    let newSpectrum = {\n        variables: {\n            x: {\n                data: spectrum.variables.x.data,\n                units: spectrum.variables.x.units,\n                label: spectrum.variables.x.label,\n            },\n            y: {\n                data: spectrum.variables.y.data,\n                units: spectrum.variables.y.units,\n                label: spectrum.variables.y.label,\n            },\n        },\n    };\n    if (spectrum.title)\n        newSpectrum.title = spectrum.title;\n    if (spectrum.dataType)\n        newSpectrum.dataType = spectrum.dataType;\n    if (spectrum.meta)\n        newSpectrum.meta = spectrum.meta;\n    let { from = spectrum.variables.x.min, to = spectrum.variables.x.max, numberOfPoints, filters = [], exclusions = [], processing = '', keepYUnits = false, } = options;\n    let { x, y } = filterX(data, { from, to });\n    switch (processing) {\n        case 'firstDerivative':\n            if (options.processing) {\n                newSpectrum.variables.y.units = '';\n                newSpectrum.variables.y.label =\n                    newSpectrum.variables.y.label &&\n                        `1st derivative of ${newSpectrum.variables.y.label.replace(/\\s*\\[.*\\]/, '')}`;\n                y = savitzkyGolay(y, 1, {\n                    derivative: 1,\n                    polynomial: 2,\n                    windowSize: 5,\n                });\n                x = x.slice(2, x.length - 2);\n            }\n            break;\n        case 'secondDerivative':\n            if (options.processing) {\n                newSpectrum.variables.y.units = '';\n                newSpectrum.variables.y.label =\n                    newSpectrum.variables.y.label &&\n                        `2nd derivative of ${newSpectrum.variables.y.label.replace(/\\s*\\[.*\\]/, '')}`;\n                y = savitzkyGolay(y, 1, {\n                    derivative: 2,\n                    polynomial: 2,\n                    windowSize: 5,\n                });\n                x = x.slice(2, x.length - 2);\n            }\n            break;\n        case 'thirdDerivative':\n            if (options.processing) {\n                newSpectrum.variables.y.units = '';\n                newSpectrum.variables.y.label =\n                    newSpectrum.variables.y.label &&\n                        `3rd derivative of ${newSpectrum.variables.y.label.replace(/\\s*\\[.*\\]/, '')}`;\n                y = savitzkyGolay(y, 1, {\n                    derivative: 3,\n                    polynomial: 2,\n                    windowSize: 5,\n                });\n                x = x.slice(2, x.length - 2);\n            }\n            break;\n        default:\n    }\n    if (!keepYUnits && filters.length) {\n        // filters change the y axis, we get rid of the units\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label = (_a = newSpectrum.variables.y.label) === null || _a === void 0 ? void 0 : _a.replace(/\\s*\\[.*\\]/, '');\n    }\n    for (let filter of filters) {\n        let filterOptions = filter.options || {};\n        switch (filter.name.toLowerCase()) {\n            case 'centermean': {\n                let mean = Stat.mean(y);\n                y = xSubtract(y, mean);\n                break;\n            }\n            case 'dividebysd': {\n                let std = Stat.standardDeviation(y);\n                y = xDivide(y, std);\n                break;\n            }\n            case 'normalize': {\n                y = normed(y, {\n                    sumValue: filterOptions.value ? Number(filterOptions.value) : 1,\n                    algorithm: 'absolute',\n                });\n                break;\n            }\n            case 'rescale': {\n                y = rescale(y, {\n                    min: filterOptions.min ? Number(filterOptions.min) : 0,\n                    max: filterOptions.max ? Number(filterOptions.max) : 1,\n                });\n                break;\n            }\n            case 'dividebymax': {\n                let maxValue = max(y);\n                y = xDivide(y, maxValue);\n                break;\n            }\n            case 'multiply': {\n                y = xMultiply(y, filterOptions.value ? Number(filterOptions.value) : 1);\n                break;\n            }\n            case 'add': {\n                y = xAdd(y, filterOptions.value ? Number(filterOptions.value) : 0);\n                break;\n            }\n            case 'airplsbaseline': {\n                y = airPLSBaseline(y, filterOptions).correctedSpectrum;\n                break;\n            }\n            case 'rollingaveragebaseline': {\n                y = rollingAverageBaseline(y, filterOptions).correctedSpectrum;\n                break;\n            }\n            case 'iterativepolynomialbaseline': {\n                y = iterativePolynomialBaseline(y, undefined, filterOptions).correctedSpectrum;\n                break;\n            }\n            case 'rollingballbaseline': {\n                y = rollingBallBaseline(y, filterOptions).correctedSpectrum;\n                break;\n            }\n            case 'rollingmedianbaseline': {\n                y = rollingMedianBaseline(y, filterOptions).correctedSpectrum;\n                break;\n            }\n            case 'ensuregrowing': {\n                const ans = xyEnsureGrowingX({ x, y });\n                x = ans.x;\n                y = ans.y;\n                break;\n            }\n            case '':\n            case undefined:\n                break;\n            default:\n                throw new Error(`Unknown process kind: ${filter.name}`);\n        }\n    }\n    if (!numberOfPoints) {\n        data = filterX({ x, y }, { from, to, exclusions });\n    }\n    else {\n        data = equallySpaced({ x, y }, { from, to, numberOfPoints, exclusions });\n    }\n    newSpectrum.variables.x.data = x;\n    newSpectrum.variables.x.min = min(x);\n    newSpectrum.variables.x.max = max(x);\n    newSpectrum.variables.x.isMonotone = xIsMonotone(x);\n    newSpectrum.variables.y.data = y;\n    newSpectrum.variables.y.min = min(y);\n    newSpectrum.variables.y.max = max(y);\n    newSpectrum.variables.y.isMonotone = xIsMonotone(y);\n    return newSpectrum;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Tm9ybWFsaXplZFNwZWN0cnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZ2V0Tm9ybWFsaXplZFNwZWN0cnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIscUJBQXFCLEdBQ3RCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDdkMsT0FBTyxhQUFhLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDM0MsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixXQUFXLEVBQ1gsZ0JBQWdCLEdBQ2pCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBSWpDLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsUUFBa0IsRUFDbEIsVUFBcUMsRUFBRTs7SUFFdkMsSUFBSSxJQUFJLEdBQUc7UUFDVCxDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUM1QixDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUM3QixDQUFDO0lBQ0YsSUFBSSxXQUFXLEdBQWE7UUFDMUIsU0FBUyxFQUFFO1lBQ1QsQ0FBQyxFQUFFO2dCQUNELElBQUksRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUMvQixLQUFLLEVBQUUsUUFBUSxDQUFD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","/*\nThe MIT License (MIT)\nCopyright © 2006-2007 Kevin C. Olbrich\nCopyright © 2010-2016 LIM SAS (http://lim.eu) - Julien Sanchez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Qty = factory());\n}(this, (function () { 'use strict';\n\n  /**\n   * Tests if a value is a string\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a string, false otherwise\n   */\n  function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n  }\n\n  /*\n   * Prefer stricter Number.isFinite if currently supported.\n   * To be dropped when ES6 is finalized. Obsolete browsers will\n   * have to use ES6 polyfills.\n   */\n  var isFiniteImpl = Number.isFinite || window.isFinite;\n  /**\n   * Tests if a value is a number\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a number, false otherwise\n   */\n  function isNumber(value) {\n    // Number.isFinite allows not to consider NaN or '1' as numbers\n    return isFiniteImpl(value);\n  }\n\n  /*\n   * Identity function\n   */\n  function identity(value) {\n    return value;\n  }\n\n  /**\n   * Returns unique strings from list\n   *\n   * @param {string[]} strings - array of strings\n   *\n   *\n   * @returns {string[]} a new array of strings without duplicates\n   */\n  function uniq(strings) {\n    var seen = {};\n    return strings.filter(function(item) {\n      return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n  }\n\n  function compareArray(array1, array2) {\n    if (array2.length !== array1.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array2[i].compareArray) {\n        if (!array2[i].compareArray(array1[i])) {\n          return false;\n        }\n      }\n      if (array2[i] !== array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function assign(target, properties) {\n    Object.keys(properties).forEach(function(key) {\n      target[key] = properties[key];\n    });\n  }\n\n  /**\n   * Safely multiplies numbers while avoiding floating errors\n   * like 0.1 * 0.1 => 0.010000000000000002\n   *\n   * @param {...number} numbers - numbers to multiply\n   *\n   * @returns {number} result\n   */\n  function mulSafe() {\n    var result = 1, decimals = 0;\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      decimals = decimals + getFractional(arg);\n      result *= arg;\n    }\n\n    return decimals !== 0 ? round(result, decimals) : result;\n  }\n\n  /**\n   * Safely divides two numbers while avoiding floating errors\n   * like 0.3 / 0.05 => 5.999999999999999\n   *\n   * @returns {number} result\n   * @param {number} num Numerator\n   * @param {number} den Denominator\n   */\n  function divSafe(num, den) {\n    if (den === 0) {\n      throw new Error(\"Divide by zero\");\n    }\n\n    var factor = Math.pow(10, getFractional(den));\n    var invDen = factor / (factor * den);\n\n    return mulSafe(num, invDen);\n  }\n\n  /**\n   * Rounds value at the specified number of decimals\n   *\n   * @param {number} val - value to round\n   * @param {number} decimals - number of decimals\n   *\n   * @returns {number} rounded number\n   */\n  function round(val, decimals) {\n    return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  function getFractional(num) {\n    // Check for NaNs or Infinities\n    if (!isFinite(num)) {\n      return 0;\n    }\n\n    // Faster than parsing strings\n    // http://jsperf.com/count-decimals/2\n    var count = 0;\n    while (num % 1 !== 0) {\n      num *= 10;\n      count++;\n    }\n    return count;\n  }\n\n  /**\n   * Custom error type definition\n   * @constructor\n   */\n  function QtyError() {\n    var err;\n    if (!this) { // Allows to instantiate QtyError without new()\n      err = Object.create(QtyError.prototype);\n      QtyError.apply(err, arguments);\n      return err;\n    }\n    err = Error.apply(this, arguments);\n    this.name = \"QtyError\";\n    this.message = err.message;\n    this.stack = err.stack;\n  }\n  QtyError.prototype = Object.create(Error.prototype, {constructor: { value: QtyError }});\n\n  /*\n   * Throws incompatible units error\n   * @param {string} left - units\n   * @param {string} right - units incompatible with first argument\n   * @throws \"Incompatible units\" error\n   */\n  function throwIncompatibleUnits(left, right) {\n    throw new QtyError(\"Incompatible units: \" + left + \" and \" + right);\n  }\n\n  var UNITS = {\n    /* prefixes */\n    \"<googol>\" : [[\"googol\"], 1e100, \"prefix\"],\n    \"<kibi>\"  :  [[\"Ki\",\"Kibi\",\"kibi\"], Math.pow(2,10), \"prefix\"],\n    \"<mebi>\"  :  [[\"Mi\",\"Mebi\",\"mebi\"], Math.pow(2,20), \"prefix\"],\n    \"<gibi>\"  :  [[\"Gi\",\"Gibi\",\"gibi\"], Math.pow(2,30), \"prefix\"],\n    \"<tebi>\"  :  [[\"Ti\",\"Tebi\",\"tebi\"], Math.pow(2,40), \"prefix\"],\n    \"<pebi>\"  :  [[\"Pi\",\"Pebi\",\"pebi\"], Math.pow(2,50), \"prefix\"],\n    \"<exi>\"   :  [[\"Ei\",\"Exi\",\"exi\"], Math.pow(2,60), \"prefix\"],\n    \"<zebi>\"  :  [[\"Zi\",\"Zebi\",\"zebi\"], Math.pow(2,70), \"prefix\"],\n    \"<yebi>\"  :  [[\"Yi\",\"Yebi\",\"yebi\"], Math.pow(2,80), \"prefix\"],\n    \"<yotta>\" :  [[\"Y\",\"Yotta\",\"yotta\"], 1e24, \"prefix\"],\n    \"<zetta>\" :  [[\"Z\",\"Zetta\",\"zetta\"], 1e21, \"prefix\"],\n    \"<exa>\"   :  [[\"E\",\"Exa\",\"exa\"], 1e18, \"prefix\"],\n    \"<peta>\"  :  [[\"P\",\"Peta\",\"peta\"], 1e15, \"prefix\"],\n    \"<tera>\"  :  [[\"T\",\"Tera\",\"tera\"], 1e12, \"prefix\"],\n    \"<giga>\"  :  [[\"G\",\"Giga\",\"giga\"], 1e9, \"prefix\"],\n    \"<mega>\"  :  [[\"M\",\"Mega\",\"mega\"], 1e6, \"prefix\"],\n    \"<kilo>\"  :  [[\"k\",\"kilo\"], 1e3, \"prefix\"],\n    \"<hecto>\" :  [[\"h\",\"Hecto\",\"hecto\"], 1e2, \"prefix\"],\n    \"<deca>\"  :  [[\"da\",\"Deca\",\"deca\",\"deka\"], 1e1, \"prefix\"],\n    \"<deci>\"  :  [[\"d\",\"Deci\",\"deci\"], 1e-1, \"prefix\"],\n    \"<centi>\"  : [[\"c\",\"Centi\",\"centi\"], 1e-2, \"prefix\"],\n    \"<milli>\" :  [[\"m\",\"Milli\",\"milli\"], 1e-3, \"prefix\"],\n    \"<micro>\"  : [\n      [\"u\",\"\\u03BC\"/*µ as greek letter*/,\"\\u00B5\"/*µ as micro sign*/,\"Micro\",\"mc\",\"micro\"],\n      1e-6,\n      \"prefix\"\n    ],\n    \"<nano>\"  :  [[\"n\",\"Nano\",\"nano\"], 1e-9, \"prefix\"],\n    \"<pico>\"  :  [[\"p\",\"Pico\",\"pico\"], 1e-12, \"prefix\"],\n    \"<femto>\" :  [[\"f\",\"Femto\",\"femto\"], 1e-15, \"prefix\"],\n    \"<atto>\"  :  [[\"a\",\"Atto\",\"atto\"], 1e-18, \"prefix\"],\n    \"<zepto>\" :  [[\"z\",\"Zepto\",\"zepto\"], 1e-21, \"prefix\"],\n    \"<yocto>\" :  [[\"y\",\"Yocto\",\"yocto\"], 1e-24, \"prefix\"],\n\n    \"<1>\"     :  [[\"1\", \"<1>\"], 1, \"\"],\n    /* length units */\n    \"<meter>\" :  [[\"m\",\"meter\",\"meters\",\"metre\",\"metres\"], 1.0, \"length\", [\"<meter>\"] ],\n    \"<inch>\"  :  [[\"in\",\"inch\",\"inches\",\"\\\"\"], 0.0254, \"length\", [\"<meter>\"]],\n    \"<foot>\"  :  [[\"ft\",\"foot\",\"feet\",\"'\"], 0.3048, \"length\", [\"<meter>\"]],\n    \"<yard>\"  :  [[\"yd\",\"yard\",\"yards\"], 0.9144, \"length\", [\"<meter>\"]],\n    \"<mile>\"  :  [[\"mi\",\"mile\",\"miles\"], 1609.344, \"length\", [\"<meter>\"]],\n    \"<naut-mile>\" : [[\"nmi\",\"naut-mile\"], 1852, \"length\", [\"<meter>\"]],\n    \"<league>\":  [[\"league\",\"leagues\"], 4828, \"length\", [\"<meter>\"]],\n    \"<furlong>\": [[\"furlong\",\"furlongs\"], 201.2, \"length\", [\"<meter>\"]],\n    \"<rod>\"   :  [[\"rd\",\"rod\",\"rods\"], 5.029, \"length\", [\"<meter>\"]],\n    \"<mil>\"   :  [[\"mil\",\"mils\"], 0.0000254, \"length\", [\"<meter>\"]],\n    \"<angstrom>\"  :[[\"ang\",\"angstrom\",\"angstroms\"], 1e-10, \"length\", [\"<meter>\"]],\n    \"<fathom>\" : [[\"fathom\",\"fathoms\"], 1.829, \"length\", [\"<meter>\"]],\n    \"<pica>\"  : [[\"pica\",\"picas\"], 0.00423333333, \"length\", [\"<meter>\"]],\n    \"<point>\" : [[\"pt\",\"point\",\"points\"], 0.000352777778, \"length\", [\"<meter>\"]],\n    \"<redshift>\" : [[\"z\",\"red-shift\", \"redshift\"], 1.302773e26, \"length\", [\"<meter>\"]],\n    \"<AU>\"    : [[\"AU\",\"astronomical-unit\"], 149597900000, \"length\", [\"<meter>\"]],\n    \"<light-second>\":[[\"ls\",\"light-second\"], 299792500, \"length\", [\"<meter>\"]],\n    \"<light-minute>\":[[\"lmin\",\"light-minute\"], 17987550000, \"length\", [\"<meter>\"]],\n    \"<light-year>\" : [[\"ly\",\"light-year\"], 9460528000000000, \"length\", [\"<meter>\"]],\n    \"<parsec>\"  : [[\"pc\",\"parsec\",\"parsecs\"], 30856780000000000, \"length\", [\"<meter>\"]],\n    \"<datamile>\"  :  [[\"DM\",\"datamile\"], 1828.8, \"length\", [\"<meter>\"]],\n\n    /* mass */\n    \"<kilogram>\" : [[\"kg\",\"kilogram\",\"kilograms\"], 1.0, \"mass\", [\"<kilogram>\"]],\n    \"<AMU>\" : [[\"u\",\"AMU\",\"amu\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<dalton>\" : [[\"Da\",\"Dalton\",\"Daltons\",\"dalton\",\"daltons\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<slug>\" : [[\"slug\",\"slugs\"], 14.5939029, \"mass\", [\"<kilogram>\"]],\n    \"<short-ton>\" : [[\"tn\",\"ton\",\"short-ton\"], 907.18474, \"mass\", [\"<kilogram>\"]],\n    \"<metric-ton>\":[[\"tonne\",\"metric-ton\"], 1000, \"mass\", [\"<kilogram>\"]],\n    \"<carat>\" : [[\"ct\",\"carat\",\"carats\"], 0.0002, \"mass\", [\"<kilogram>\"]],\n    \"<pound>\" : [[\"lbs\",\"lb\",\"pound\",\"pounds\",\"#\"], 0.45359237, \"mass\", [\"<kilogram>\"]],\n    \"<ounce>\" : [[\"oz\",\"ounce\",\"ounces\"], 0.0283495231, \"mass\", [\"<kilogram>\"]],\n    \"<gram>\"    :  [[\"g\",\"gram\",\"grams\",\"gramme\",\"grammes\"], 1e-3, \"mass\", [\"<kilogram>\"]],\n    \"<grain>\" : [[\"grain\",\"grains\",\"gr\"], 6.479891e-5, \"mass\", [\"<kilogram>\"]],\n    \"<dram>\"  : [[\"dram\",\"drams\",\"dr\"], 0.0017718452, \"mass\",[\"<kilogram>\"]],\n    \"<stone>\" : [[\"stone\",\"stones\",\"st\"],6.35029318, \"mass\",[\"<kilogram>\"]],\n\n    /* area */\n    \"<hectare>\":[[\"hectare\"], 10000, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<acre>\":[[\"acre\",\"acres\"], 4046.85642, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<sqft>\":[[\"sqft\"], 1, \"area\", [\"<foot>\",\"<foot>\"]],\n\n    /* volume */\n    \"<liter>\" : [[\"l\",\"L\",\"liter\",\"liters\",\"litre\",\"litres\"], 0.001, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon>\":  [[\"gal\",\"gallon\",\"gallons\"], 0.0037854118, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon-imp>\":  [[\"galimp\",\"gallon-imp\",\"gallons-imp\"], 0.0045460900, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<quart>\":  [[\"qt\",\"quart\",\"quarts\"], 0.00094635295, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint>\":  [[\"pt\",\"pint\",\"pints\"], 0.000473176475, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint-imp>\":  [[\"ptimp\",\"pint-imp\",\"pints-imp\"], 5.6826125e-4, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<cup>\":  [[\"cu\",\"cup\",\"cups\"], 0.000236588238, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce>\":  [[\"floz\",\"fluid-ounce\",\"fluid-ounces\"], 2.95735297e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce-imp>\":  [[\"flozimp\", \"floz-imp\",\"fluid-ounce-imp\",\"fluid-ounces-imp\"], 2.84130625e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<tablespoon>\":  [[\"tb\",\"tbsp\",\"tbs\",\"tablespoon\",\"tablespoons\"], 1.47867648e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<teaspoon>\":  [[\"tsp\",\"teaspoon\",\"teaspoons\"], 4.92892161e-6, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<bushel>\":  [[\"bu\",\"bsh\",\"bushel\",\"bushels\"], 0.035239072, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<oilbarrel>\":  [[\"bbl\",\"oilbarrel\", \"oilbarrels\", \"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beerbarrel\", \"beerbarrels\", \"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-imp\",\"beerbarrel-imp\", \"beerbarrels-imp\", \"beer-barrel-imp\",\"beer-barrels-imp\"], 0.16365924, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* speed */\n    \"<kph>\" : [[\"kph\"], 0.277777778, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<mph>\" : [[\"mph\"], 0.44704, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<knot>\" : [[\"kt\",\"kn\",\"kts\",\"knot\",\"knots\"], 0.514444444, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<fps>\"  : [[\"fps\"], 0.3048, \"speed\", [\"<meter>\"], [\"<second>\"]],\n\n    /* acceleration */\n    \"<gee>\" : [[\"gee\"], 9.80665, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<Gal>\" : [[\"Gal\"], 1e-2, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* temperature_difference */\n    \"<kelvin>\" : [[\"degK\",\"kelvin\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<celsius>\" : [[\"degC\",\"celsius\",\"celsius\",\"centigrade\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<fahrenheit>\" : [[\"degF\",\"fahrenheit\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<rankine>\" : [[\"degR\",\"rankine\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<temp-K>\"  : [[\"tempK\",\"temp-K\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-C>\"  : [[\"tempC\",\"temp-C\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-F>\"  : [[\"tempF\",\"temp-F\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-R>\"  : [[\"tempR\",\"temp-R\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n\n    /* time */\n    \"<second>\":  [[\"s\",\"sec\",\"secs\",\"second\",\"seconds\"], 1.0, \"time\", [\"<second>\"]],\n    \"<minute>\":  [[\"min\",\"mins\",\"minute\",\"minutes\"], 60.0, \"time\", [\"<second>\"]],\n    \"<hour>\":  [[\"h\",\"hr\",\"hrs\",\"hour\",\"hours\"], 3600.0, \"time\", [\"<second>\"]],\n    \"<day>\":  [[\"d\",\"day\",\"days\"], 3600 * 24, \"time\", [\"<second>\"]],\n    \"<week>\":  [[\"wk\",\"week\",\"weeks\"], 7 * 3600 * 24, \"time\", [\"<second>\"]],\n    \"<fortnight>\": [[\"fortnight\",\"fortnights\"], 1209600, \"time\", [\"<second>\"]],\n    \"<year>\":  [[\"y\",\"yr\",\"year\",\"years\",\"annum\"], 31556926, \"time\", [\"<second>\"]],\n    \"<decade>\":[[\"decade\",\"decades\"], 315569260, \"time\", [\"<second>\"]],\n    \"<century>\":[[\"century\",\"centuries\"], 3155692600, \"time\", [\"<second>\"]],\n\n    /* pressure */\n    \"<pascal>\" : [[\"Pa\",\"pascal\",\"Pascal\"], 1.0, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<bar>\" : [[\"bar\",\"bars\"], 100000, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<mmHg>\" : [[\"mmHg\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inHg>\" : [[\"inHg\"], 3386.3881472, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<torr>\" : [[\"torr\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<atm>\" : [[\"atm\",\"ATM\",\"atmosphere\",\"atmospheres\"], 101325, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<psi>\" : [[\"psi\"], 6894.76, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<cmh2o>\" : [[\"cmH2O\",\"cmh2o\"], 98.0638, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inh2o>\" : [[\"inH2O\",\"inh2o\"], 249.082052, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n\n    /* viscosity */\n    \"<poise>\"  : [[\"P\",\"poise\"], 0.1, \"viscosity\", [\"<kilogram>\"],[\"<meter>\",\"<second>\"] ],\n    \"<stokes>\" : [[\"St\",\"stokes\"], 1e-4, \"viscosity\", [\"<meter>\",\"<meter>\"], [\"<second>\"]],\n\n    /* substance */\n    \"<mole>\"  :  [[\"mol\",\"mole\"], 1.0, \"substance\", [\"<mole>\"]],\n\n    /* concentration */\n    \"<molar>\" : [[\"M\",\"molar\"], 1000, \"concentration\", [\"<mole>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<wtpercent>\"  : [[\"wt%\",\"wtpercent\"], 10, \"concentration\", [\"<kilogram>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* activity */\n    \"<katal>\" :  [[\"kat\",\"katal\",\"Katal\"], 1.0, \"activity\", [\"<mole>\"], [\"<second>\"]],\n    \"<unit>\"  :  [[\"U\",\"enzUnit\",\"unit\"], 16.667e-16, \"activity\", [\"<mole>\"], [\"<second>\"]],\n\n    /* capacitance */\n    \"<farad>\" :  [[\"F\",\"farad\",\"Farad\"], 1.0, \"capacitance\", [\"<second>\",\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<meter>\", \"<meter>\", \"<kilogram>\"]],\n\n    /* charge */\n    \"<coulomb>\" :  [[\"C\",\"coulomb\",\"Coulomb\"], 1.0, \"charge\", [\"<ampere>\",\"<second>\"]],\n    \"<Ah>\" :  [[\"Ah\"], 3600, \"charge\", [\"<ampere>\",\"<second>\"]],\n\n    /* current */\n    \"<ampere>\"  :  [[\"A\",\"Ampere\",\"ampere\",\"amp\",\"amps\"], 1.0, \"current\", [\"<ampere>\"]],\n\n    /* conductance */\n    \"<siemens>\" : [[\"S\",\"Siemens\",\"siemens\"], 1.0, \"conductance\", [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<kilogram>\",\"<meter>\",\"<meter>\"]],\n\n    /* inductance */\n    \"<henry>\" :  [[\"H\",\"Henry\",\"henry\"], 1.0, \"inductance\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]],\n\n    /* potential */\n    \"<volt>\"  :  [[\"V\",\"Volt\",\"volt\",\"volts\"], 1.0, \"potential\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\"]],\n\n    /* resistance */\n    \"<ohm>\" :  [\n      [\"Ohm\",\"ohm\",\"\\u03A9\"/*Ω as greek letter*/,\"\\u2126\"/*Ω as ohm sign*/],\n      1.0,\n      \"resistance\",\n      [\"<meter>\",\"<meter>\",\"<kilogram>\"],[\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]\n    ],\n    /* magnetism */\n    \"<weber>\" : [[\"Wb\",\"weber\",\"webers\"], 1.0, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<tesla>\"  : [[\"T\",\"tesla\",\"teslas\"], 1.0, \"magnetism\", [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<gauss>\" : [[\"G\",\"gauss\"], 1e-4, \"magnetism\",  [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<maxwell>\" : [[\"Mx\",\"maxwell\",\"maxwells\"], 1e-8, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<oersted>\"  : [[\"Oe\",\"oersted\",\"oersteds\"], 250.0 / Math.PI, \"magnetism\", [\"<ampere>\"], [\"<meter>\"]],\n\n    /* energy */\n    \"<joule>\" :  [[\"J\",\"joule\",\"Joule\",\"joules\"], 1.0, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<erg>\"   :  [[\"erg\",\"ergs\"], 1e-7, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<btu>\"   :  [[\"BTU\",\"btu\",\"BTUs\"], 1055.056, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<calorie>\" :  [[\"cal\",\"calorie\",\"calories\"], 4.18400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Calorie>\" :  [[\"Cal\",\"Calorie\",\"Calories\"], 4184.00, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<therm-US>\" : [[\"th\",\"therm\",\"therms\",\"Therm\",\"therm-US\"], 105480400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Wh>\" : [[\"Wh\"], 3600, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n\n    /* force */\n    \"<newton>\"  : [[\"N\",\"Newton\",\"newton\"], 1.0, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<dyne>\"  : [[\"dyn\",\"dyne\"], 1e-5, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<pound-force>\"  : [[\"lbf\",\"pound-force\"], 4.448222, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* frequency */\n    \"<hertz>\" : [[\"Hz\",\"hertz\",\"Hertz\"], 1.0, \"frequency\", [\"<1>\"], [\"<second>\"]],\n\n    /* angle */\n    \"<radian>\" :[[\"rad\",\"radian\",\"radians\"], 1.0, \"angle\", [\"<radian>\"]],\n    \"<degree>\" :[[\"deg\",\"degree\",\"degrees\"], Math.PI / 180.0, \"angle\", [\"<radian>\"]],\n    \"<gradian>\"   :[[\"gon\",\"grad\",\"gradian\",\"grads\"], Math.PI / 200.0, \"angle\", [\"<radian>\"]],\n    \"<steradian>\"  : [[\"sr\",\"steradian\",\"steradians\"], 1.0, \"solid_angle\", [\"<steradian>\"]],\n\n    /* rotation */\n    \"<rotation>\" : [[\"rotation\"], 2.0 * Math.PI, \"angle\", [\"<radian>\"]],\n    \"<rpm>\"   :[[\"rpm\"], 2.0 * Math.PI / 60.0, \"angular_velocity\", [\"<radian>\"], [\"<second>\"]],\n\n    /* information */\n    \"<byte>\"  :[[\"B\",\"byte\",\"bytes\"], 1.0, \"information\", [\"<byte>\"]],\n    \"<bit>\"  :[[\"b\",\"bit\",\"bits\"], 0.125, \"information\", [\"<byte>\"]],\n\n    /* information rate */\n    \"<Bps>\" : [[\"Bps\"], 1.0, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n    \"<bps>\" : [[\"bps\"], 0.125, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n\n    /* currency */\n    \"<dollar>\":[[\"USD\",\"dollar\"], 1.0, \"currency\", [\"<dollar>\"]],\n    \"<cents>\" :[[\"cents\"], 0.01, \"currency\", [\"<dollar>\"]],\n\n    /* luminosity */\n    \"<candela>\" : [[\"cd\",\"candela\"], 1.0, \"luminosity\", [\"<candela>\"]],\n    \"<lumen>\" : [[\"lm\",\"lumen\"], 1.0, \"luminous_power\", [\"<candela>\",\"<steradian>\"]],\n    \"<lux>\" :[[\"lux\"], 1.0, \"illuminance\", [\"<candela>\",\"<steradian>\"], [\"<meter>\",\"<meter>\"]],\n\n    /* power */\n    \"<watt>\"  : [[\"W\",\"watt\",\"watts\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere>\"  : [[\"VA\",\"volt-ampere\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere-reactive>\"  : [[\"var\",\"Var\",\"VAr\",\"VAR\",\"volt-ampere-reactive\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<horsepower>\"  :  [[\"hp\",\"horsepower\"], 745.699872, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n\n    /* radiation */\n    \"<gray>\" : [[\"Gy\",\"gray\",\"grays\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<roentgen>\" : [[\"R\",\"roentgen\"], 0.009330, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<sievert>\" : [[\"Sv\",\"sievert\",\"sieverts\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<becquerel>\" : [[\"Bq\",\"becquerel\",\"becquerels\"], 1.0, \"radiation\", [\"<1>\"],[\"<second>\"]],\n    \"<curie>\" : [[\"Ci\",\"curie\",\"curies\"], 3.7e10, \"radiation\", [\"<1>\"],[\"<second>\"]],\n\n    /* rate */\n    \"<cpm>\" : [[\"cpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<dpm>\" : [[\"dpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<bpm>\" : [[\"bpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n\n    /* resolution / typography */\n    \"<dot>\" : [[\"dot\",\"dots\"], 1, \"resolution\", [\"<each>\"]],\n    \"<pixel>\" : [[\"pixel\",\"px\"], 1, \"resolution\", [\"<each>\"]],\n    \"<ppi>\" : [[\"ppi\"], 1, \"resolution\", [\"<pixel>\"], [\"<inch>\"]],\n    \"<dpi>\" : [[\"dpi\"], 1, \"typography\", [\"<dot>\"], [\"<inch>\"]],\n\n    /* other */\n    \"<cell>\" : [[\"cells\",\"cell\"], 1, \"counting\", [\"<each>\"]],\n    \"<each>\" : [[\"each\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<count>\" : [[\"count\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<base-pair>\"  : [[\"bp\",\"base-pair\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<nucleotide>\" : [[\"nt\",\"nucleotide\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<molecule>\" : [[\"molecule\",\"molecules\"], 1.0, \"counting\", [\"<1>\"]],\n    \"<dozen>\" :  [[\"doz\",\"dz\",\"dozen\"],12.0,\"prefix_only\", [\"<each>\"]],\n    \"<percent>\": [[\"%\",\"percent\"], 0.01, \"prefix_only\", [\"<1>\"]],\n    \"<ppm>\" :  [[\"ppm\"],1e-6, \"prefix_only\", [\"<1>\"]],\n    \"<ppt>\" :  [[\"ppt\"],1e-9, \"prefix_only\", [\"<1>\"]],\n    \"<gross>\" :  [[\"gr\",\"gross\"],144.0, \"prefix_only\", [\"<dozen>\",\"<dozen>\"]],\n    \"<decibel>\"  : [[\"dB\",\"decibel\",\"decibels\"], 1.0, \"logarithmic\", [\"<decibel>\"]]\n  };\n\n  var BASE_UNITS = [\"<meter>\",\"<kilogram>\",\"<second>\",\"<mole>\", \"<ampere>\",\"<radian>\",\"<kelvin>\",\"<temp-K>\",\"<byte>\",\"<dollar>\",\"<candela>\",\"<each>\",\"<steradian>\",\"<decibel>\"];\n\n  var UNITY = \"<1>\";\n  var UNITY_ARRAY = [UNITY];\n\n  // Setup\n\n  /**\n   * Asserts unit definition is valid\n   *\n   * @param {string} unitDef - Name of unit to test\n   * @param {Object} definition - Definition of unit to test\n   *\n   * @returns {void}\n   * @throws {QtyError} if unit definition is not valid\n   */\n  function validateUnitDefinition(unitDef, definition) {\n    var scalar = definition[1];\n    var numerator = definition[3] || [];\n    var denominator = definition[4] || [];\n    if (!isNumber(scalar)) {\n      throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                         \"'scalar' must be a number\");\n    }\n\n    numerator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'numerator' is not recognized\");\n      }\n    });\n\n    denominator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'denominator' is not recognized\");\n      }\n    });\n  }\n\n  var PREFIX_VALUES = {};\n  var PREFIX_MAP = {};\n  var UNIT_VALUES = {};\n  var UNIT_MAP = {};\n  var OUTPUT_MAP = {};\n  for (var unitDef in UNITS) {\n    if (UNITS.hasOwnProperty(unitDef)) {\n      var definition = UNITS[unitDef];\n      if (definition[2] === \"prefix\") {\n        PREFIX_VALUES[unitDef] = definition[1];\n        for (var i = 0; i < definition[0].length; i++) {\n          PREFIX_MAP[definition[0][i]] = unitDef;\n        }\n      }\n      else {\n        validateUnitDefinition(unitDef, definition);\n        UNIT_VALUES[unitDef] = {\n          scalar: definition[1],\n          numerator: definition[3],\n          denominator: definition[4]\n        };\n        for (var j = 0; j < definition[0].length; j++) {\n          UNIT_MAP[definition[0][j]] = unitDef;\n        }\n      }\n      OUTPUT_MAP[unitDef] = definition[0][0];\n    }\n  }\n\n  /**\n   * Returns a list of available units of kind\n   *\n   * @param {string} [kind] - kind of units\n   * @returns {array} names of units\n   * @throws {QtyError} if kind is unknown\n   */\n  function getUnits(kind) {\n    var i;\n    var units = [];\n    var unitKeys = Object.keys(UNITS);\n    if (typeof kind === \"undefined\") {\n      for (i = 0; i < unitKeys.length; i++) {\n        if ([\"\", \"prefix\"].indexOf(UNITS[unitKeys[i]][2]) === -1) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n    else if (this.getKinds().indexOf(kind) === -1) {\n      throw new QtyError(\"Kind not recognized\");\n    }\n    else {\n      for (i = 0; i < unitKeys.length; i++) {\n        if (UNITS[unitKeys[i]][2] === kind) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n\n    return units.sort(function(a, b) {\n      if (a.toLowerCase() < b.toLowerCase()) {\n        return -1;\n      }\n      if (a.toLowerCase() > b.toLowerCase()) {\n        return 1;\n      }\n      return 0;\n    });\n  }\n\n  /**\n   * Returns a list of alternative names for a unit\n   *\n   * @param {string} unitName - name of unit\n   * @returns {string[]} aliases for unit\n   * @throws {QtyError} if unit is unknown\n   */\n  function getAliases(unitName) {\n    if (!UNIT_MAP[unitName]) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n    return UNITS[UNIT_MAP[unitName]][0];\n  }\n\n  var SIGNATURE_VECTOR = [\"length\", \"time\", \"temperature\", \"mass\", \"current\", \"substance\", \"luminosity\", \"currency\", \"information\", \"angle\"];\n\n  /*\n  calculates the unit signature id for use in comparing compatible units and simplification\n  the signature is based on a simple classification of units and is based on the following publication\n\n  Novak, G.S., Jr. \"Conversion of units of measurement\", IEEE Transactions on Software Engineering,\n  21(8), Aug 1995, pp.651-661\n  doi://10.1109/32.403789\n  http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel1/32/9079/00403789.pdf?isnumber=9079&prod=JNL&arnumber=403789&arSt=651&ared=661&arAuthor=Novak%2C+G.S.%2C+Jr.\n  */\n  function unitSignature() {\n    if (this.signature) {\n      return this.signature;\n    }\n    var vector = unitSignatureVector.call(this);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] *= Math.pow(20, i);\n    }\n\n    return vector.reduce(\n      function(previous, current) {\n        return previous + current;\n      },\n      0\n    );\n  }\n\n  // calculates the unit signature vector used by unit_signature\n  function unitSignatureVector() {\n    if (!this.isBase()) {\n      return unitSignatureVector.call(this.toBase());\n    }\n\n    var vector = new Array(SIGNATURE_VECTOR.length);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] = 0;\n    }\n    var r, n;\n    for (var j = 0; j < this.numerator.length; j++) {\n      if ((r = UNITS[this.numerator[j]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] + 1;\n        }\n      }\n    }\n\n    for (var k = 0; k < this.denominator.length; k++) {\n      if ((r = UNITS[this.denominator[k]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] - 1;\n        }\n      }\n    }\n    return vector;\n  }\n\n  var SIGN = \"[+-]\";\n  var INTEGER = \"\\\\d+\";\n  var SIGNED_INTEGER = SIGN + \"?\" + INTEGER;\n  var FRACTION = \"\\\\.\" + INTEGER;\n  var FLOAT = \"(?:\" + INTEGER + \"(?:\" + FRACTION + \")?\" + \")\" +\n              \"|\" +\n              \"(?:\" + FRACTION + \")\";\n  var EXPONENT = \"[Ee]\" + SIGNED_INTEGER;\n  var SCI_NUMBER = \"(?:\" + FLOAT + \")(?:\" + EXPONENT + \")?\";\n  var SIGNED_NUMBER = SIGN + \"?\\\\s*\" + SCI_NUMBER;\n  var QTY_STRING = \"(\" + SIGNED_NUMBER + \")?\" + \"\\\\s*([^/]*)(?:\\/(.+))?\";\n  var QTY_STRING_REGEX = new RegExp(\"^\" + QTY_STRING + \"$\");\n\n  var POWER_OP = \"\\\\^|\\\\*{2}\";\n  // Allow unit powers representing scalar, length, area, volume; 4 is for some\n  // special case representations in SI base units.\n  var SAFE_POWER = \"[01234]\";\n  var TOP_REGEX = new RegExp (\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(-?\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n  var BOTTOM_REGEX = new RegExp(\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n\n  /* parse a string into a unit object.\n   * Typical formats like :\n   * \"5.6 kg*m/s^2\"\n   * \"5.6 kg*m*s^-2\"\n   * \"5.6 kilogram*meter*second^-2\"\n   * \"2.2 kPa\"\n   * \"37 degC\"\n   * \"1\"  -- creates a unitless constant with value 1\n   * \"GPa\"  -- creates a unit with scalar 1 with units 'GPa'\n   * 6'4\"  -- recognized as 6 feet + 4 inches\n   * 8 lbs 8 oz -- recognized as 8 lbs + 8 ounces\n   */\n  function parse(val) {\n    if (!isString(val)) {\n      val = val.toString();\n    }\n    val = val.trim();\n\n    var result = QTY_STRING_REGEX.exec(val);\n    if (!result) {\n      throw new QtyError(val + \": Quantity not recognized\");\n    }\n\n    var scalarMatch = result[1];\n    if (scalarMatch) {\n      // Allow whitespaces between sign and scalar for loose parsing\n      scalarMatch = scalarMatch.replace(/\\s/g, \"\");\n      this.scalar = parseFloat(scalarMatch);\n    }\n    else {\n      this.scalar = 1;\n    }\n    var top = result[2];\n    var bottom = result[3];\n\n    var n, x, nx;\n    // TODO DRY me\n    while ((result = TOP_REGEX.exec(top))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var i = 0; i < Math.abs(n) ; i++) {\n        nx += x;\n      }\n      if (n >= 0) {\n        top = top.replace(result[0], nx);\n      }\n      else {\n        bottom = bottom ? bottom + nx : nx;\n        top = top.replace(result[0], \"\");\n      }\n    }\n\n    while ((result = BOTTOM_REGEX.exec(bottom))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var j = 0; j < n ; j++) {\n        nx += x;\n      }\n\n      bottom = bottom.replace(result[0], nx);\n    }\n\n    if (top) {\n      this.numerator = parseUnits(top.trim());\n    }\n    if (bottom) {\n      this.denominator = parseUnits(bottom.trim());\n    }\n  }\n\n  var PREFIX_REGEX = Object.keys(PREFIX_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  var UNIT_REGEX = Object.keys(UNIT_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  /*\n   * Minimal boundary regex to support units with Unicode characters\n   * \\b only works for ASCII\n   */\n  var BOUNDARY_REGEX = \"\\\\b|$\";\n  var UNIT_MATCH = \"(\" + PREFIX_REGEX + \")??(\" +\n                   UNIT_REGEX +\n                   \")(?:\" + BOUNDARY_REGEX + \")\";\n  var UNIT_TEST_REGEX = new RegExp(\"^\\\\s*(\" + UNIT_MATCH + \"[\\\\s\\\\*]*)+$\");\n  var UNIT_MATCH_REGEX = new RegExp(UNIT_MATCH, \"g\"); // g flag for multiple occurences\n  var parsedUnitsCache = {};\n  /**\n   * Parses and converts units string to normalized unit array.\n   * Result is cached to speed up next calls.\n   *\n   * @param {string} units Units string\n   * @returns {string[]} Array of normalized units\n   *\n   * @example\n   * // Returns [\"<second>\", \"<meter>\", \"<second>\"]\n   * parseUnits(\"s m s\");\n   *\n   */\n  function parseUnits(units) {\n    var cached = parsedUnitsCache[units];\n    if (cached) {\n      return cached;\n    }\n\n    var unitMatch, normalizedUnits = [];\n\n    // Scan\n    if (!UNIT_TEST_REGEX.test(units)) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n\n    while ((unitMatch = UNIT_MATCH_REGEX.exec(units))) {\n      normalizedUnits.push(unitMatch.slice(1));\n    }\n\n    normalizedUnits = normalizedUnits.map(function(item) {\n      return PREFIX_MAP[item[0]] ? [PREFIX_MAP[item[0]], UNIT_MAP[item[1]]] : [UNIT_MAP[item[1]]];\n    });\n\n    // Flatten and remove null elements\n    normalizedUnits = normalizedUnits.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    normalizedUnits = normalizedUnits.filter(function(item) {\n      return item;\n    });\n\n    parsedUnitsCache[units] = normalizedUnits;\n\n    return normalizedUnits;\n  }\n\n  /**\n   * Parses a string as a quantity\n   * @param {string} value - quantity as text\n   * @throws if value is not a string\n   * @returns {Qty|null} Parsed quantity or null if unrecognized\n   */\n  function globalParse(value) {\n    if (!isString(value)) {\n      throw new QtyError(\"Argument should be a string\");\n    }\n\n    try {\n      return this(value);\n    }\n    catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty instance\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a Qty instance, false otherwise\n   */\n  function isQty(value) {\n    return value instanceof Qty;\n  }\n\n  function Qty(initValue, initUnits) {\n    assertValidConstructorArgs.apply(null, arguments);\n\n    if (!(isQty(this))) {\n      return new Qty(initValue, initUnits);\n    }\n\n    this.scalar = null;\n    this.baseScalar = null;\n    this.signature = null;\n    this._conversionCache = {};\n    this.numerator = UNITY_ARRAY;\n    this.denominator = UNITY_ARRAY;\n\n    if (isDefinitionObject(initValue)) {\n      this.scalar = initValue.scalar;\n      this.numerator = (initValue.numerator && initValue.numerator.length !== 0) ? initValue.numerator : UNITY_ARRAY;\n      this.denominator = (initValue.denominator && initValue.denominator.length !== 0) ? initValue.denominator : UNITY_ARRAY;\n    }\n    else if (initUnits) {\n      parse.call(this, initUnits);\n      this.scalar = initValue;\n    }\n    else {\n      parse.call(this, initValue);\n    }\n\n    // math with temperatures is very limited\n    if (this.denominator.join(\"*\").indexOf(\"temp\") >= 0) {\n      throw new QtyError(\"Cannot divide with temperatures\");\n    }\n    if (this.numerator.join(\"*\").indexOf(\"temp\") >= 0) {\n      if (this.numerator.length > 1) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n      if (!compareArray(this.denominator, UNITY_ARRAY)) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n    }\n\n    this.initValue = initValue;\n    updateBaseScalar.call(this);\n\n    if (this.isTemperature() && this.baseScalar < 0) {\n      throw new QtyError(\"Temperatures must not be less than absolute zero\");\n    }\n  }\n\n  Qty.prototype = {\n    // Properly set up constructor\n    constructor: Qty,\n  };\n\n  /**\n   * Asserts constructor arguments are valid\n   *\n   * @param {*} value - Value to test\n   * @param {string} [units] - Optional units when value is passed as a number\n   *\n   * @returns {void}\n   * @throws {QtyError} if constructor arguments are invalid\n   */\n  function assertValidConstructorArgs(value, units) {\n    if (units) {\n      if (!(isNumber(value) && isString(units))) {\n        throw new QtyError(\"Only number accepted as initialization value \" +\n                           \"when units are explicitly provided\");\n      }\n    }\n    else {\n      if (!(isString(value) ||\n            isNumber(value) ||\n            isQty(value)    ||\n            isDefinitionObject(value))) {\n        throw new QtyError(\"Only string, number or quantity accepted as \" +\n                           \"single initialization value\");\n      }\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty definition object\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a definition object, false otherwise\n   */\n  function isDefinitionObject(value) {\n    return value && typeof value === \"object\" && value.hasOwnProperty(\"scalar\");\n  }\n\n  function updateBaseScalar() {\n    if (this.baseScalar) {\n      return this.baseScalar;\n    }\n    if (this.isBase()) {\n      this.baseScalar = this.scalar;\n      this.signature = unitSignature.call(this);\n    }\n    else {\n      var base = this.toBase();\n      this.baseScalar = base.scalar;\n      this.signature = base.signature;\n    }\n  }\n\n  var KINDS = {\n    \"-312078\": \"elastance\",\n    \"-312058\": \"resistance\",\n    \"-312038\": \"inductance\",\n    \"-152058\": \"potential\",\n    \"-152040\": \"magnetism\",\n    \"-152038\": \"magnetism\",\n    \"-7997\": \"specific_volume\",\n    \"-79\": \"snap\",\n    \"-59\": \"jolt\",\n    \"-39\": \"acceleration\",\n    \"-38\": \"radiation\",\n    \"-20\": \"frequency\",\n    \"-19\": \"speed\",\n    \"-18\": \"viscosity\",\n    \"-17\": \"volumetric_flow\",\n    \"-1\": \"wavenumber\",\n    \"0\": \"unitless\",\n    \"1\": \"length\",\n    \"2\": \"area\",\n    \"3\": \"volume\",\n    \"20\": \"time\",\n    \"400\": \"temperature\",\n    \"7941\": \"yank\",\n    \"7942\": \"power\",\n    \"7959\": \"pressure\",\n    \"7961\": \"force\",\n    \"7962\": \"energy\",\n    \"7979\": \"viscosity\",\n    \"7981\": \"momentum\",\n    \"7982\": \"angular_momentum\",\n    \"7997\": \"density\",\n    \"7998\": \"area_density\",\n    \"8000\": \"mass\",\n    \"152020\": \"radiation_exposure\",\n    \"159999\": \"magnetism\",\n    \"160000\": \"current\",\n    \"160020\": \"charge\",\n    \"312058\": \"conductance\",\n    \"312078\": \"capacitance\",\n    \"3199980\": \"activity\",\n    \"3199997\": \"molar_concentration\",\n    \"3200000\": \"substance\",\n    \"63999998\": \"illuminance\",\n    \"64000000\": \"luminous_power\",\n    \"1280000000\": \"currency\",\n    \"25599999980\": \"information_rate\",\n    \"25600000000\": \"information\",\n    \"511999999980\": \"angular_velocity\",\n    \"512000000000\": \"angle\"\n  };\n\n  /**\n   * Returns the list of available well-known kinds of units, e.g.\n   * \"radiation\" or \"length\".\n   *\n   * @returns {string[]} names of kinds of units\n   */\n  function getKinds() {\n    return uniq(Object.keys(KINDS).map(function(knownSignature) {\n      return KINDS[knownSignature];\n    }));\n  }\n\n  Qty.prototype.kind = function() {\n    return KINDS[this.signature.toString()];\n  };\n\n  assign(Qty.prototype, {\n    isDegrees: function() {\n      // signature may not have been calculated yet\n      return (this.signature === null || this.signature === 400) &&\n        this.numerator.length === 1 &&\n        compareArray(this.denominator, UNITY_ARRAY) &&\n        (this.numerator[0].match(/<temp-[CFRK]>/) || this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/));\n    },\n\n    isTemperature: function() {\n      return this.isDegrees() && this.numerator[0].match(/<temp-[CFRK]>/);\n    }\n  });\n\n  function subtractTemperatures(lhs,rhs) {\n    var lhsUnits = lhs.units();\n    var rhsConverted = rhs.to(lhsUnits);\n    var dstDegrees = Qty(getDegreeUnits(lhsUnits));\n    return Qty({\"scalar\": lhs.scalar - rhsConverted.scalar, \"numerator\": dstDegrees.numerator, \"denominator\": dstDegrees.denominator});\n  }\n\n  function subtractTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar - tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function addTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar + tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function getDegreeUnits(units) {\n    if (units === \"tempK\") {\n      return \"degK\";\n    }\n    else if (units === \"tempC\") {\n      return \"degC\";\n    }\n    else if (units === \"tempF\") {\n      return \"degF\";\n    }\n    else if (units === \"tempR\") {\n      return \"degR\";\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n  }\n\n  function toDegrees(src,dst) {\n    var srcDegK = toDegK(src);\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"degK\") {\n      dstScalar = srcDegK.scalar;\n    }\n    else if (dstUnits === \"degC\") {\n      dstScalar = srcDegK.scalar ;\n    }\n    else if (dstUnits === \"degF\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else if (dstUnits === \"degR\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for degree conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toDegK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempF\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<kelvin>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  function toTemp(src,dst) {\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"tempK\") {\n      dstScalar = src.baseScalar;\n    }\n    else if (dstUnits === \"tempC\") {\n      dstScalar = src.baseScalar - 273.15;\n    }\n    else if (dstUnits === \"tempF\") {\n      dstScalar = (src.baseScalar * 9 / 5) - 459.67;\n    }\n    else if (dstUnits === \"tempR\") {\n      dstScalar = src.baseScalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toTempK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar + 273.15;\n    }\n    else if (units === \"tempF\") {\n      q = (qty.scalar + 459.67) * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<temp-K>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  assign(Qty.prototype, {\n    /**\n     * Converts to other compatible units.\n     * Instance's converted quantities are cached for faster subsequent calls.\n     *\n     * @param {(string|Qty)} other - Target units as string or retrieved from\n     *                               other Qty instance (scalar is ignored)\n     *\n     * @returns {Qty} New converted Qty instance with target units\n     *\n     * @throws {QtyError} if target units are incompatible\n     *\n     * @example\n     * var weight = Qty(\"25 kg\");\n     * weight.to(\"lb\"); // => Qty(\"55.11556554621939 lbs\");\n     * weight.to(Qty(\"3 g\")); // => Qty(\"25000 g\"); // scalar of passed Qty is ignored\n     */\n    to: function(other) {\n      var cached, target;\n\n      if (other === undefined || other === null) {\n        return this;\n      }\n\n      if (!isString(other)) {\n        return this.to(other.units());\n      }\n\n      cached = this._conversionCache[other];\n      if (cached) {\n        return cached;\n      }\n\n      // Instantiating target to normalize units\n      target = Qty(other);\n      if (target.units() === this.units()) {\n        return this;\n      }\n\n      if (!this.isCompatible(target)) {\n        if (this.isInverse(target)) {\n          target = this.inverse().to(other);\n        }\n        else {\n          throwIncompatibleUnits(this.units(), target.units());\n        }\n      }\n      else {\n        if (target.isTemperature()) {\n          target = toTemp(this,target);\n        }\n        else if (target.isDegrees()) {\n          target = toDegrees(this,target);\n        }\n        else {\n          var q = divSafe(this.baseScalar, target.baseScalar);\n          target = Qty({\"scalar\": q, \"numerator\": target.numerator, \"denominator\": target.denominator});\n        }\n      }\n\n      this._conversionCache[other] = target;\n      return target;\n    },\n\n    // convert to base SI units\n    // results of the conversion are cached so subsequent calls to this will be fast\n    toBase: function() {\n      if (this.isBase()) {\n        return this;\n      }\n\n      if (this.isTemperature()) {\n        return toTempK(this);\n      }\n\n      var cached = baseUnitCache[this.units()];\n      if (!cached) {\n        cached = toBaseUnits(this.numerator,this.denominator);\n        baseUnitCache[this.units()] = cached;\n      }\n      return cached.mul(this.scalar);\n    },\n\n    // Converts the unit back to a float if it is unitless.  Otherwise raises an exception\n    toFloat: function() {\n      if (this.isUnitless()) {\n        return this.scalar;\n      }\n      throw new QtyError(\"Can't convert to Float unless unitless.  Use Unit#scalar\");\n    },\n\n    /**\n     * Returns the nearest multiple of quantity passed as\n     * precision\n     *\n     * @param {(Qty|string|number)} precQuantity - Quantity, string formated\n     *   quantity or number as expected precision\n     *\n     * @returns {Qty} Nearest multiple of precQuantity\n     *\n     * @example\n     * Qty('5.5 ft').toPrec('2 ft'); // returns 6 ft\n     * Qty('0.8 cu').toPrec('0.25 cu'); // returns 0.75 cu\n     * Qty('6.3782 m').toPrec('cm'); // returns 6.38 m\n     * Qty('1.146 MPa').toPrec('0.1 bar'); // returns 1.15 MPa\n     *\n     */\n    toPrec: function(precQuantity) {\n      if (isString(precQuantity)) {\n        precQuantity = Qty(precQuantity);\n      }\n      if (isNumber(precQuantity)) {\n        precQuantity = Qty(precQuantity + \" \" + this.units());\n      }\n\n      if (!this.isUnitless()) {\n        precQuantity = precQuantity.to(this.units());\n      }\n      else if (!precQuantity.isUnitless()) {\n        throwIncompatibleUnits(this.units(), precQuantity.units());\n      }\n\n      if (precQuantity.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      var precRoundedResult = mulSafe(\n        Math.round(this.scalar / precQuantity.scalar),\n        precQuantity.scalar\n      );\n\n      return Qty(precRoundedResult + this.units());\n    }\n  });\n\n  /**\n   * Configures and returns a fast function to convert\n   * Number values from units to others.\n   * Useful to efficiently convert large array of values\n   * with same units into others with iterative methods.\n   * Does not take care of rounding issues.\n   *\n   * @param {string} srcUnits Units of values to convert\n   * @param {string} dstUnits Units to convert to\n   *\n   * @returns {Function} Converting function accepting Number value\n   *   and returning converted value\n   *\n   * @throws \"Incompatible units\" if units are incompatible\n   *\n   * @example\n   * // Converting large array of numbers with the same units\n   * // into other units\n   * var converter = Qty.swiftConverter(\"m/h\", \"ft/s\");\n   * var convertedSerie = largeSerie.map(converter);\n   *\n   */\n  function swiftConverter(srcUnits, dstUnits) {\n    var srcQty = Qty(srcUnits);\n    var dstQty = Qty(dstUnits);\n\n    if (srcQty.eq(dstQty)) {\n      return identity;\n    }\n\n    var convert;\n    if (!srcQty.isTemperature()) {\n      convert = function(value) {\n        return value * srcQty.baseScalar / dstQty.baseScalar;\n      };\n    }\n    else {\n      convert = function(value) {\n        // TODO Not optimized\n        return srcQty.mul(value).to(dstQty).scalar;\n      };\n    }\n\n    return function converter(value) {\n      var i, length, result;\n      if (!Array.isArray(value)) {\n        return convert(value);\n      }\n      else {\n        length = value.length;\n        result = [];\n        for (i = 0; i < length; i++) {\n          result.push(convert(value[i]));\n        }\n        return result;\n      }\n    };\n  }\n\n  var baseUnitCache = {};\n\n  function toBaseUnits(numerator,denominator) {\n    var num = [];\n    var den = [];\n    var q = 1;\n    var unit;\n    for (var i = 0; i < numerator.length; i++) {\n      unit = numerator[i];\n      if (PREFIX_VALUES[unit]) {\n        // workaround to fix\n        // 0.1 * 0.1 => 0.010000000000000002\n        q = mulSafe(q, PREFIX_VALUES[unit]);\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q *= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            num.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            den.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n    for (var j = 0; j < denominator.length; j++) {\n      unit = denominator[j];\n      if (PREFIX_VALUES[unit]) {\n        q /= PREFIX_VALUES[unit];\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q /= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            den.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            num.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return Qty({\"scalar\": q, \"numerator\": num, \"denominator\": den});\n  }\n\n  Qty.parse = globalParse;\n\n  Qty.getUnits = getUnits;\n  Qty.getAliases = getAliases;\n\n  Qty.mulSafe = mulSafe;\n  Qty.divSafe = divSafe;\n\n  Qty.getKinds = getKinds;\n\n  Qty.swiftConverter = swiftConverter;\n\n  Qty.Error = QtyError;\n\n  assign(Qty.prototype, {\n    // Returns new instance with units of this\n    add: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        throw new QtyError(\"Cannot add two temperatures\");\n      }\n      else if (this.isTemperature()) {\n        return addTempDegrees(this, other);\n      }\n      else if (other.isTemperature()) {\n        return addTempDegrees(other, this);\n      }\n\n      return Qty({\"scalar\": this.scalar + other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    sub: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        return subtractTemperatures(this,other);\n      }\n      else if (this.isTemperature()) {\n        return subtractTempDegrees(this,other);\n      }\n      else if (other.isTemperature()) {\n        throw new QtyError(\"Cannot subtract a temperature from a differential degree unit\");\n      }\n\n      return Qty({\"scalar\": this.scalar - other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    mul: function(other) {\n      if (isNumber(other)) {\n        return Qty({\"scalar\": mulSafe(this.scalar, other), \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if ((this.isTemperature() || other.isTemperature()) && !(this.isUnitless() || other.isUnitless())) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.numerator, op2.denominator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, op2.scalar, numdenscale[2]), \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    div: function(other) {\n      if (isNumber(other)) {\n        if (other === 0) {\n          throw new QtyError(\"Divide by zero\");\n        }\n        return Qty({\"scalar\": this.scalar / other, \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (other.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      if (other.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      else if (this.isTemperature() && !other.isUnitless()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.denominator, op2.numerator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, numdenscale[2]) / op2.scalar, \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    // Returns a Qty that is the inverse of this Qty,\n    inverse: function() {\n      if (this.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      if (this.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n      return Qty({\"scalar\": 1 / this.scalar, \"numerator\": this.denominator, \"denominator\": this.numerator});\n    }\n  });\n\n  function cleanTerms(num1, den1, num2, den2) {\n    function notUnity(val) {\n      return val !== UNITY;\n    }\n\n    num1 = num1.filter(notUnity);\n    num2 = num2.filter(notUnity);\n    den1 = den1.filter(notUnity);\n    den2 = den2.filter(notUnity);\n\n    var combined = {};\n\n    function combineTerms(terms, direction) {\n      var k;\n      var prefix;\n      var prefixValue;\n      for (var i = 0; i < terms.length; i++) {\n        if (PREFIX_VALUES[terms[i]]) {\n          k = terms[i + 1];\n          prefix = terms[i];\n          prefixValue = PREFIX_VALUES[prefix];\n          i++;\n        }\n        else {\n          k = terms[i];\n          prefix = null;\n          prefixValue = 1;\n        }\n        if (k && k !== UNITY) {\n          if (combined[k]) {\n            combined[k][0] += direction;\n            var combinedPrefixValue = combined[k][2] ? PREFIX_VALUES[combined[k][2]] : 1;\n            combined[k][direction === 1 ? 3 : 4] *= divSafe(prefixValue, combinedPrefixValue);\n          }\n          else {\n            combined[k] = [direction, k, prefix, 1, 1];\n          }\n        }\n      }\n    }\n\n    combineTerms(num1, 1);\n    combineTerms(den1, -1);\n    combineTerms(num2, 1);\n    combineTerms(den2, -1);\n\n    var num = [];\n    var den = [];\n    var scale = 1;\n\n    for (var prop in combined) {\n      if (combined.hasOwnProperty(prop)) {\n        var item = combined[prop];\n        var n;\n        if (item[0] > 0) {\n          for (n = 0; n < item[0]; n++) {\n            num.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        else if (item[0] < 0) {\n          for (n = 0; n < -item[0]; n++) {\n            den.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        scale *= divSafe(item[3], item[4]);\n      }\n    }\n\n    if (num.length === 0) {\n      num = UNITY_ARRAY;\n    }\n    if (den.length === 0) {\n      den = UNITY_ARRAY;\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return [num, den, scale];\n  }\n\n  assign(Qty.prototype, {\n    eq: function(other) {\n      return this.compareTo(other) === 0;\n    },\n\n    lt: function(other) {\n      return this.compareTo(other) === -1;\n    },\n\n    lte: function(other) {\n      return this.eq(other) || this.lt(other);\n    },\n\n    gt: function(other) {\n      return this.compareTo(other) === 1;\n    },\n\n    gte: function(other) {\n      return this.eq(other) || this.gt(other);\n    },\n\n    // Compare two Qty objects. Throws an exception if they are not of compatible types.\n    // Comparisons are done based on the value of the quantity in base SI units.\n    //\n    // NOTE: We cannot compare inverses as that breaks the general compareTo contract:\n    //   if a.compareTo(b) < 0 then b.compareTo(a) > 0\n    //   if a.compareTo(b) == 0 then b.compareTo(a) == 0\n    //\n    //   Since \"10S\" == \".1ohm\" (10 > .1) and \"10ohm\" == \".1S\" (10 > .1)\n    //     Qty(\"10S\").inverse().compareTo(\"10ohm\") == -1\n    //     Qty(\"10ohm\").inverse().compareTo(\"10S\") == -1\n    //\n    //   If including inverses in the sort is needed, I suggest writing: Qty.sort(qtyArray,units)\n    compareTo: function(other) {\n      if (isString(other)) {\n        return this.compareTo(Qty(other));\n      }\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n      if (this.baseScalar < other.baseScalar) {\n        return -1;\n      }\n      else if (this.baseScalar === other.baseScalar) {\n        return 0;\n      }\n      else if (this.baseScalar > other.baseScalar) {\n        return 1;\n      }\n    },\n\n    // Return true if quantities and units match\n    // Unit(\"100 cm\").same(Unit(\"100 cm\"))  # => true\n    // Unit(\"100 cm\").same(Unit(\"1 m\"))     # => false\n    same: function(other) {\n      return (this.scalar === other.scalar) && (this.units() === other.units());\n    }\n  });\n\n  assign(Qty.prototype, {\n    // returns true if no associated units\n    // false, even if the units are \"unitless\" like 'radians, each, etc'\n    isUnitless: function() {\n      return [this.numerator, this.denominator].every(function(item) {\n        return compareArray(item, UNITY_ARRAY);\n      });\n    },\n\n    /*\n    check to see if units are compatible, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isCompatible: function(other) {\n      if (isString(other)) {\n        return this.isCompatible(Qty(other));\n      }\n\n      if (!(isQty(other))) {\n        return false;\n      }\n\n      if (other.signature !== undefined) {\n        return this.signature === other.signature;\n      }\n      else {\n        return false;\n      }\n    },\n\n    /*\n    check to see if units are inverse of each other, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isInverse: function(other) {\n      return this.inverse().isCompatible(other);\n    },\n\n    // Returns 'true' if the Unit is represented in base units\n    isBase: function() {\n      if (this._isBase !== undefined) {\n        return this._isBase;\n      }\n      if (this.isDegrees() && this.numerator[0].match(/<(kelvin|temp-K)>/)) {\n        this._isBase = true;\n        return this._isBase;\n      }\n\n      this.numerator.concat(this.denominator).forEach(function(item) {\n        if (item !== UNITY && BASE_UNITS.indexOf(item) === -1 ) {\n          this._isBase = false;\n        }\n      }, this);\n      if (this._isBase === false) {\n        return this._isBase;\n      }\n      this._isBase = true;\n      return this._isBase;\n    }\n  });\n\n  function NestedMap() {}\n\n  NestedMap.prototype.get = function(keys) {\n\n    // Allows to pass key1, key2, ... instead of [key1, key2, ...]\n    if (arguments.length > 1) {\n      // Slower with Firefox but faster with Chrome than\n      // Array.prototype.slice.call(arguments)\n      // See http://jsperf.com/array-apply-versus-array-prototype-slice-call\n      keys = Array.apply(null, arguments);\n    }\n\n    return keys.reduce(function(map, key, index) {\n      if (map) {\n\n        var childMap = map[key];\n\n        if (index === keys.length - 1) {\n          return childMap ? childMap.data : undefined;\n        }\n        else {\n          return childMap;\n        }\n      }\n    },\n    this);\n  };\n\n  NestedMap.prototype.set = function(keys, value) {\n\n    if (arguments.length > 2) {\n      keys = Array.prototype.slice.call(arguments, 0, -1);\n      value = arguments[arguments.length - 1];\n    }\n\n    return keys.reduce(function(map, key, index) {\n\n      var childMap = map[key];\n      if (childMap === undefined) {\n        childMap = map[key] = {};\n      }\n\n      if (index === keys.length - 1) {\n        childMap.data = value;\n        return value;\n      }\n      else {\n        return childMap;\n      }\n    }, this);\n  };\n\n  /**\n   * Default formatter\n   *\n   * @param {number} scalar - scalar value\n   * @param {string} units - units as string\n   *\n   * @returns {string} formatted result\n   */\n  function defaultFormatter(scalar, units) {\n    return (scalar + \" \" + units).trim();\n  }\n\n  /**\n   *\n   * Configurable Qty default formatter\n   *\n   * @type {function}\n   *\n   * @param {number} scalar\n   * @param {string} units\n   *\n   * @returns {string} formatted result\n   */\n  Qty.formatter = defaultFormatter;\n\n  assign(Qty.prototype, {\n\n    // returns the 'unit' part of the Unit object without the scalar\n    units: function() {\n      if (this._units !== undefined) {\n        return this._units;\n      }\n\n      var numIsUnity = compareArray(this.numerator, UNITY_ARRAY);\n      var denIsUnity = compareArray(this.denominator, UNITY_ARRAY);\n      if (numIsUnity && denIsUnity) {\n        this._units = \"\";\n        return this._units;\n      }\n\n      var numUnits = stringifyUnits(this.numerator);\n      var denUnits = stringifyUnits(this.denominator);\n      this._units = numUnits + (denIsUnity ? \"\" : (\"/\" + denUnits));\n      return this._units;\n    },\n\n    /**\n     * Stringifies the quantity\n     * Deprecation notice: only units parameter is supported.\n     *\n     * @param {(number|string|Qty)} targetUnitsOrMaxDecimalsOrPrec -\n     *                              target units if string,\n     *                              max number of decimals if number,\n     *                              passed to #toPrec before converting if Qty\n     *\n     * @param {number=} maxDecimals - Maximum number of decimals of\n     *                                formatted output\n     *\n     * @returns {string} reparseable quantity as string\n     */\n    toString: function(targetUnitsOrMaxDecimalsOrPrec, maxDecimals) {\n      var targetUnits;\n      if (isNumber(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = this.units();\n        maxDecimals = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isString(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isQty(targetUnitsOrMaxDecimalsOrPrec)) {\n        return this.toPrec(targetUnitsOrMaxDecimalsOrPrec).toString(maxDecimals);\n      }\n\n      var out = this.to(targetUnits);\n\n      var outScalar = maxDecimals !== undefined ? round(out.scalar, maxDecimals) : out.scalar;\n      out = (outScalar + \" \" + out.units()).trim();\n      return out;\n    },\n\n    /**\n     * Format the quantity according to optional passed target units\n     * and formatter\n     *\n     * @param {string} [targetUnits=current units] -\n     *                 optional units to convert to before formatting\n     *\n     * @param {function} [formatter=Qty.formatter] -\n     *                   delegates formatting to formatter callback.\n     *                   formatter is called back with two parameters (scalar, units)\n     *                   and should return formatted result.\n     *                   If unspecified, formatting is delegated to default formatter\n     *                   set to Qty.formatter\n     *\n     * @example\n     * var roundingAndLocalizingFormatter = function(scalar, units) {\n     *   // localize or limit scalar to n max decimals for instance\n     *   // return formatted result\n     * };\n     * var qty = Qty('1.1234 m');\n     * qty.format(); // same units, default formatter => \"1.234 m\"\n     * qty.format(\"cm\"); // converted to \"cm\", default formatter => \"123.45 cm\"\n     * qty.format(roundingAndLocalizingFormatter); // same units, custom formatter => \"1,2 m\"\n     * qty.format(\"cm\", roundingAndLocalizingFormatter); // convert to \"cm\", custom formatter => \"123,4 cm\"\n     *\n     * @returns {string} quantity as string\n     */\n    format: function(targetUnits, formatter) {\n      if (arguments.length === 1) {\n        if (typeof targetUnits === \"function\") {\n          formatter = targetUnits;\n          targetUnits = undefined;\n        }\n      }\n\n      formatter = formatter || Qty.formatter;\n      var targetQty = this.to(targetUnits);\n      return formatter.call(this, targetQty.scalar, targetQty.units());\n    }\n  });\n\n  var stringifiedUnitsCache = new NestedMap();\n  /**\n   * Returns a string representing a normalized unit array\n   *\n   * @param {string[]} units Normalized unit array\n   * @returns {string} String representing passed normalized unit array and\n   *   suitable for output\n   *\n   */\n  function stringifyUnits(units) {\n\n    var stringified = stringifiedUnitsCache.get(units);\n    if (stringified) {\n      return stringified;\n    }\n\n    var isUnity = compareArray(units, UNITY_ARRAY);\n    if (isUnity) {\n      stringified = \"1\";\n    }\n    else {\n      stringified = simplify(getOutputNames(units)).join(\"*\");\n    }\n\n    // Cache result\n    stringifiedUnitsCache.set(units, stringified);\n\n    return stringified;\n  }\n\n  function getOutputNames(units) {\n    var unitNames = [], token, tokenNext;\n    for (var i = 0; i < units.length; i++) {\n      token = units[i];\n      tokenNext = units[i + 1];\n      if (PREFIX_VALUES[token]) {\n        unitNames.push(OUTPUT_MAP[token] + OUTPUT_MAP[tokenNext]);\n        i++;\n      }\n      else {\n        unitNames.push(OUTPUT_MAP[token]);\n      }\n    }\n    return unitNames;\n  }\n\n  function simplify(units) {\n    // this turns ['s','m','s'] into ['s2','m']\n\n    var unitCounts = units.reduce(function(acc, unit) {\n      var unitCounter = acc[unit];\n      if (!unitCounter) {\n        acc.push(unitCounter = acc[unit] = [unit, 0]);\n      }\n\n      unitCounter[1]++;\n\n      return acc;\n    }, []);\n\n    return unitCounts.map(function(unitCount) {\n      return unitCount[0] + (unitCount[1] > 1 ? unitCount[1] : \"\");\n    });\n  }\n\n  Qty.version = \"1.7.6\";\n\n  return Qty;\n\n})));\n","import Qty from 'js-quantities';\nexport function convertUnit(array, fromUnit, toUnit) {\n    fromUnit = normalize(fromUnit);\n    toUnit = normalize(toUnit);\n    if (fromUnit === toUnit)\n        return array;\n    try {\n        const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n        return convert(array);\n    }\n    catch (e) {\n        return undefined;\n    }\n}\nfunction normalize(unit) {\n    unit = unit.replace(/°C/g, 'tempC');\n    unit = unit.replace(/°F/g, 'tempF');\n    unit = unit.replace(/(^|\\W)K(\\W|$)/g, '$1tempK$2');\n    return unit;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFVuaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9jb252ZXJ0VW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFjaEMsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBVSxFQUNWLFFBQWdCLEVBQ2hCLE1BQWM7SUFFZCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0IsSUFBSSxRQUFRLEtBQUssTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRXRDLElBQUk7UUFDRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUM3RSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxTQUFTLENBQUM7S0FDbEI7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBWTtJQUM3QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9","const testRegExp = /^\\/((?:\\\\\\/|[^/])+)\\/([migyu]{0,5})?$/;\nexport function ensureRegexp(string) {\n    if (typeof string !== 'string')\n        return string;\n    const parts = testRegExp.exec(string);\n    if (parts) {\n        try {\n            return new RegExp(parts[1], parts[2]);\n        }\n        catch (err) {\n            return stringToRegexp(string);\n        }\n    }\n    else {\n        return stringToRegexp(string);\n    }\n}\nfunction stringToRegexp(string, flags = 'i') {\n    return new RegExp(string.replace(/[[\\]\\\\{}()+*?.$^|]/g, (match) => `\\\\${match}`), flags);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlUmVnZXhwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvZW5zdXJlUmVnZXhwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxHQUFHLHVDQUF1QyxDQUFDO0FBRTNELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBdUI7SUFDbEQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDOUMsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxJQUFJLEtBQUssRUFBRTtRQUNULElBQUk7WUFDRixPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0I7S0FDRjtTQUFNO1FBQ0wsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0I7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsTUFBYyxFQUFFLEtBQUssR0FBRyxHQUFHO0lBQ2pELE9BQU8sSUFBSSxNQUFNLENBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxFQUN0RSxLQUFLLENBQ04sQ0FBQztBQUNKLENBQUMifQ==","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\nimport { convertUnit } from './convertUnit';\nexport function getConvertedVariable(variable, newUnits) {\n    const data = variable.units !== undefined && variable.units !== newUnits // would be nice if convertUnit would allow typedArray\n        ? convertUnit(Array.from(variable.data), variable.units, newUnits)\n        : variable.data;\n    return {\n        units: newUnits,\n        label: variable.label.replace(`[${variable.units || ''}]`, `[${newUnits}]`),\n        data: data || [],\n        min: data ? min(data) : undefined,\n        max: data ? max(data) : undefined,\n        isMonotone: xIsMonotone(data),\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29udmVydGVkVmFyaWFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9nZXRDb252ZXJ0ZWRWYXJpYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsUUFBMEIsRUFDMUIsUUFBZ0I7SUFFaEIsTUFBTSxJQUFJLEdBQ1IsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsc0RBQXNEO1FBQ2hILENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7UUFDbEUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDcEIsT0FBTztRQUNMLEtBQUssRUFBRSxRQUFRO1FBQ2YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLFFBQVEsR0FBRyxDQUFDO1FBQzNFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDakMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2pDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO0tBQzlCLENBQUM7QUFDSixDQUFDIn0=","import { convertUnit } from './convertUnit';\nimport { ensureRegexp } from './ensureRegexp';\nimport { getConvertedVariable } from './getConvertedVariable';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n */\nexport function getXYSpectrum(spectra = [], selector = {}) {\n    if (spectra.length < 1)\n        return;\n    let { dataType, title, xUnits, yUnits, variables, xVariable = 'x', yVariable = 'y', units, labels, xLabel, yLabel, meta, index, } = selector;\n    if (index !== undefined) {\n        return spectra[index];\n    }\n    if (dataType) {\n        dataType = ensureRegexp(dataType);\n    }\n    if (title) {\n        title = ensureRegexp(title);\n    }\n    if (units && !xUnits && !yUnits)\n        [yUnits, xUnits] = units.split(/\\s*vs\\s*/);\n    if (labels && !xLabel && !yLabel) {\n        [yLabel, xLabel] = labels.split(/\\s*vs\\s*/);\n    }\n    if (variables) {\n        const parts = variables.split(/\\s*vs\\s*/);\n        if (parts.length === 2) {\n            xVariable = parts[1];\n            yVariable = parts[0];\n        }\n    }\n    if (xLabel)\n        xLabel = ensureRegexp(xLabel);\n    if (yLabel)\n        yLabel = ensureRegexp(yLabel);\n    for (let spectrum of spectra) {\n        let variableNames = Object.keys(spectrum.variables);\n        if (!(variableNames.length > 1))\n            continue;\n        // we filter on general spectrum information\n        if (dataType) {\n            if (!spectrum.dataType || !spectrum.dataType.match(dataType))\n                continue;\n        }\n        if (title) {\n            if (!spectrum.title || !spectrum.title.match(title))\n                continue;\n        }\n        if (meta && typeof meta === 'object') {\n            if (!spectrum.meta)\n                continue;\n            for (let key in spectrum.meta) {\n                if (!spectrum.meta[key])\n                    continue;\n                let value = ensureRegexp(spectrum.meta[key]);\n                if (!value.exec(spectrum.meta[key]))\n                    continue;\n            }\n        }\n        let x = getPossibleVariable(spectrum.variables, {\n            units: xUnits,\n            label: xLabel,\n            variableName: xVariable,\n        });\n        let y = getPossibleVariable(spectrum.variables, {\n            units: yUnits,\n            label: yLabel,\n            variableName: yVariable,\n        });\n        if (x && y) {\n            return {\n                title: spectrum.title,\n                dataType: spectrum.dataType,\n                meta: spectrum.meta,\n                variables: { x, y },\n            };\n        }\n    }\n    return;\n}\nfunction getPossibleVariable(variables, selector = {}) {\n    const { units, label, variableName } = selector;\n    let possible = { ...variables };\n    let key;\n    if (units !== undefined) {\n        for (key in possible) {\n            // @ts-ignore\n            let converted = convertUnit(1, variables[key].units || '', units);\n            if (converted) {\n                // @ts-ignore\n                possible[key] = getConvertedVariable(variables[key], units);\n            }\n            else {\n                // @ts-ignore\n                possible[key] = undefined;\n            }\n        }\n    }\n    if (label !== undefined) {\n        for (key in possible) {\n            // @ts-ignore\n            if (!variables[key].label.match(label)) {\n                // @ts-ignore\n                possible[key] = undefined;\n            }\n        }\n    }\n    if (variableName !== undefined) {\n        if (possible[variableName])\n            return possible[variableName];\n        // @ts-ignore this should disappear if once for ever the variables are lowercases\n        if (possible[variableName.toUpperCase()]) {\n            // @ts-ignore\n            return possible[variableName.toUpperCase()];\n        }\n        // @ts-ignore\n        if (possible[variableName.toLowerCase()]) {\n            // @ts-ignore\n            return possible[variableName.toLowerCase()];\n        }\n    }\n    const possibleFiltered = Object.values(possible).filter((val) => val !== undefined);\n    if (possibleFiltered.length > 0) {\n        return possibleFiltered[0];\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0WFlTcGVjdHJ1bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2dldFhZU3BlY3RydW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLFVBQTJCLEVBQUUsRUFDN0IsV0FBNkIsRUFBRTtJQUUvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU87SUFFL0IsSUFBSSxFQUNGLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxHQUFHLEdBQUcsRUFDZixTQUFTLEdBQUcsR0FBRyxFQUNmLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixJQUFJLEVBQ0osS0FBSyxHQUNOLEdBQUcsUUFBUSxDQUFDO0lBRWIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsSUFBSSxRQUFRLEVBQUU7UUFDWixRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ25DO0lBRUQsSUFBSSxLQUFLLEVBQUU7UUFDVCxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCO0lBRUQsSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNO1FBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RSxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFB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","import isAnyArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum';\nimport { getXYSpectrum } from './util/getXYSpectrum';\n/**\n * Class allowing to store and manipulate an analysis.\n * An analysis may contain one or more spectra that can be selected\n * based on their units\n */\nexport class Analysis {\n    constructor(options = {}) {\n        this.id = options.id || Math.random().toString(36).substring(2, 10);\n        this.label = options.label || this.id;\n        this.spectrumCallback = options.spectrumCallback;\n        this.spectra = [];\n        this.cache = {};\n    }\n    /**\n     * Add a spectrum in the internal spectra variable\n     */\n    pushSpectrum(variables, options = {}) {\n        this.spectra.push(standardizeData(variables, options, {\n            spectrumCallback: this.spectrumCallback,\n        }));\n        this.cache = {};\n    }\n    /**\n     * Retrieve a Spectrum based on x/y units\n     */\n    getXYSpectrum(selector = {}) {\n        let id = JSON.stringify(selector);\n        if (!this.cache[id]) {\n            this.cache[id] = getXYSpectrum(this.spectra, selector);\n        }\n        return this.cache[id];\n    }\n    /**\n     * Retrieve a xy object\n     * @param selector.units Units separated by vs like for example \"g vs °C\"\n     * @param selector.xUnits if undefined takes the first variable\n     * @param selector.yUnits if undefined takes the second variable\n     */\n    getXY(selector = {}) {\n        let spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return {\n            x: spectrum.variables.x.data,\n            y: spectrum.variables.y.data,\n        };\n    }\n    /**\n     * Return the data object for specific x/y units with possibly some\n     * normalization options\n     * @param options.selector.xUnits // if undefined takes the first variable\n     * @param options.selector.yUnits // if undefined takes the second variable\n     */\n    getNormalizedSpectrum(options = {}) {\n        const { normalization, selector } = options;\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return getNormalizedSpectrum(spectrum, normalization);\n    }\n    /**\n     * Returns the first spectrum. This method could be improved in the future\n     * @returns\n     */\n    getSpectrum() {\n        return this.spectra[0];\n    }\n    /**\n     * Returns the xLabel\n     * @param selector.xUnits // if undefined takes the first variable\n     * @param selector.yUnits // if undefined takes the second variable\n     */\n    getXLabel(selector) {\n        var _a;\n        return (_a = this.getXYSpectrum(selector)) === null || _a === void 0 ? void 0 : _a.variables.x.label;\n    }\n    /**\n     * Returns the yLabel\n     * @param selector.xUnits // if undefined takes the first variable\n     * @param selector.yUnits // if undefined takes the second variable\n     */\n    getYLabel(selector) {\n        var _a;\n        return (_a = this.getXYSpectrum(selector)) === null || _a === void 0 ? void 0 : _a.variables.y.label;\n    }\n}\n/**\n * Internal function that ensure the order of x / y array\n */\nfunction standardizeData(variables, options, analysisOptions) {\n    let { meta = {}, dataType = '', title = '' } = options;\n    const { spectrumCallback } = analysisOptions;\n    if (spectrumCallback) {\n        spectrumCallback(variables);\n    }\n    let xVariable = variables.x;\n    let yVariable = variables.y;\n    if (!xVariable || !yVariable) {\n        throw Error('A spectrum must contain at least x and y variables');\n    }\n    if (!isAnyArray(xVariable.data) || !isAnyArray(yVariable.data)) {\n        throw Error('x and y variables must contain an array data');\n    }\n    let x = xVariable.data;\n    let reverse = x && x.length > 1 && x[0] > x[x.length - 1];\n    for (let [key, variable] of Object.entries(variables)) {\n        if (reverse)\n            variable.data = variable.data.reverse();\n        variable.label = variable.label || key;\n        if (variable.label.match(/^.*[([](?<units>.*)[)\\]].*$/)) {\n            const units = variable.label.replace(/^.*[([](?<units>.*)[)\\]].*$/, '$<units>');\n            if (!variable.units || variable.units === units) {\n                variable.units = units;\n                variable.label = variable.label.replace(/[([].*[)\\]]/, '').trim();\n            }\n        }\n        variable.min = min(variable.data);\n        variable.max = max(variable.data);\n        variable.isMonotone = xIsMonotone(variable.data);\n    }\n    return {\n        variables,\n        title,\n        dataType,\n        meta,\n    };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5hbHlzaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQW5hbHlzaXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWNyRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFPbkIsWUFBbUIsVUFBMkIsRUFBRTtRQUM5QyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWSxDQUNqQixTQUE0QixFQUM1QixVQUF1QyxFQUFFO1FBRXpDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQ2xDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENB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","/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\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    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    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] = Number(spectrum[existingGCMSFields[j]]);\n        }\n        if (spectrum.data) {\n            chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n        }\n    }\n    result.chromatogram = chromatogram;\n}\nexport function isMSField(canonicDataLabel) {\n    return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\nexport function convertMSFieldToLabel(value) {\n    return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n//# sourceMappingURL=complexChromatogram.js.map","export default function convertToFloatArray(stringArray) {\n    let floatArray = [];\n    for (let i = 0; i < stringArray.length; i++) {\n        floatArray.push(Number(stringArray[i]));\n    }\n    return floatArray;\n}\n//# sourceMappingURL=convertToFloatArray.js.map","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    let yFactor = spectrum.yFactor;\n    let deltaX = spectrum.deltaX;\n    spectrum.isXYdata = true;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let currentX = spectrum.firstX;\n    let currentY = spectrum.firstY;\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        }\n        else {\n            if (endLine)\n                break;\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)\n            ascii = 13;\n        else\n            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        }\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                }\n                else {\n                    currentValue *= 10;\n                    currentValue += ascii - 48;\n                }\n            }\n            else if (ascii === 44 || ascii === 46) {\n                // a \",\" or \".\"\n                inValue = true;\n                decimalPosition++;\n            }\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)\n                            skipFirstValue = true;\n                    }\n                    else {\n                        // need to deal with duplicate and differences\n                        if (skipFirstValue) {\n                            skipFirstValue = false;\n                        }\n                        else {\n                            if (isDifference) {\n                                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                                isLastDifference = true;\n                                isDifference = false;\n                            }\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                                }\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                // 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                }\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                }\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                }\n                else if (ascii > 82 && ascii < 91) {\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = ascii - 82;\n                }\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                }\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                }\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                }\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                }\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 ((ascii2 >= 48 && ascii2 <= 57) ||\n                        ascii2 === 44 ||\n                        ascii2 === 46) {\n                        inValue = true;\n                        if (!newLine)\n                            isLastDifference = false;\n                        isNegative = true;\n                    }\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//# sourceMappingURL=fastParseXYData.js.map","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\nexport default function parsePeakTable(spectrum, value, result) {\n    spectrum.isPeaktable = true;\n    if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n        parseXY(spectrum, value, result);\n    }\n    else {\n        parseXYZ(spectrum, value, result);\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}\nfunction parseXY(spectrum, value, result) {\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\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 Number\n                currentData.x.push(Number(values[j]) * spectrum.xFactor);\n                currentData.y.push(Number(values[j + 1]) * spectrum.yFactor);\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\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    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\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(Number(values[j]));\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\n//# sourceMappingURL=parsePeakTable.js.map","export default function parseXYA(spectrum, value) {\n    let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n    spectrum.isXYAdata = true;\n    let values;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n        currentData.x.push(Number(values[0]));\n        currentData.y.push(Number(values[1]));\n    }\n}\n//# sourceMappingURL=parseXYA.js.map","import getMedian from 'ml-array-median';\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    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)\n                minZ = value;\n            if (value > maxZ)\n                maxZ = value;\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    // 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    const medians = [];\n    for (let i = 0; i < z.length; i++) {\n        const row = Float64Array.from(z[i]);\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] < 0)\n                row[i] = -row[i];\n        }\n        medians.push(getMedian(row));\n    }\n    const median = getMedian(medians);\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: median,\n    };\n}\n//# sourceMappingURL=convertTo3DZ.js.map","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    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    // System.out.prvarln('y0 '+y0+' yN '+yN);\n    // -------------------------\n    // Povars attribution\n    //\n    // 0----1\n    // |  / |\n    // | /  |\n    // 2----3\n    //\n    // ---------------------d------\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 = (maxZ - options.noiseMultiplier * noise) *\n            Math.exp((level >> 1) - options.nbContourLevels);\n        if (side === 0) {\n            lineZValue = factor + options.noiseMultiplier * noise;\n        }\n        else {\n            lineZValue = 0 - factor - options.noiseMultiplier * noise;\n        }\n        let lines = [];\n        contourLevel.zValue = lineZValue;\n        contourLevel.lines = lines;\n        if (lineZValue <= minZ || lineZValue >= maxZ)\n            continue;\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                isOver0 = povarHeight0 > lineZValue;\n                isOver1 = povarHeight1 > lineZValue;\n                isOver2 = povarHeight2 > lineZValue;\n                isOver3 = povarHeight3 > lineZValue;\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    return {\n        minX: zData.minX,\n        maxX: zData.maxX,\n        minY: zData.minY,\n        maxY: zData.maxY,\n        segments: contourLevels,\n    };\n}\n//# sourceMappingURL=generateContourLines.js.map","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\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//# sourceMappingURL=add2D.js.map","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\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//# sourceMappingURL=gyromagneticRatio.js.map","import { gyromagneticRatio } from 'nmr-processing';\nexport default function postProcessingNMR(entriesFlat) {\n    // specific NMR functions\n    for (let entry of entriesFlat) {\n        let observeFrequency = 0;\n        let shiftOffsetVal = 0;\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            }\n            else {\n                observeFrequency = spectrum.observeFrequency;\n                shiftOffsetVal = spectrum.shiftOffsetVal;\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            // 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') {\n                            // if F1 is defined we will use F2\n                            if (entry.tmp.$NUC2) {\n                                entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n                            }\n                            else {\n                                let f2index = entry.ntuples.symbol.indexOf('F2');\n                                if (f2index && entry.ntuples.nucleus[f2index]) {\n                                    entry.ntuples.nucleus[i] = entry.ntuples.nucleus[f2index];\n                                }\n                            }\n                        }\n                        if (symbol === 'F2')\n                            entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n                    }\n                    if (symbol === 'F2') {\n                        entry.yType = entry.ntuples.nucleus[0];\n                    }\n                }\n            }\n            if (observeFrequency &&\n                entry.ntuples &&\n                entry.ntuples.symbol &&\n                entry.ntuples.nucleus) {\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                    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//# sourceMappingURL=postProcessingNMR.js.map","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//# sourceMappingURL=profiling.js.map","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//# sourceMappingURL=simpleChromatogram.js.map","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\nexport default function postProcessing(entriesFlat, result, options) {\n    // converting Hz to ppm\n    postProcessingNMR(entriesFlat);\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])\n                        newNtuples[j] = {};\n                    newNtuples[j][key] = values[j];\n                }\n            }\n            entry.ntuples = newNtuples;\n        }\n        if (entry.twoD && options.wantXY) {\n            add2D(entry, options);\n            profiling(result, 'Finished countour plot calculation', options);\n            if (!options.keepSpectra) {\n                delete entry.spectra;\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            }\n            else {\n                simpleChromatogram(entry);\n            }\n            profiling(result, 'Finished chromatogram calculation', options);\n        }\n        delete entry.tmp;\n    }\n}\n//# sourceMappingURL=postProcessing.js.map","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    }\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)\n                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    if (xIndex === -1)\n        xIndex = 0;\n    if (yIndex === -1)\n        yIndex = 0;\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 (currentEntry.ntuples.vardim &&\n        currentEntry.ntuples.vardim.length > xIndex) {\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 (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[xIndex]) {\n                spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n            }\n            else {\n                spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n            }\n        }\n        if (currentEntry.ntuples.units.length > yIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[yIndex]) {\n                spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n            }\n            else {\n                spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n            }\n        }\n    }\n}\n//# sourceMappingURL=prepareNtuplesDatatable.js.map","export default function prepareSpectrum(spectrum) {\n    if (!spectrum.xFactor)\n        spectrum.xFactor = 1;\n    if (!spectrum.yFactor)\n        spectrum.yFactor = 1;\n}\n//# sourceMappingURL=prepareSpectrum.js.map","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\nimport { 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// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\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 * @typedef {object} ConvertOptions\n * @property {RegExp} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @property {boolean} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @property {boolean} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @property {boolean} [options.dynamicTyping=false] - Convert numbers to Number.\n * @property {boolean} [options.withoutXY=false] - Remove the XY data.\n * @property {boolean} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @property {boolean} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @property {boolean} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @property {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @property {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @property {boolean} [options.profiling=false] - Add profiling information.\n */\n/**\n *\n * @typedef {object} Ntuples\n * @property {string[]} [varname]\n * @property {string[]} [symbol]\n * @property {string[]} [vartype]\n * @property {string[]} [varform]\n * @property {number[]} [vardim]\n * @property {string[]} [units]\n * @property {number[]} [factor]\n * @property {number[]} [first]\n * @property {number[]} [last]\n * @property {number[]} [min]\n * @property {number[]} [max]\n * @property {string[]} [nucleus]\n */\n/**\n * @typedef { Record<string, any> } Spectrum\n * @property {Record<string, number[]>} [data]\n * @property {number} [firstX]\n * @property {number} [lastX]\n * @property {number} [deltaX]\n * @property {number} [yFactor]\n * @property {number} [xFactor]\n * @property {number} [nbPoints]\n */\n/**\n *\n * @typedef {object} Entry\n * @property {Spectrum[]} spectra\n * @property {Ntuples} ntuples\n * @property {object} meta\n * @property {object} tmp\n * @property {string} [title]\n * @property {string} [dataType]\n * @property {string} [dataClass]\n * @property {boolean} [twoD]\n */\n/**\n *\n * @typedef { object } ConvertResult\n * @property { object[] | boolean } profiling\n * @property { string[] } logs\n * @property { object[] } entries\n * @property { Entry[] } flatten\n */\n/**\n * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {ConvertOptions} [options]\n * @returns {ConvertResult}\n */\nexport function convert(jcamp, options = {}) {\n    jcamp = ensureString(jcamp);\n    options = { ...defaultOptions, ...options };\n    options.wantXY = !options.withoutXY;\n    options.start = Date.now();\n    let entriesFlat = [];\n    let result = {\n        profiling: options.profiling ? [] : false,\n        logs: [],\n        entries: [],\n    };\n    let tmpResult = { children: [] };\n    let currentEntry = tmpResult;\n    let parentsStack = [];\n    let spectrum = {};\n    if (typeof jcamp !== 'string') {\n        throw new TypeError('the JCAMP should be a string');\n    }\n    profiling(result, 'Before split to LDRS', options);\n    let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n    profiling(result, 'Split to LDRS', options);\n    if (ldrs[0])\n        ldrs[0] = ldrs[0].replace(/^[\\r\\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        let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n        if (canonicDataLabel === 'DATATABLE') {\n            let endLine = dataValue.indexOf('\\n');\n            if (endLine === -1)\n                endLine = dataValue.indexOf('\\r');\n            if (endLine > 0) {\n                // ##DATA TABLE= (X++(I..I)), XYDATA\n                // We need to find the variables\n                let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n                prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n                spectrum.datatable = infos[0];\n                if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n                    canonicDataLabel = 'PEAKTABLE';\n                }\n                else if (infos[1] &&\n                    (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)) {\n                    canonicDataLabel = 'XYDATA';\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                }\n            }\n        }\n        if (canonicDataLabel === 'XYDATA') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n                if (dataValue.match(/.*\\+\\+.*/)) {\n                    // ex: (X++(Y..Y))\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                    fastParseXYData(spectrum, dataValue, result);\n                }\n                else {\n                    parsePeakTable(spectrum, dataValue, result);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        else if (canonicDataLabel === 'PEAKTABLE') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                parsePeakTable(spectrum, dataValue, result);\n                currentEntry.spectra.push(spectrum);\n                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 = {};\n            }\n            continue;\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        }\n        else if (canonicDataLabel === 'DATATYPE') {\n            currentEntry.dataType = dataValue;\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'NTUPLES') {\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'DATACLASS') {\n            currentEntry.dataClass = dataValue;\n        }\n        else if (canonicDataLabel === 'XUNITS') {\n            spectrum.xUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'YUNITS') {\n            spectrum.yUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'FIRSTX') {\n            spectrum.firstX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTX') {\n            spectrum.lastX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'FIRSTY') {\n            spectrum.firstY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTY') {\n            spectrum.lastY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'NPOINTS') {\n            spectrum.nbPoints = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'XFACTOR') {\n            spectrum.xFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'YFACTOR') {\n            spectrum.yFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXX') {\n            spectrum.maxX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINX') {\n            spectrum.minX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXY') {\n            spectrum.maxY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINY') {\n            spectrum.minY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'DELTAX') {\n            spectrum.deltaX = Number(dataValue);\n        }\n        else if (canonicDataLabel === '.OBSERVEFREQUENCY' ||\n            canonicDataLabel === '$SFO1') {\n            if (!spectrum.observeFrequency) {\n                spectrum.observeFrequency = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n            if (!spectrum.xType) {\n                currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n            }\n        }\n        else if (canonicDataLabel === '$OFFSET') {\n            // OFFSET for Bruker spectra\n            currentEntry.shiftOffsetNum = 0;\n            if (!spectrum.shiftOffsetVal) {\n                spectrum.shiftOffsetVal = Number(dataValue);\n            }\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 = Number(parts[3].trim());\n        }\n        else if (canonicDataLabel === 'VARNAME') {\n            currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'SYMBOL') {\n            currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARTYPE') {\n            currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARFORM') {\n            currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARDIM') {\n            currentEntry.ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'UNITS') {\n            currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'FACTOR') {\n            currentEntry.ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'FIRST') {\n            currentEntry.ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'LAST') {\n            currentEntry.ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MIN') {\n            currentEntry.ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MAX') {\n            currentEntry.ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === '.NUCLEUS') {\n            if (currentEntry.ntuples) {\n                currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n            }\n        }\n        else if (canonicDataLabel === 'PAGE') {\n            spectrum.page = dataValue.trim();\n            spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n            spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n        }\n        else if (canonicDataLabel === 'RETENTIONTIME') {\n            spectrum.pageValue = Number(dataValue);\n        }\n        else if (isMSField(canonicDataLabel)) {\n            spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n        }\n        else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n            spectrum.sampleDescription = dataValue;\n        }\n        else if (canonicDataLabel.startsWith('$NUC')) {\n            if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n                currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n            }\n        }\n        else if (canonicDataLabel === 'END') {\n            currentEntry = parentsStack.pop();\n        }\n        if (currentEntry &&\n            currentEntry.info &&\n            currentEntry.meta &&\n            canonicDataLabel.match(options.keepRecordsRegExp)) {\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            }\n            else {\n                label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n                target = currentEntry.info;\n            }\n            if (options.dynamicTyping) {\n                value = parseString(value);\n            }\n            if (target[label]) {\n                if (!Array.isArray(target[label])) {\n                    target[label] = [target[label]];\n                }\n                target[label].push(value);\n            }\n            else {\n                target[label] = value;\n            }\n        }\n    }\n    profiling(result, 'Finished parsing', options);\n    postProcessing(entriesFlat, result, options);\n    profiling(result, 'Total time', options);\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    return result;\n}\n//# sourceMappingURL=convert.js.map","import { convert } from 'jcampconverter';\nimport { Analysis } from '../Analysis';\n/**\n * Creates a new Analysis from a JCAMP string\n * @param {string} jcamp - String containing the JCAMP data\n * @param {object} [options={}]\n * @param {object} [options.id=Math.random()]\n * @param {string} [options.label=options.id] human redeable label\n * @param {string} [options.spectrumCallback] a callback to apply on variables when creating spectrum\n * @return {Analysis} - New class element with the given data\n */\nexport function fromJcamp(jcamp, options = {}) {\n    let analysis = new Analysis(options);\n    addJcamp(analysis, jcamp);\n    return analysis;\n}\nfunction addJcamp(analysis, jcamp) {\n    let converted = convert(jcamp, {\n        keepRecordsRegExp: /.*/,\n    });\n    for (let entry of converted.flatten) {\n        if (!entry.spectra || !entry.spectra[0])\n            continue;\n        let currentSpectrum = entry.spectra[0];\n        // we ensure variables\n        if (!currentSpectrum.variables) {\n            const variables = {};\n            currentSpectrum.variables = variables;\n            variables.x = {\n                label: currentSpectrum.xUnits,\n                symbol: 'X',\n                data: currentSpectrum.data.x || currentSpectrum.data.X,\n            };\n            variables.y = {\n                label: currentSpectrum.yUnits,\n                symbol: 'Y',\n                data: currentSpectrum.data.y || currentSpectrum.data.Y,\n            };\n        }\n        else {\n            for (let key in currentSpectrum.variables) {\n                const variable = currentSpectrum.variables[key];\n                if (variable.label)\n                    continue;\n                variable.label = variable.name || variable.symbol || key;\n                if (variable.units && !variable.label.includes(variable.units)) {\n                    variable.label += ` [${variable.units}]`;\n                }\n            }\n        }\n        analysis.pushSpectrum(currentSpectrum.variables, {\n            dataType: entry.dataType,\n            title: entry.title,\n            meta: entry.meta,\n        });\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUpjYW1wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zyb20vZnJvbUpjYW1wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUEyQixFQUFFLE9BQU8sR0FBRyxFQUFFO0lBQ2pFLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLFFBQWtCLEVBQUUsS0FBMkI7SUFDL0QsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRTtRQUM3QixpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCLENBQUMsQ0FBQztJQUVILEtBQUssSUFBSSxLQUFLLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUNsRCxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZDLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRTtZQUM5QixNQUFNLFNBQVMsR0FBcUMsRUFBRSxDQUFDO1lBQ3ZELGVBQWUsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLFNBQVMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ1osS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNO2dCQUM3QixNQUFNLEVBQUUsR0FBRztnQkFDWCxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZELENBQUM7WUFDRixTQUFTLENBQUMsQ0FBQyxHQUFHO2dCQUNaLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDN0IsTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2RCxDQUFDO1NBQ0g7YUFBTTtZQUNMLEtBQUssSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDekMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxRQUFRLENBQUMsS0FBSztvQkFBRSxTQUFTO2dCQUM3QixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7Z0JBQ3pELElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDOUQsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQztpQkFDMUM7YUFDRjtTQUNGO1FBRUQsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO1lBQy9DLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyJ9","import maxFct from 'ml-array-max';\nimport minFct from 'ml-array-min';\n\n/**\n * Parse from a xyxy data array\n * @param {Array<Array<number>>} variables\n * @param {object} [meta] - same metadata object format that the fromText\n * @return {string} JCAMP of the input\n */\nexport default function creatorNtuples(variables, options) {\n  const { meta = {}, info = {} } = options;\n\n  const { title = '', owner = '', origin = '', dataType = '' } = info;\n\n  const symbol = [];\n  const varName = [];\n  const varType = [];\n  const varDim = [];\n  const units = [];\n  const first = [];\n  const last = [];\n  const min = [];\n  const max = [];\n  const factor = [];\n\n  const keys = Object.keys(variables);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    let variable = variables[key];\n\n    let name = variable.label && variable.label.replace(/ *\\[.*/, '');\n    let unit = variable.label && variable.label.replace(/.*\\[(.*)\\].*/, '$1');\n\n    symbol.push(variable.symbol || key);\n    varName.push(variable.name || name || key);\n    varDim.push(variables[key].data.length);\n\n    if (variable.isDependent !== undefined) {\n      varType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n    } else {\n      varType.push(\n        variable.type\n          ? variable.type.toUpperCase()\n          : i === 0\n          ? 'INDEPENDENT'\n          : 'DEPENDENT',\n      );\n    }\n\n    units.push(variable.units || unit || '');\n    first.push(variables[key][0]);\n    last.push(variables[key][variables[key].length - 1]);\n    min.push(minFct(variables[key].data));\n    max.push(maxFct(variables[key].data));\n    factor.push(1);\n  }\n\n  let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n\n  for (const key in meta) {\n    header +=\n      typeof meta[key] === 'object'\n        ? `##$${key}=${JSON.stringify(meta[key])}\\n`\n        : `##$${key}=${meta[key]}\\n`;\n  }\n\n  header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join()}\n##SYMBOL=    ${symbol.join()}\n##VAR_TYPE=  ${varType.join()}\n##VAR_DIM=   ${varDim.join()}\n##UNITS=     ${units.join()}\n##PAGE= N=1\\n`;\n\n  header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n\n  for (let i = 0; i < variables[keys[0]].data.length; i++) {\n    let point = [];\n    for (let key of keys) {\n      point.push(variables[key].data[i]);\n    }\n    header += `${point.join('\\t')}\\n`;\n  }\n\n  header += '##END';\n  return header;\n}\n","export function getNumber(number, factor) {\n  if (factor !== 1) number /= factor;\n  const rounded = Math.round(number);\n  if (rounded !== number && Math.abs(rounded - number) <= Number.EPSILON) {\n    return rounded;\n  }\n  return number;\n}\n","import { getNumber } from './getNumber.js';\n\nexport function peakTableCreator(data, options = {}) {\n  const { xFactor = 1, yFactor = 1 } = options;\n  let firstX = Number.POSITIVE_INFINITY;\n  let lastX = Number.NEGATIVE_INFINITY;\n  let firstY = Number.POSITIVE_INFINITY;\n  let lastY = Number.NEGATIVE_INFINITY;\n\n  let lines = [];\n\n  for (let i = 0; i < data.x.length; i++) {\n    let x = data.x[i];\n    let y = data.y[i];\n    if (firstX > x) {\n      firstX = x;\n    }\n    if (lastX < x) {\n      lastX = x;\n    }\n    if (firstY > y) {\n      firstY = y;\n    }\n    if (lastY < y) {\n      lastY = y;\n    }\n  }\n  lines.push(`##FIRSTX=${firstX}`);\n  lines.push(`##LASTX=${lastX}`);\n  lines.push(`##FIRSTY=${firstY}`);\n  lines.push(`##LASTY=${lastY}`);\n  lines.push(`##XFACTOR=${xFactor}`);\n  lines.push(`##YFACTOR=${yFactor}`);\n  lines.push('##PEAK TABLE=(XY..XY)');\n\n  for (let i = 0; i < data.x.length; i++) {\n    lines.push(\n      `${getNumber(data.x[i], xFactor)} ${getNumber(data.y[i], yFactor)}`,\n    );\n  }\n  return lines;\n}\n","import { getNumber } from './getNumber.js';\n\nexport function xyDataCreator(data, options = {}) {\n  const { xFactor = 1, yFactor = 1 } = options;\n  let firstX = data.x[0];\n  let lastX = data.x[data.x.length - 1];\n  let firstY = data.y[0];\n  let lastY = data.y[data.y.length - 1];\n  let nbPoints = data.x.length;\n  let deltaX = (lastX - firstX) / (nbPoints - 1);\n  let lines = [];\n\n  lines.push(`##FIRSTX=${firstX}`);\n  lines.push(`##LASTX=${lastX}`);\n  lines.push(`##FIRSTY=${firstY}`);\n  lines.push(`##LASTY=${lastY}`);\n  lines.push(`##DELTAX=${deltaX}`);\n  lines.push(`##XFACTOR=${xFactor}`);\n  lines.push(`##YFACTOR=${yFactor}`);\n  lines.push(`##DELTAX=${xFactor}`);\n  lines.push('##XYDATA=(X++(Y..Y))');\n\n  let line = data.x[0];\n  for (let i = 0; i < data.x.length; i++) {\n    line += ` ${getNumber(data.y[i], yFactor)}`;\n    if (line.length > 70) {\n      lines.push(line);\n      if (i < data.x.length - 1) {\n        line = getNumber(data.x[0] + i * deltaX, xFactor);\n      } else {\n        line = '';\n      }\n    }\n  }\n  if (line) lines.push(line);\n  return lines;\n}\n","import { peakTableCreator } from './utils/peakTableCreator';\nimport { xyDataCreator } from './utils/xyDataCreator';\n/**\n * Create a jcamp\n * @param {object} data object of array\n * @param {object} [options={}] metadata object\n * @param {string} [options.info={}] metadata of the file\n * @param {string} [options.info.title=''] title of the file\n * @param {string} [options.info.owner=''] owner of the file\n * @param {string} [options.info.origin=''] origin of the file\n * @param {string} [options.info.dataType=''] type of data\n * @param {string} [options.info.xUnits=''] units for the x axis for variables===undefined\n * @param {string} [options.info.yUnits=''] units for the y axis for variables===undefined\n * @param {number} [options.info.xFactor=1] factor to multiply X values\n * @param {number} [options.info.yFactor=1] factor to multiply Y values\n * @param {object} [options.meta={}] comments to add to the file\n * @param {boolean} [options.xydata=false] Use XYDATA format. Will use first / last X and equidistant Xs values if true\n * @return {string} JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n  const { meta = {}, info = {}, xydata = false } = options;\n\n  const {\n    title = '',\n    owner = '',\n    origin = '',\n    dataType = '',\n    xUnits = '',\n    yUnits = '',\n    xFactor = 1,\n    yFactor = 1,\n  } = info;\n\n  data = { x: data.x, y: data.y };\n\n  let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\\n`;\n\n  for (const key in meta) {\n    header +=\n      key.toLowerCase() === 'cheminfo'\n        ? `##$${key}=${JSON.stringify(meta[key])}\\n`\n        : `##$${key}=${meta[key]}\\n`;\n  }\n\n  // we leave the header and utf8 fonts ${header.replace(/[^\\t\\r\\n\\x20-\\x7F]/g, '')\n\n  return `${header}##NPOINTS=${data.x.length}\n${(xydata\n  ? xyDataCreator(data, { xFactor, yFactor })\n  : peakTableCreator(data, { xFactor, yFactor })\n).join('\\n')}\n##END`;\n}\n","import creatorNtuples from './creatorNtuples';\nimport { fromJSON } from './fromJSON';\n\n/**\n * Create a jcamp from variables\n * @param {Array<Variable} [variables={}] - object of variables\n * @param {string} [options.info={}] - metadata of the file\n * @param {string} [options.info.title = ''] - title of the file\n * @param {string} [options.info.owner = ''] - owner of the file\n * @param {string} [options.info.origin = ''] - origin of the file\n * @param {string} [options.info.dataType = ''] - type of data\n * @param {object} [options.meta = {}] - comments to add to the file\n * @param {object} [options.forceNtuples = false] - force the ntuples format even if there is only x and y variables\n */\nexport function fromVariables(variables = {}, options = {}) {\n  const { info, meta, forceNtuples } = options;\n\n  let jcampOptions = {\n    info,\n    meta,\n  };\n\n  let keys = Object.keys(variables).map((key) => key.toLowerCase());\n  if (\n    keys.length === 2 &&\n    keys.includes('x') &&\n    keys.includes('y') &&\n    !forceNtuples\n  ) {\n    let x = variables.x;\n    let xLabel = x.label || x.name || 'x';\n\n    jcampOptions.info.xUnits = xLabel.includes(variables.x.units)\n      ? xLabel\n      : `${xLabel} [${variables.x.units}]`;\n\n    let y = variables.y;\n    let yLabel = y.label || y.name || 'y';\n\n    jcampOptions.info.yUnits = yLabel.includes(variables.y.units)\n      ? yLabel\n      : `${yLabel} [${variables.y.units}]`;\n    return fromJSON({ x: variables.x.data, y: variables.y.data }, jcampOptions);\n  } else {\n    return creatorNtuples(variables, options);\n  }\n}\n","import { fromVariables } from 'convert-to-jcamp';\nexport function toJcamps(analysis, options = {}) {\n    let jcamps = [];\n    for (let spectrum of analysis.spectra) {\n        jcamps.push(getJcamp(spectrum, options));\n    }\n    return jcamps;\n}\nfunction getJcamp(spectrum, options) {\n    const { info = {}, meta = {} } = options;\n    let jcampOptions = {\n        options: {},\n        info: {\n            title: spectrum.title,\n            dataType: spectrum.dataType,\n            ...info,\n        },\n        meta: { ...spectrum.meta, ...meta },\n    };\n    return fromVariables(spectrum.variables, jcampOptions);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KY2FtcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG8vdG9KY2FtcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUWpELE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBa0IsRUFBRSxVQUEyQixFQUFFO0lBQ3hFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixLQUFLLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUU7UUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDMUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsUUFBa0IsRUFBRSxPQUF3QjtJQUM1RCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXpDLElBQUksWUFBWSxHQUFHO1FBQ2pCLE9BQU8sRUFBRSxFQUFFO1FBQ1gsSUFBSSxFQUFFO1lBQ0osS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQ3JCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixHQUFHLElBQUk7U0FDUjtRQUNELElBQUksRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRTtLQUNwQyxDQUFDO0lBRUYsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN6RCxDQUFDIn0=","import { toJcamps } from './toJcamps';\nexport function toJcamp(analysis, options = {}) {\n    return toJcamps(analysis, options).join('\\n');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KY2FtcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90by90b0pjYW1wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNdEMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxRQUFrQixFQUFFLFVBQTJCLEVBQUU7SUFDdkUsT0FBTyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRCxDQUFDIn0=","import { getJSGraph } from './jsgraph/getJSGraph';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations';\nexport * from './AnalysesManager';\nexport * from './Analysis';\nexport * from './from/fromJcamp';\nexport * from './from/fromText';\nexport * from './to/toJcamp';\nexport * from './to/toJcamps';\nexport * from './to/toText';\nexport * from './util/getNormalizedSpectrum';\nexport * from './util/peakPicking';\nexport * from './util/autoPeakPicking';\nexport * from './types/types';\nexport * from './types/AutoPeakPickingOptions';\nexport * from './types/NormalizedFilters';\nexport * from './types/NormalizedSpectrumOptions';\nexport * from './types/PlotObject';\nexport * from './types/SGOptions';\nexport * from './types/ShapeOptions';\nexport * from './types/SpectrumSelector';\nexport { getReactPlotJSON } from './reactPlot/getReactPlotJSON';\nexport const JSGraph = {\n    getJSGraph,\n    getNormalizationAnnotations,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXBGLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLFVBQVU7SUFDViwyQkFBMkI7Q0FDNUIsQ0FBQyJ9","export function dscParseCPS(text) {\n  const lines = text.split(/\\r?\\n/);\n\n  const index = lines.findIndex((line) => line.match(/^[ ,]*$/));\n\n  return {\n    meta: parseMeta(lines.slice(0, index)),\n    data: parseData(lines.slice(index + 1)),\n  };\n}\n\nfunction parseMeta(lines) {\n  let meta = {};\n  for (let line of lines) {\n    const field = line.split(',').filter((field) => field)[0];\n    if (field.indexOf(':') >= 0) {\n      meta[field.replace(/:.*/, '').trim()] = field.replace(/.*?:/, '').trim();\n    }\n  }\n  return meta;\n}\n\nfunction parseData(lines) {\n  const columns = [];\n  for (let line of lines) {\n    let fields = line.split(/,/);\n    if (fields.length < 10) continue;\n    for (let i = 0; i < fields.length; i++) {\n      let value = fields[i].trim();\n      let number = Number.parseFloat(value);\n      if (!columns[i]) columns[i] = [];\n      columns[i].push(isNaN(number) ? value : number);\n    }\n  }\n\n  const data = {};\n  for (let i = 0; i < columns.length; i++) {\n    let column = columns[i];\n\n    if (column.filter((field) => field).length === 0) continue;\n    let target = '';\n    if ([4, 5, 6].includes(i)) target = columns[5][0];\n    if ([8, 9, 10].includes(i)) target = columns[9][0];\n    if ([12, 13, 14].includes(i)) target = columns[13][0];\n    if ([16, 17, 18].includes(i)) target = columns[17][0];\n    if (target) {\n      if (!data[target]) data[target] = {};\n      appendVariable(data[target], columns[i], target);\n    } else {\n      appendVariable(data, columns[i]);\n    }\n  }\n  return data;\n}\n\nfunction appendVariable(object, column, target = '') {\n  object[column[1]] = {\n    units: column[2],\n    label: target ? `${target} ${column[1]}` : column[1],\n    data: column.slice(3),\n  };\n}\n","import { xyCumulativeDistributionStatistics } from 'ml-spectra-processing';\n\nexport function getStats(spectrum) {\n  let stats = {};\n  if (spectrum.variables.x && spectrum.variables.y) {\n    let data = {\n      x: spectrum.variables.x.data,\n      y: spectrum.variables.y.data,\n    };\n\n    const weightStats = xyCumulativeDistributionStatistics(data);\n    stats.weight = {\n      diameter25: { value: weightStats.x25, units: spectrum.variables.x.units },\n      diameter50: { value: weightStats.x50, units: spectrum.variables.x.units },\n      diameter75: { value: weightStats.x75, units: spectrum.variables.x.units },\n      diameterMode: {\n        value: weightStats.xMode,\n        units: spectrum.variables.x.units,\n      },\n      diameterMean: {\n        value: weightStats.xMean,\n        units: spectrum.variables.x.units,\n      },\n      diameterWidth50: {\n        value: weightStats.x75 - weightStats.x25,\n        units: spectrum.variables.x.units,\n      },\n    };\n  }\n\n  if (spectrum.variables.x && spectrum.variables.n) {\n    let data = {\n      x: spectrum.variables.x.data,\n      y: spectrum.variables.n.data,\n    };\n    const numberStats = xyCumulativeDistributionStatistics(data);\n    stats.number = {\n      diameter25: { value: numberStats.x25, units: spectrum.variables.x.units },\n      diameter50: { value: numberStats.x50, units: spectrum.variables.x.units },\n      diameter75: { value: numberStats.x75, units: spectrum.variables.x.units },\n      diameterMode: {\n        value: numberStats.xMode,\n        units: spectrum.variables.x.units,\n      },\n      diameterMean: {\n        value: numberStats.xMean,\n        units: spectrum.variables.x.units,\n      },\n      diameterWidth50: {\n        value: numberStats.x75 - numberStats.x25,\n        units: spectrum.variables.x.units,\n      },\n    };\n  }\n  return stats;\n}\n","import { Analysis } from 'common-spectrum';\nimport { dscParseCPS } from 'physical-chemistry-parser';\n\nimport { getStats } from '../util/getStats.js';\n\nexport function fromCPS(text) {\n  const analysis = new Analysis();\n  const parsed = dscParseCPS(text);\n\n  const meta = parsed.meta;\n\n  const data = {\n    x: {\n      data: parsed.data.Diam.data.reverse(),\n      label: parsed.data.Diam.label,\n      units: parsed.data.Diam.units === 'microns' ? 'µm' : '',\n      type: 'DEPENDENT',\n    },\n    y: {\n      data: parsed.data.Weight.Height.data.reverse(),\n      label: parsed.data.Weight.Height.label,\n      units: parsed.data.Weight.Height.units,\n      type: 'DEPENDENT',\n    },\n    n: {\n      data: parsed.data.Number.Height.data.reverse(),\n      label: parsed.data.Number.Height.label,\n      units: parsed.data.Number.Height.units,\n      type: 'DEPENDENT',\n    },\n    t: {\n      data: parsed.data.Time.data.reverse(),\n      label: parsed.data.Time.label,\n      units: parsed.data.Time.units === 'seconds' ? 's' : '',\n      type: 'INDEPENDENT',\n    },\n  };\n\n  meta.cheminfo = { meta: { stats: getStats({ variables: data }) } };\n  analysis.pushSpectrum(data, {\n    dataType: 'Differential Centrifugal Sedimentation (DCS)',\n    title: meta['Sample description'],\n    meta,\n  });\n\n  return analysis;\n}\n","import { JSGraph as OriginalJSGraph } from 'common-spectrum';\n\nexport const JSGraph = { ...OriginalJSGraph };\n\nJSGraph.getJSGraph = function getJSGraph(data, options) {\n  return OriginalJSGraph.getJSGraph(data, {\n    xAxis: { logScale: true },\n    ...options,\n  });\n};\n\nexport { Analysis, AnalysesManager, fromJcamp, toJcamp } from 'common-spectrum';\n\nexport * from './from/fromCPS';\nexport * from './util/getStats';\n"],"names":["toString","Object","prototype","isAnyArray","value","call","endsWith","a","d","e","f","length","g","h","i","j","c","b","_ref","module","exports","window","median","input","TypeError","quickSelectMedian","slice","object","xAdd","array1","array2","isConstant","constant","Error","Number","array3","Array","xMultiply","Float64Array","xDivide","_typeof","obj","Symbol","iterator","constructor","sequentialFill","arguments","undefined","options","_options","_options$from","from","_options$to","to","_options$size","size","step","Math","floor","isArray","push","_i","xIsMonotone","array","sum","sumValue","mean","min","_options$fromIndex","fromIndex","_options$toIndex","toIndex","isInteger","minValue","max","maxValue","xSubtract","xyCheck","data","x","y","xyEnsureGrowingX","prevX","Infinity","ansX","ansY","index","xyFilterXPositive","newX","newY","rescale","output","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","name","inspectData","rows","columns","maxI","maxJ","result","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","abs","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","exp","expm1","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","cols","variance","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","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","s","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","console","warn","embed","mat","r","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","standardDeviation","center","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","BaseView","MatrixTransposeView","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","isNaN","ks","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","addStyle","serie","spectrum","color","opacity","lineWidth","match","toUpperCase","replace","style","width","dash","label","id","COLORS","getJSGraph","analyses","colors","opacities","linesWidth","selector","normalization","xAxis","yAxis","series","xLabel","yLabel","xUnits","units","yUnits","analysis","currentData","getNormalizedSpectrum","variables","logScale","axes","unit","unitWrapperBefore","unitWrapperAfter","flipped","display","getNormalizationAnnotations","filter","boundary","exclusions","annotations","exclusion","ignore","map","annotation","position","strokeWidth","fillColor","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","appendDistinctParameter","values","key","includes","appendDistinctValue","AnalysesManager","addAnalysis","getAnalysisIndex","getAnalyses","ids","getSpectra","spectra","getDistinctTitles","title","keys","getDistinctUnits","variable","entries","_a","getDistinctLabels","getDistinctDataTypes","dataType","getDistinctMeta","meta","removeAllAnalyses","removeAnalysis","ldlSymbolic","Ap","Ai","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","D","Pattern","yi","lKi","len","top","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","B","P","ldlPermt","prepare","M","Pinv","Mt","ar","ac","LNZ","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","list","adj","visited","toVisit","eol","ptr","nbhd","u","getClosestNumber","goal","closest","reduce","prev","curr","getCloseIndex","updateSystem","weights","nbPoints","newVector","w","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","airPLS","maxIterations","factorCriterion","controlPoints","baseLineZones","forEach","arr","range","indexFrom","indexTo","baseline","iteration","sumNegDifferences","stopCriterion","cho","Cholesky","difference","calculateError","maxNegativeDiff","diff","corrected","error","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","maybeToPrecision","digits","checkArraySize","BaseRegression","new","target","predict","_predict","train","toLaTeX","score","y2","xSum","ySum","chi2","rmsd","xSquared","ySquared","xY","PolynomialRegression","degree","powers","coefficients","checkArrayLength","regress","precision","_toFormula","isLaTeX","sup","closeSup","times","fn","str","charAt","load","json","pr","F","FT","A","baselineCorrectionRegression","Regression","tolerance","fitting","oldFitting","delta","regression","iterativePolynomialBaseline","baselineCorrection","xCumulative","xFindClosestIndex","sorted","low","high","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","xCheck","xPadding","algorithm","fromEnd","toEnd","toLowerCase","xRolling","fct","padding","subArray","buffer","xRollingAverage","xRollingMedian","minLength","xyMaxYPoint","current","STEPS","xyCumulativeDistributionStatistics","maxY","x0","x100","currentStep","breakPoint","xMode","sumXY","sumY","xMean","rollingAverageBaseline","defaults","actualOptions","assign","xMaxValue","xMinValue","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","subarray","rollingBallBaseline","rollingMedianBaseline","_options$algorithm","_options$sumValue","_options$maxValue","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","_i2","concat","normalize","zones","NEGATIVE_INFINITY","JSON","parse","stringify","zone","currentZone","invert","nextExclusion","zonesWithPoints","numberOfPoints","totalSize","previous","unitsPerPoint","currentTotal","equallySpacedSlot","xLength","halfStep","lastStep","start","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","sumAtMin","sumAtMax","getSlope","y0","y1","equallySpaced","arrayXY","reverse","variant","xResult","yResult","zoneResult","processZone","getZones","currentFrom","filterX","points","currentZoneIndex","defaultOptions","arrayCase","cond","matrixCase","padArray","src","factorial","savitzkyGolay","windowSize","derivative","polynomial","pad","padValue","C","ans","J","inic","Jtranspose","Jinv","det","minMax","arithmeticMean","geometricMean","logMean","lnsum","grandMean","means","samples","truncatedMean","percent","alreadySorted","harmonicMean","contraHarmonicMean","half","theMean","theVariance","standardError","robustMeanAndStdev","stdev","averageDeviations","quartiles","quart","q1","q2","q3","pooledStandardDeviation","pooledVariance","vari","mode","itemCount","itemArray","covariance","mean1","mean2","cov","skewness","s2","s3","dev","kurtosis","s4","entropy","weightedMean","weightedStandardDeviation","weightedVariance","z","inPlace","standardize","standardDev","newSpectrum","filters","processing","keepYUnits","filterOptions","Stat","std","normed","isMonotone","global","factory","this","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","properties","mulSafe","decimals","arg","getFractional","divSafe","den","invDen","val","QtyError","err","create","message","stack","throwIncompatibleUnits","left","right","UNITS","PI","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","kind","unitKeys","substr","getKinds","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","unitSignatureVector","isBase","toBase","SIGN","INTEGER","SIGNED_INTEGER","FRACTION","FLOAT","EXPONENT","SCI_NUMBER","SIGNED_NUMBER","QTY_STRING","QTY_STRING_REGEX","RegExp","POWER_OP","SAFE_POWER","TOP_REGEX","BOTTOM_REGEX","trim","exec","scalarMatch","parseFloat","bottom","nx","UNIT_TEST_REGEX","test","parseUnits","PREFIX_REGEX","UNIT_REGEX","BOUNDARY_REGEX","UNIT_MATCH","UNIT_MATCH_REGEX","parsedUnitsCache","cached","unitMatch","normalizedUnits","globalParse","isQty","Qty","initValue","initUnits","assertValidConstructorArgs","baseScalar","_conversionCache","isDefinitionObject","updateBaseScalar","isTemperature","base","KINDS","knownSignature","isDegrees","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","dst","srcDegK","toDegK","dstUnits","dstScalar","qty","toTemp","toTempK","isCompatible","isInverse","baseUnitCache","toBaseUnits","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","every","_isBase","NestedMap","childMap","defaultFormatter","formatter","_units","numIsUnity","denIsUnity","numUnits","stringifyUnits","denUnits","targetUnitsOrMaxDecimalsOrPrec","maxDecimals","targetUnits","out","outScalar","format","targetQty","stringifiedUnitsCache","stringified","isUnity","simplify","getOutputNames","unitNames","token","tokenNext","unitCounts","acc","unitCounter","unitCount","version","convertUnit","fromUnit","toUnit","testRegExp","ensureRegexp","string","parts","stringToRegexp","flags","getConvertedVariable","newUnits","getXYSpectrum","xVariable","yVariable","labels","split","variableNames","getPossibleVariable","variableName","possible","converted","possibleFiltered","Analysis","substring","spectrumCallback","cache","pushSpectrum","standardizeData","getXY","getSpectrum","getXLabel","getYLabel","analysisOptions","ensureString","blob","ArrayBuffer","isView","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","byteOffset","byteLength","parseString","lowercase","number","GC_MS_FIELDS","complexChromatogram","chromatogram","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentX","firstX","currentY","firstY","endLine","ascii","charCodeAt","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","parseXY","parseXYZ","lines","xFactor","logs","numberOfVariables","parseXYA","removeSymbolRegExp","isXYAdata","convertTo3DZ","minZ","maxZ","ySize","xSize","lastX","lastY","medians","getMedian","minX","maxX","minY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","xN","dx","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","noiseMultiplier","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","gyromagneticRatio","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","symbol","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","pageSymbolIndex","pageSymbol","ratio0","ratio1","ratio","profiling","action","time","Date","now","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","xIndex","yIndex","firstVariable","secondVariable","lowerCaseSymbol","vardim","varname","prepareSpectrum","ntuplesSeparatorRegExp","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","jcamp","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","dataValue","infos","datatable","parentEntry","info","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","flatten","fromJcamp","addJcamp","currentSpectrum","creatorNtuples","owner","origin","varName","varType","varDim","isDependent","minFct","maxFct","header","point","getNumber","rounded","peakTableCreator","xyDataCreator","fromJSON","xydata","fromVariables","forceNtuples","jcampOptions","toJcamps","jcamps","getJcamp","toJcamp","JSGraph","dscParseCPS","text","findIndex","parseMeta","parseData","field","fields","appendVariable","getStats","stats","weightStats","weight","diameter25","x25","diameter50","x50","diameter75","x75","diameterMode","diameterMean","diameterWidth50","numberStats","fromCPS","parsed","Diam","Weight","Height","Time","cheminfo","OriginalJSGraph"],"mappings":"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"}