{"version":3,"file":"xps-analysis.js","sources":["../node_modules/common-spectrum/src/AnalysesManager.js","../node_modules/is-any-array/src/index.js","../node_modules/ml-array-max/node_modules/is-any-array/src/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/node_modules/is-any-array/src/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-median/node_modules/is-any-array/src/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/ml-spectra-processing/src/x/xAdd.js","../node_modules/ml-spectra-processing/src/x/xMultiply.js","../node_modules/ml-spectra-processing/src/x/xDivide.js","../node_modules/ml-spectra-processing/src/x/xIsMonotone.js","../node_modules/d3-array/build/d3-array.js","../node_modules/ml-spectra-processing/src/x/xSubtract.js","../node_modules/ml-array-sum/node_modules/is-any-array/src/index.js","../node_modules/ml-array-sum/lib-es6/index.js","../node_modules/ml-array-normed/lib-es6/index.js","../node_modules/ml-array-rescale/node_modules/is-any-array/src/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-array-sequential-fill/node_modules/is-any-array/src/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/ml-zones/src/normalize.js","../node_modules/ml-zones/src/invert.js","../node_modules/ml-zones/src/zonesWithPoints.js","../node_modules/ml-array-xy-equally-spaced/src/integral.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSmooth.js","../node_modules/ml-array-xy-equally-spaced/src/equallySpacedSlot.js","../node_modules/ml-array-xy-equally-spaced/src/index.js","../node_modules/ml-array-xy-filter-x/src/getZones.js","../node_modules/ml-array-xy-filter-x/src/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/ml-pad-array/src/index.js","../node_modules/ml-savitzky-golay/src/index.js","../node_modules/ml-regression-base/node_modules/is-any-array/src/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/ml-stat/array.js","../node_modules/common-spectrum/src/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/src/util/convertUnit.js","../node_modules/common-spectrum/src/util/getConvertedVariable.js","../node_modules/common-spectrum/src/util/getXYSpectrum.js","../node_modules/common-spectrum/src/Analysis.js","../node_modules/jcampconverter/src/complexChromatogram.js","../node_modules/jcampconverter/src/convertToFloatArray.js","../node_modules/jcampconverter/src/parse/fastParseXYData.js","../node_modules/jcampconverter/src/parse/parsePeakTable.js","../node_modules/jcampconverter/src/parse/parseXYA.js","../node_modules/jcampconverter/src/2d/convertTo3DZ.js","../node_modules/jcampconverter/src/2d/generateContourLines.js","../node_modules/jcampconverter/src/2d/add2D.js","../node_modules/ml-fft/src/fftlib.js","../node_modules/nmr-processing/src/constants/gyromagneticRatio.js","../node_modules/jcampconverter/src/postProcessingNMR.js","../node_modules/jcampconverter/src/profiling.js","../node_modules/jcampconverter/src/simpleChromatogram.js","../node_modules/jcampconverter/src/postProcessing.js","../node_modules/jcampconverter/src/prepareNtuplesDatatable.js","../node_modules/jcampconverter/src/prepareSpectrum.js","../node_modules/jcampconverter/src/convert.js","../node_modules/common-spectrum/src/from/fromJcamp.js","../node_modules/common-spectrum/src/jsgraph/addStyle.js","../node_modules/common-spectrum/src/jsgraph/colors.js","../node_modules/common-spectrum/src/jsgraph/getJSGraph.js","../node_modules/common-spectrum/src/jsgraph/getNormalizationAnnotations.js","../node_modules/convert-to-jcamp/src/creatorNtuples.js","../node_modules/convert-to-jcamp/src/fromJSON.js","../node_modules/convert-to-jcamp/src/fromVariables.js","../node_modules/common-spectrum/src/to/toJcamps.js","../node_modules/common-spectrum/src/to/toJcamp.js","../node_modules/vamas/src/parser/parse.js","../src/from/fromVamas.js","../src/references.js"],"sourcesContent":["export class AnalysesManager {\n  constructor() {\n    this.analyses = [];\n  }\n\n  addAnalysis(analysis) {\n    let index = this.getAnalysisIndex(analysis.id);\n    if (index === undefined) {\n      this.analyses.push(analysis);\n    } else {\n      this.analyses[index] = analysis;\n    }\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\n  removeAllAnalyses() {\n    this.analyses.splice(0);\n  }\n\n  /**\n   * Remove the analysis from the AnalysesManager for the specified id\n   * @param {string} id\n   */\n  removeAnalysis(id) {\n    let index = this.getAnalysisIndex(id);\n    if (index === undefined) return undefined;\n    return this.analyses.splice(index, 1);\n  }\n\n  /**\n   * Returns the index of the analysis in the analyses array\n   * @param {string} id\n   * @returns {number}\n   */\n  getAnalysisIndex(id) {\n    if (!id) return undefined;\n    for (let i = 0; i < this.analyses.length; i++) {\n      let analysis = this.analyses[i];\n      if (analysis.id === id) return i;\n    }\n    return undefined;\n  }\n\n  /**\n   * Checks if the ID of an analysis exists in the AnalysesManager\n   * @param {string} id\n   */\n  includes(id) {\n    return !isNaN(this.getAnalysisIndex(id));\n  }\n}\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the maximum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction max(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var maxValue = input[0];\n\n  for (var i = 1; i < input.length; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport default max;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the minimum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction min(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var minValue = input[0];\n\n  for (var i = 1; i < input.length; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport default min;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import isArray from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\n/**\n * Computes the median of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction median(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport default median;\n","/**\r\n\r\n/**\r\n * This function xAdd the first array by the second array or a constant value to each element of the first array\r\n * @param {Array<Number>} array1 - the array that will be rotated\r\n * @param {Array|Number} array2\r\n * @return {Array}\r\n */\r\nexport function xAdd(array1, array2) {\r\n  let isConstant = false;\r\n  let constant;\r\n  if (Array.isArray(array2)) {\r\n    if (array1.length !== array2.length) {\r\n      throw new Error('sub: size of array1 and array2 must be identical');\r\n    }\r\n  } else {\r\n    isConstant = true;\r\n    constant = Number(array2);\r\n  }\r\n\r\n  let array3 = new Array(array1.length);\r\n  if (isConstant) {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] + constant;\r\n    }\r\n  } else {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] + array2[i];\r\n    }\r\n  }\r\n\r\n  return array3;\r\n}\r\n","/**\r\n\r\n/**\r\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\r\n * @param {Array} array1 - the array that will be rotated\r\n * @param {Array|Number} array2\r\n * @return {Float64Array}\r\n */\r\nexport function xMultiply(array1, array2) {\r\n  let isConstant = false;\r\n  let constant;\r\n  if (Array.isArray(array2)) {\r\n    if (array1.length !== array2.length) {\r\n      throw new Error('sub: size of array1 and array2 must be identical');\r\n    }\r\n  } else {\r\n    isConstant = true;\r\n    constant = Number(array2);\r\n  }\r\n\r\n  let array3 = new Float64Array(array1.length);\r\n  if (isConstant) {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] * constant;\r\n    }\r\n  } else {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] * array2[i];\r\n    }\r\n  }\r\n\r\n  return array3;\r\n}\r\n","/**\r\n\r\n/**\r\n * This function divide the first array by the second array or a constant value to each element of the first array\r\n * @param {Array<Number>} array1 - the array that will be rotated\r\n * @param {Array<Number>|Number} array2\r\n * @return {Array}\r\n */\r\nexport function xDivide(array1, array2) {\r\n  let isConstant = false;\r\n  let constant;\r\n  if (Array.isArray(array2)) {\r\n    if (array1.length !== array2.length) {\r\n      throw new Error('sub: size of array1 and array2 must be identical');\r\n    }\r\n  } else {\r\n    isConstant = true;\r\n    constant = Number(array2);\r\n  }\r\n\r\n  let array3 = new Array(array1.length);\r\n  if (isConstant) {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] / constant;\r\n    }\r\n  } else {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] / array2[i];\r\n    }\r\n  }\r\n\r\n  return array3;\r\n}\r\n","/**\r\n * Returns true if x is monotone\r\n * @param {Array} array\r\n * @return {boolean}\r\n */\r\nexport function xIsMonotone(array) {\r\n  if (array.length < 3) return true;\r\n  if (array[0] < array[1]) {\r\n    for (let i = 0; i < array.length - 1; i++) {\r\n      if (array[i] >= array[i + 1]) return false;\r\n    }\r\n  } else {\r\n    for (let i = 0; i < array.length - 1; i++) {\r\n      if (array[i] <= array[i + 1]) return false;\r\n    }\r\n  }\r\n  return true;\r\n}\r\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","/**\r\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\r\n * @param {Array} array1 - the array that will be rotated\r\n * @param {Array|Number} array2\r\n * @return {Array}\r\n */\r\nexport function xSubtract(array1, array2) {\r\n  let isConstant = false;\r\n  let constant;\r\n  if (Array.isArray(array2)) {\r\n    if (array1.length !== array2.length) {\r\n      throw new Error('sub: size of array1 and array2 must be identical');\r\n    }\r\n  } else {\r\n    isConstant = true;\r\n    constant = Number(array2);\r\n  }\r\n\r\n  let array3 = new Array(array1.length);\r\n  if (isConstant) {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] - constant;\r\n    }\r\n  } else {\r\n    for (let i = 0; i < array1.length; i++) {\r\n      array3[i] = array1[i] - array2[i];\r\n    }\r\n  }\r\n\r\n  return array3;\r\n}\r\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the mean of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction sum(input) {\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += input[i];\n  }\n\n  return sumValue;\n}\n\nexport default sum;\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport sum from 'ml-array-sum';\n\n/**\n * Computes the norm of the given values\n * @param {Array<number>} input\n * @param {object} [options={}]\n * @param {string} [options.algorithm='absolute'] absolute, sum or max\n * @param {number} [options.maxValue=1] new max value for algo max\n * @param {number} [options.sumValue=1] new max value for algo absolute and sum\n * @param {Array} [options.output=[]] specify the output array, can be the input array for in place modification\n * @return {number}\n */\n\nfunction norm(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$algorithm = options.algorithm,\n      algorithm = _options$algorithm === void 0 ? 'absolute' : _options$algorithm,\n      _options$sumValue = options.sumValue,\n      sumValue = _options$sumValue === void 0 ? 1 : _options$sumValue,\n      _options$maxValue = options.maxValue,\n      maxValue = _options$maxValue === void 0 ? 1 : _options$maxValue;\n\n  if (!isArray(input)) {\n    throw new Error('input must be an array');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  if (input.length === 0) {\n    throw new Error('input must not be empty');\n  }\n\n  switch (algorithm.toLowerCase()) {\n    case 'absolute':\n      {\n        var absoluteSumValue = absoluteSum(input) / sumValue;\n        if (absoluteSumValue === 0) return input.slice(0);\n\n        for (var i = 0; i < input.length; i++) {\n          output[i] = input[i] / absoluteSumValue;\n        }\n\n        return output;\n      }\n\n    case 'max':\n      {\n        var currentMaxValue = max(input);\n        if (currentMaxValue === 0) return input.slice(0);\n        var factor = maxValue / currentMaxValue;\n\n        for (var _i = 0; _i < input.length; _i++) {\n          output[_i] = input[_i] * factor;\n        }\n\n        return output;\n      }\n\n    case 'sum':\n      {\n        var sumFactor = sum(input) / sumValue;\n        if (sumFactor === 0) return input.slice(0);\n\n        for (var _i2 = 0; _i2 < input.length; _i2++) {\n          output[_i2] = input[_i2] / sumFactor;\n        }\n\n        return output;\n      }\n\n    default:\n      throw new Error(\"norm: unknown algorithm: \".concat(algorithm));\n  }\n}\n\nfunction absoluteSum(input) {\n  var sumValue = 0;\n\n  for (var i = 0; i < input.length; i++) {\n    sumValue += Math.abs(input[i]);\n  }\n\n  return sumValue;\n}\n\nexport default norm;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import isArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\n/**\n *\n * @param {Array} input\n * @param {object} [options={}]\n * @param {Array} [options.output=[]] specify the output array, can be the input array for in place modification\n */\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport default rescale;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","import isArray from 'is-any-array';\n\nfunction _typeof(obj) {\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' && !isArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size && 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    input.length = 0; // only works with normal array\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport default sequentialFill;\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function normalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let i = 1; i < zones.length; i++) {\n    let zone = zones[i];\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { normalize } from './normalize';\n\n/**\n * Convert an array of exclusions and keep only from / to\n *\n * The method will always check if from if lower than to and will swap if required.\n * @param {Array} [exclusions=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of zones (after inversion)\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of zones (after inversion)\n */\n\nexport function invert(exclusions = [], options = {}) {\n  let {\n    from = Number.NEGATIVE_INFINITY,\n    to = Number.POSITIVE_INFINITY,\n  } = options;\n  if (from > to) [from, to] = [to, from];\n\n  exclusions = normalize(exclusions, { from, to });\n  if (exclusions.length === 0) return [{ from, to }];\n\n  let zones = [];\n  for (let i = 0; i < exclusions.length; i++) {\n    let exclusion = exclusions[i];\n    let nextExclusion = exclusions[i + 1];\n    if (i === 0) {\n      if (exclusion.from > from) {\n        zones.push({ from, to: exclusion.from });\n      }\n    }\n    if (i === exclusions.length - 1) {\n      if (exclusion.to < to) {\n        zones.push({ from: exclusion.to, to });\n      }\n    } else {\n      zones.push({ from: exclusion.to, to: nextExclusion.from });\n    }\n  }\n\n  return zones;\n}\n","import { normalize } from './normalize';\n\n/**\n * Add the number of points per zone to reach a specified total\n * @param {Array} [zones=[]]\n * @param {number} [numberOfPoints] Total number of points to distribute between zones\n * @param {object} [options={}]\n * @param {number} [options.from=Number.NEGATIVE_INFINITY] Specify min value of a zone\n * @param {number} [options.to=Number.POSITIVE_INFINITY] Specify max value of a zone\n */\n\nexport function zonesWithPoints(zones, numberOfPoints, options = {}) {\n  if (zones.length === 0) return zones;\n  zones = normalize(zones, options);\n\n  const totalSize = zones.reduce((previous, current) => {\n    return previous + (current.to - current.from);\n  }, 0);\n\n  let unitsPerPoint = totalSize / numberOfPoints;\n  let currentTotal = 0;\n  for (let i = 0; i < zones.length - 1; i++) {\n    let zone = zones[i];\n    zone.numberOfPoints = Math.min(\n      Math.round((zone.to - zone.from) / unitsPerPoint),\n      numberOfPoints - currentTotal,\n    );\n    currentTotal += zone.numberOfPoints;\n  }\n\n  zones[zones.length - 1].numberOfPoints = numberOfPoints - currentTotal;\n\n  return zones;\n}\n","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param {number} x0\n * @param {number} x1\n * @param {number} slope\n * @param {number} intercept\n * @return {number} integral value.\n */\nexport default function integral(x0, x1, slope, intercept) {\n  return (\n    0.5 * slope * x1 * x1 +\n    intercept * x1 -\n    (0.5 * slope * x0 * x0 + intercept * x0)\n  );\n}\n","import integral from './integral';\n\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n\n  let output = new Array(numberOfPoints);\n\n  let initialOriginalStep = x[1] - x[0];\n  let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n\n  // Init main variables\n  let min = from - halfStep;\n  let max = from + halfStep;\n\n  let previousX = Number.MIN_VALUE;\n  let previousY = 0;\n  let nextX = x[0] - initialOriginalStep;\n  let nextY = 0;\n\n  let currentValue = 0;\n  let slope = 0;\n  let intercept = 0;\n  let sumAtMin = 0;\n  let sumAtMax = 0;\n\n  let i = 0; // index of input\n  let j = 0; // index of output\n\n  function getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n  }\n\n  let add = 0;\n  main: while (true) {\n    if (previousX <= min && min <= nextX) {\n      add = integral(0, min - previousX, slope, previousY);\n      sumAtMin = currentValue + add;\n    }\n\n    while (nextX - max >= 0) {\n      // no overlap with original point, just consume current value\n      add = integral(0, max - previousX, slope, previousY);\n      sumAtMax = currentValue + add;\n\n      output[j++] = (sumAtMax - sumAtMin) / step;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      sumAtMin = sumAtMax;\n    }\n\n    currentValue += integral(previousX, nextX, slope, intercept);\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else if (i === xLength) {\n      nextX += lastOriginalStep;\n      nextY = 0;\n    }\n\n    slope = getSlope(previousX, previousY, nextX, nextY);\n    intercept = -slope * previousX + previousY;\n  }\n\n  return output;\n}\n","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param {Array<number>} x\n * @param {Array<number>} y\n * @param {number} from - Initial point\n * @param {number} to - Final point\n * @param {number} numberOfPoints\n * @return {Array} - Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(x, y, from, to, numberOfPoints) {\n  let xLength = x.length;\n\n  let step = (to - from) / (numberOfPoints - 1);\n  let halfStep = step / 2;\n  let lastStep = x[x.length - 1] - x[x.length - 2];\n\n  let start = from - halfStep;\n  let output = new Array(numberOfPoints);\n\n  // Init main variables\n  let min = start;\n  let max = start + step;\n\n  let previousX = -Number.MAX_VALUE;\n  let previousY = 0;\n  let nextX = x[0];\n  let nextY = y[0];\n  let frontOutsideSpectra = 0;\n  let backOutsideSpectra = true;\n\n  let currentValue = 0;\n\n  // for slot algorithm\n  let currentPoints = 0;\n\n  let i = 1; // index of input\n  let j = 0; // index of output\n\n  main: while (true) {\n    if (previousX >= nextX) throw new Error('x must be an increasing serie');\n    while (previousX - max > 0) {\n      // no overlap with original point, just consume current value\n      if (backOutsideSpectra) {\n        currentPoints++;\n        backOutsideSpectra = false;\n      }\n\n      output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n      j++;\n\n      if (j === numberOfPoints) {\n        break main;\n      }\n\n      min = max;\n      max += step;\n      currentValue = 0;\n      currentPoints = 0;\n    }\n\n    if (previousX > min) {\n      currentValue += previousY;\n      currentPoints++;\n    }\n\n    if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n      currentPoints--;\n    }\n\n    previousX = nextX;\n    previousY = nextY;\n\n    if (i < xLength) {\n      nextX = x[i];\n      nextY = y[i];\n      i++;\n    } else {\n      nextX += lastStep;\n      nextY = 0;\n      frontOutsideSpectra++;\n    }\n  }\n\n  return output;\n}\n","import sequentialFill from 'ml-array-sequential-fill';\nimport { zonesWithPoints, invert } from 'ml-zones';\n\nimport equallySpacedSmooth from './equallySpacedSmooth';\nimport equallySpacedSlot from './equallySpacedSlot';\n\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in the new array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in the new array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param {object} [arrayXY={}] - object containing 2 properties x and y (both an array)\n * @param {object} [options={}]\n * @param {number} [options.from=x[0]]\n * @param {number} [options.to=x[x.length-1]]\n * @param {string} [options.variant='smooth']\n * @param {number} [options.numberOfPoints=100]\n * @param {Array} [options.exclusions=[]] array of from / to that should be skipped for the generation of the points\n * @param {Array} [options.zones=[]] array of from / to that should be kept\n * @return {object<x: Array, y:Array>} new object with x / y array with the equally spaced data.\n */\n\nexport default function equallySpaced(arrayXY = {}, options = {}) {\n  let { x, y } = arrayXY;\n  let xLength = x.length;\n  let reverse = false;\n  if (x.length > 1 && x[0] > x[1]) {\n    x = x.slice().reverse();\n    y = y.slice().reverse();\n    reverse = true;\n  }\n\n  let {\n    from = x[0],\n    to = x[xLength - 1],\n    variant = 'smooth',\n    numberOfPoints = 100,\n    exclusions = [],\n    zones = [],\n  } = options;\n\n  if (xLength !== y.length) {\n    throw new RangeError(\"the x and y vector doesn't have the same size.\");\n  }\n\n  if (typeof from !== 'number' || isNaN(from)) {\n    throw new RangeError(\"'from' option must be a number\");\n  }\n\n  if (typeof to !== 'number' || isNaN(to)) {\n    throw new RangeError(\"'to' option must be a number\");\n  }\n\n  if (typeof numberOfPoints !== 'number' || isNaN(numberOfPoints)) {\n    throw new RangeError(\"'numberOfPoints' option must be a number\");\n  }\n\n  if (numberOfPoints < 2) {\n    throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n  }\n\n  if (zones.length === 0) {\n    zones = invert(exclusions, { from, to });\n  }\n\n  zones = zonesWithPoints(zones, numberOfPoints, { from, to });\n\n  let xResult = [];\n  let yResult = [];\n  for (let zone of zones) {\n    let zoneResult = processZone(\n      x,\n      y,\n      zone.from,\n      zone.to,\n      zone.numberOfPoints,\n      variant,\n      reverse,\n    );\n\n    xResult = xResult.concat(zoneResult.x);\n    yResult = yResult.concat(zoneResult.y);\n  }\n  if (reverse) {\n    if (from < to) {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    } else {\n      return { x: xResult, y: yResult };\n    }\n  } else {\n    if (from < to) {\n      return { x: xResult, y: yResult };\n    } else {\n      return { x: xResult.reverse(), y: yResult.reverse() };\n    }\n  }\n}\n\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n  if (numberOfPoints < 1) {\n    throw new RangeError('the number of points must be at least 1');\n  }\n\n  let output =\n    variant === 'slot'\n      ? equallySpacedSlot(x, y, from, to, numberOfPoints)\n      : equallySpacedSmooth(x, y, from, to, numberOfPoints);\n\n  return {\n    x: sequentialFill({\n      from,\n      to,\n      size: numberOfPoints,\n    }),\n    y: output,\n  };\n}\n","export default function getZones(from, to, exclusions = []) {\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  // in exclusions from and to have to be defined\n  exclusions = exclusions.filter(\n    (exclusion) => exclusion.from !== undefined && exclusion.to !== undefined\n  );\n\n  exclusions = JSON.parse(JSON.stringify(exclusions));\n  // we ensure that from before to\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from > exclusion.to) {\n      [exclusion.to, exclusion.from] = [exclusion.from, exclusion.to];\n    }\n  });\n\n  exclusions.sort((a, b) => a.from - b.from);\n\n  // we will rework the exclusions in order to remove overlap and outside range (from / to)\n  exclusions.forEach((exclusion) => {\n    if (exclusion.from < from) exclusion.from = from;\n    if (exclusion.to > to) exclusion.to = to;\n  });\n  for (let i = 0; i < exclusions.length - 1; i++) {\n    if (exclusions[i].to > exclusions[i + 1].from) {\n      exclusions[i].to = exclusions[i + 1].from;\n    }\n  }\n  exclusions = exclusions.filter((exclusion) => exclusion.from < exclusion.to);\n\n  if (!exclusions || exclusions.length === 0) {\n    return [{ from, to }];\n  }\n\n  let zones = [];\n  let currentFrom = from;\n  for (let exclusion of exclusions) {\n    if (currentFrom < exclusion.from) {\n      zones.push({\n        from: currentFrom,\n        to: exclusion.from\n      });\n    }\n\n    currentFrom = exclusion.to;\n  }\n  if (currentFrom < to) {\n    zones.push({\n      from: currentFrom,\n      to: to\n    });\n  }\n\n  return zones;\n}\n","import getZones from './getZones';\n\n/**\n * Filter an array x/y based on various criteria\n * x points are expected to be sorted\n *\n * @param {object} points\n * @param {object} [options={}]\n * @param {array} [options.from]\n * @param {array} [options.to]\n * @param {array} [options.exclusions=[]]\n * @return {{x: Array<number>, y: Array<number>}}\n */\n\nexport default function filterX(points, options = {}) {\n  const { x, y } = points;\n  const { from = x[0], to = x[x.length - 1], exclusions = [] } = options;\n\n  let zones = getZones(from, to, exclusions);\n\n\n  let currentZoneIndex = 0;\n  let newX = [];\n  let newY = [];\n  let position = 0;\n  while (position < x.length) {\n    if (\n      x[position] <= zones[currentZoneIndex].to &&\n      x[position] >= zones[currentZoneIndex].from\n    ) {\n      newX.push(x[position]);\n      newY.push(y[position]);\n    } else {\n      if (x[position] > zones[currentZoneIndex].to) {\n        currentZoneIndex++;\n        if (!zones[currentZoneIndex]) break;\n      }\n    }\n    position++;\n  }\n\n  return {\n    x: newX,\n    y: newY\n  };\n}\n","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) {\r\n  AbstractMatrix.prototype.add = function add(value) {\r\n    if (typeof value === 'number') return this.addS(value);\r\n    return this.addM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.addS = function addS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) + value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.addM = function addM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.add = function add(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.add(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.sub = function sub(value) {\r\n    if (typeof value === 'number') return this.subS(value);\r\n    return this.subM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.subS = function subS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) - value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.subM = function subM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.sub = function sub(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.sub(value);\r\n  };\r\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\r\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\r\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\r\n  AbstractMatrix.subtract = AbstractMatrix.sub;\r\n\r\n  AbstractMatrix.prototype.mul = function mul(value) {\r\n    if (typeof value === 'number') return this.mulS(value);\r\n    return this.mulM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.mulS = function mulS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) * value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.mul = function mul(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.mul(value);\r\n  };\r\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\r\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\r\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\r\n  AbstractMatrix.multiply = AbstractMatrix.mul;\r\n\r\n  AbstractMatrix.prototype.div = function div(value) {\r\n    if (typeof value === 'number') return this.divS(value);\r\n    return this.divM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.divS = function divS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) / value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.divM = function divM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.div = function div(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.div(value);\r\n  };\r\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\r\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\r\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\r\n  AbstractMatrix.divide = AbstractMatrix.div;\r\n\r\n  AbstractMatrix.prototype.mod = function mod(value) {\r\n    if (typeof value === 'number') return this.modS(value);\r\n    return this.modM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.modS = function modS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) % value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.modM = function modM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.mod = function mod(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.mod(value);\r\n  };\r\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\r\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\r\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\r\n  AbstractMatrix.modulus = AbstractMatrix.mod;\r\n\r\n  AbstractMatrix.prototype.and = function and(value) {\r\n    if (typeof value === 'number') return this.andS(value);\r\n    return this.andM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.andS = function andS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) & value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.andM = function andM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.and = function and(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.and(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.or = function or(value) {\r\n    if (typeof value === 'number') return this.orS(value);\r\n    return this.orM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.orS = function orS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) | value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.orM = function orM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.or = function or(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.or(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.xor = function xor(value) {\r\n    if (typeof value === 'number') return this.xorS(value);\r\n    return this.xorM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.xorS = function xorS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) ^ value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.xor = function xor(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.xor(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\r\n    if (typeof value === 'number') return this.leftShiftS(value);\r\n    return this.leftShiftM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) << value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.leftShift(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\r\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\r\n    return this.signPropagatingRightShiftM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) >> value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.signPropagatingRightShift(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\r\n    if (typeof value === 'number') return this.rightShiftS(value);\r\n    return this.rightShiftM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) >>> value);\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.rightShift(value);\r\n  };\r\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\r\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\r\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\r\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\r\n\r\n  AbstractMatrix.prototype.not = function not() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, ~(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.not = function not(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.not();\r\n  };\r\n\r\n  AbstractMatrix.prototype.abs = function abs() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.abs(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.abs = function abs(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.abs();\r\n  };\r\n\r\n  AbstractMatrix.prototype.acos = function acos() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.acos(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.acos = function acos(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.acos();\r\n  };\r\n\r\n  AbstractMatrix.prototype.acosh = function acosh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.acosh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.acosh = function acosh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.acosh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.asin = function asin() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.asin(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.asin = function asin(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.asin();\r\n  };\r\n\r\n  AbstractMatrix.prototype.asinh = function asinh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.asinh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.asinh = function asinh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.asinh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.atan = function atan() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.atan(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.atan = function atan(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.atan();\r\n  };\r\n\r\n  AbstractMatrix.prototype.atanh = function atanh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.atanh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.atanh = function atanh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.atanh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.cbrt = function cbrt() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.cbrt(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.cbrt = function cbrt(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.cbrt();\r\n  };\r\n\r\n  AbstractMatrix.prototype.ceil = function ceil() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.ceil(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.ceil = function ceil(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.ceil();\r\n  };\r\n\r\n  AbstractMatrix.prototype.clz32 = function clz32() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.clz32(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.clz32 = function clz32(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.clz32();\r\n  };\r\n\r\n  AbstractMatrix.prototype.cos = function cos() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.cos(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.cos = function cos(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.cos();\r\n  };\r\n\r\n  AbstractMatrix.prototype.cosh = function cosh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.cosh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.cosh = function cosh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.cosh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.exp = function exp() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.exp(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.exp = function exp(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.exp();\r\n  };\r\n\r\n  AbstractMatrix.prototype.expm1 = function expm1() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.expm1(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.expm1 = function expm1(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.expm1();\r\n  };\r\n\r\n  AbstractMatrix.prototype.floor = function floor() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.floor(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.floor = function floor(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.floor();\r\n  };\r\n\r\n  AbstractMatrix.prototype.fround = function fround() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.fround(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.fround = function fround(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.fround();\r\n  };\r\n\r\n  AbstractMatrix.prototype.log = function log() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.log(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.log = function log(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.log();\r\n  };\r\n\r\n  AbstractMatrix.prototype.log1p = function log1p() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.log1p(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.log1p = function log1p(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.log1p();\r\n  };\r\n\r\n  AbstractMatrix.prototype.log10 = function log10() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.log10(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.log10 = function log10(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.log10();\r\n  };\r\n\r\n  AbstractMatrix.prototype.log2 = function log2() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.log2(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.log2 = function log2(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.log2();\r\n  };\r\n\r\n  AbstractMatrix.prototype.round = function round() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.round(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.round = function round(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.round();\r\n  };\r\n\r\n  AbstractMatrix.prototype.sign = function sign() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.sign(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.sign = function sign(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.sign();\r\n  };\r\n\r\n  AbstractMatrix.prototype.sin = function sin() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.sin(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.sin = function sin(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.sin();\r\n  };\r\n\r\n  AbstractMatrix.prototype.sinh = function sinh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.sinh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.sinh = function sinh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.sinh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.sqrt = function sqrt() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.sqrt(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.sqrt = function sqrt(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.sqrt();\r\n  };\r\n\r\n  AbstractMatrix.prototype.tan = function tan() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.tan(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.tan = function tan(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.tan();\r\n  };\r\n\r\n  AbstractMatrix.prototype.tanh = function tanh() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.tanh(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.tanh = function tanh(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.tanh();\r\n  };\r\n\r\n  AbstractMatrix.prototype.trunc = function trunc() {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.trunc(this.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.trunc = function trunc(matrix) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.trunc();\r\n  };\r\n\r\n  AbstractMatrix.pow = function pow(matrix, arg0) {\r\n    const newMatrix = new Matrix(matrix);\r\n    return newMatrix.pow(arg0);\r\n  };\r\n\r\n  AbstractMatrix.prototype.pow = function pow(value) {\r\n    if (typeof value === 'number') return this.powS(value);\r\n    return this.powM(value);\r\n  };\r\n\r\n  AbstractMatrix.prototype.powS = function powS(value) {\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.pow(this.get(i, j), value));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n\r\n  AbstractMatrix.prototype.powM = function powM(matrix) {\r\n    matrix = Matrix.checkMatrix(matrix);\r\n    if (this.rows !== matrix.rows ||\r\n      this.columns !== matrix.columns) {\r\n      throw new RangeError('Matrices dimensions must be equal');\r\n    }\r\n    for (let i = 0; i < this.rows; i++) {\r\n      for (let j = 0; j < this.columns; j++) {\r\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\r\n      }\r\n    }\r\n    return this;\r\n  };\r\n}\r\n","/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n} 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  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    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    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    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    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    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    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    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    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    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    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    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    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      rescale(row, { min, max, output: row });\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      rescale(column, {\n        min: min,\n        max: max,\n        output: column,\n      });\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!Array.isArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows > 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns > 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (Array.isArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = arrayData[0].length;\n      if (typeof nColumns !== 'number' || nColumns === 0) {\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    return this;\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    if (this.rows === 1) {\n      throw new RangeError('A matrix cannot have less than one row');\n    }\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, true));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    if (this.columns === 1) {\n      throw new RangeError('A matrix cannot have less than one column');\n    }\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    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","'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';\n\n/**\n * Factorial of a number\n * @ignore\n * @param n\n * @return {number}\n */\nfunction factorial(n) {\n  let r = 1;\n  while (n > 0) r *= n--;\n  return r;\n}\n\nconst defaultOptions = {\n  windowSize: 5,\n  derivative: 1,\n  polynomial: 2,\n  pad: 'none',\n  padValue: 'replicate',\n};\n\n/**\n * Savitzky-Golay filter\n * @param {Array <number>} data\n * @param {number} h\n * @param {Object} options\n * @returns {Array}\n */\nexport default function savitzkyGolay(data, h, options) {\n  options = Object.assign({}, defaultOptions, options);\n  if (\n    options.windowSize % 2 === 0 ||\n    options.windowSize < 5 ||\n    !Number.isInteger(options.windowSize)\n  ) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (options.derivative < 0 || !Number.isInteger(options.derivative)) {\n    throw new RangeError('Derivative should be a positive integer');\n  }\n  if (options.polynomial < 1 || !Number.isInteger(options.polynomial)) {\n    throw new RangeError('Polynomial should be a positive integer');\n  }\n\n  let C, norm;\n  let step = Math.floor(options.windowSize / 2);\n\n  if (options.pad === 'pre') {\n    data = padArray(data, { size: step, value: options.padValue });\n  }\n\n  let ans = new Array(data.length - 2 * step);\n\n  if (\n    options.windowSize === 5 &&\n    options.polynomial === 2 &&\n    (options.derivative === 1 || options.derivative === 2)\n  ) {\n    if (options.derivative === 1) {\n      C = [-2, -1, 0, 1, 2];\n      norm = 10;\n    } else {\n      C = [2, -1, -2, -1, 2];\n      norm = 7;\n    }\n  } else {\n    let J = Matrix.ones(options.windowSize, options.polynomial + 1);\n    let inic = -(options.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) 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(options.derivative);\n    norm = 1 / factorial(options.derivative);\n  }\n  let det = norm * Math.pow(h, options.derivative);\n  for (let k = step; k < data.length - step; k++) {\n    let d = 0;\n    for (let l = 0; l < C.length; l++) d += (C[l] * data[l + k - step]) / det;\n    ans[k - step] = d;\n  }\n\n  if (options.pad === 'post') {\n    ans = padArray(ans, { size: step, value: options.padValue });\n  }\n\n  return ans;\n}\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","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';\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 BaseRegression, {\n  checkArrayLength,\n  maybeToPrecision,\n} from 'ml-regression-base';\nimport { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\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';\n\n/**\n * Iterative regression-based baseline correction\n * @param {Array<number>} x - Independent axis variable\n * @param {Array<number>} y - Dependent axis variable\n * @param {object} [options] - Options object\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regressionOptions] - Options for regressionFunction\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\n */\nexport default function baselineCorrectionRegression(x, y, options = {}) {\n  let {\n    maxIterations = 100,\n    Regression = PolynomialRegression,\n    regressionOptions,\n    tolerance = 0.001,\n  } = options;\n\n  if (!regressionOptions && Regression === PolynomialRegression) {\n    regressionOptions = 3;\n  }\n\n  let baseline = y.slice();\n  let fitting = y.slice();\n  let oldFitting = y;\n  let iteration = 0;\n  let delta;\n  let regression;\n  while (iteration < maxIterations) {\n    // Calculate the fitting result\n    regression = new Regression(x, baseline, regressionOptions);\n\n    delta = 0;\n    for (let i = 0; i < baseline.length; i++) {\n      fitting[i] = regression.predict(x[i]);\n      if (baseline[i] > fitting[i]) {\n        baseline[i] = fitting[i];\n      }\n\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\n    }\n\n    // Stop criterion\n    if (delta < tolerance) {\n      break;\n    } else {\n      oldFitting = fitting.slice();\n      iteration++;\n    }\n  }\n\n  // removes baseline\n  let corrected = new Array(baseline.length);\n  for (let j = 0; j < baseline.length; j++) {\n    corrected[j] = y[j] - baseline[j];\n  }\n\n  return {\n    corrected,\n    delta,\n    iteration,\n    baseline,\n    regression: regression,\n  };\n}\n","'use strict';\n\nfunction compareNumbers(a, b) {\n    return a - b;\n}\n\n/**\n * Computes the sum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.sum = function sum(values) {\n    var sum = 0;\n    for (var i = 0; i < values.length; i++) {\n        sum += values[i];\n    }\n    return sum;\n};\n\n/**\n * Computes the maximum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.max = function max(values) {\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] > max) max = values[i];\n    }\n    return max;\n};\n\n/**\n * Computes the minimum of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.min = function min(values) {\n    var min = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n    }\n    return min;\n};\n\n/**\n * Computes the min and max of the given values\n * @param {Array} values\n * @returns {{min: number, max: number}}\n */\nexports.minMax = function minMax(values) {\n    var min = values[0];\n    var max = values[0];\n    var l = values.length;\n    for (var i = 1; i < l; i++) {\n        if (values[i] < min) min = values[i];\n        if (values[i] > max) max = values[i];\n    }\n    return {\n        min: min,\n        max: max\n    };\n};\n\n/**\n * Computes the arithmetic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.arithmeticMean = function arithmeticMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        sum += values[i];\n    }\n    return sum / l;\n};\n\n/**\n * {@link arithmeticMean}\n */\nexports.mean = exports.arithmeticMean;\n\n/**\n * Computes the geometric mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.geometricMean = function geometricMean(values) {\n    var mul = 1;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        mul *= values[i];\n    }\n    return Math.pow(mul, 1 / l);\n};\n\n/**\n * Computes the mean of the log of the given values\n * If the return value is exponentiated, it gives the same result as the\n * geometric mean.\n * @param {Array} values\n * @returns {number}\n */\nexports.logMean = function logMean(values) {\n    var lnsum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        lnsum += Math.log(values[i]);\n    }\n    return lnsum / l;\n};\n\n/**\n * Computes the weighted grand mean for a list of means and sample sizes\n * @param {Array} means - Mean values for each set of samples\n * @param {Array} samples - Number of original values for each set of samples\n * @returns {number}\n */\nexports.grandMean = function grandMean(means, samples) {\n    var sum = 0;\n    var n = 0;\n    var l = means.length;\n    for (var i = 0; i < l; i++) {\n        sum += samples[i] * means[i];\n        n += samples[i];\n    }\n    return sum / n;\n};\n\n/**\n * Computes the truncated mean of the given values using a given percentage\n * @param {Array} values\n * @param {number} percent - The percentage of values to keep (range: [0,1])\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.truncatedMean = function truncatedMean(values, percent, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var k = Math.floor(l * percent);\n    var sum = 0;\n    for (var i = k; i < (l - k); i++) {\n        sum += values[i];\n    }\n    return sum / (l - 2 * k);\n};\n\n/**\n * Computes the harmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.harmonicMean = function harmonicMean(values) {\n    var sum = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        if (values[i] === 0) {\n            throw new RangeError('value at index ' + i + 'is zero');\n        }\n        sum += 1 / values[i];\n    }\n    return l / sum;\n};\n\n/**\n * Computes the contraharmonic mean of the given values\n * @param {Array} values\n * @returns {number}\n */\nexports.contraHarmonicMean = function contraHarmonicMean(values) {\n    var r1 = 0;\n    var r2 = 0;\n    var l = values.length;\n    for (var i = 0; i < l; i++) {\n        r1 += values[i] * values[i];\n        r2 += values[i];\n    }\n    if (r2 < 0) {\n        throw new RangeError('sum of values is negative');\n    }\n    return r1 / r2;\n};\n\n/**\n * Computes the median of the given values\n * @param {Array} values\n * @param {boolean} [alreadySorted=false]\n * @returns {number}\n */\nexports.median = function median(values, alreadySorted) {\n    if (alreadySorted === undefined) alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n    var l = values.length;\n    var half = Math.floor(l / 2);\n    if (l % 2 === 0) {\n        return (values[half - 1] + values[half]) * 0.5;\n    } else {\n        return values[half];\n    }\n};\n\n/**\n * Computes the variance of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.variance = function variance(values, unbiased) {\n    if (unbiased === undefined) unbiased = true;\n    var theMean = exports.mean(values);\n    var theVariance = 0;\n    var l = values.length;\n\n    for (var i = 0; i < l; i++) {\n        var x = values[i] - theMean;\n        theVariance += x * x;\n    }\n\n    if (unbiased) {\n        return theVariance / (l - 1);\n    } else {\n        return theVariance / l;\n    }\n};\n\n/**\n * Computes the standard deviation of the given values\n * @param {Array} values\n * @param {boolean} [unbiased=true] - if true, divide by (n-1); if false, divide by n.\n * @returns {number}\n */\nexports.standardDeviation = function standardDeviation(values, unbiased) {\n    return Math.sqrt(exports.variance(values, unbiased));\n};\n\nexports.standardError = function standardError(values) {\n    return exports.standardDeviation(values) / Math.sqrt(values.length);\n};\n\n/**\n * IEEE Transactions on biomedical engineering, vol. 52, no. 1, january 2005, p. 76-\n * Calculate the standard deviation via the Median of the absolute deviation\n *  The formula for the standard deviation only holds for Gaussian random variables.\n * @returns {{mean: number, stdev: number}}\n */\nexports.robustMeanAndStdev = function robustMeanAndStdev(y) {\n    var mean = 0, stdev = 0;\n    var length = y.length, i = 0;\n    for (i = 0; i < length; i++) {\n        mean += y[i];\n    }\n    mean /= length;\n    var averageDeviations = new Array(length);\n    for (i = 0; i < length; i++)\n        averageDeviations[i] = Math.abs(y[i] - mean);\n    averageDeviations.sort(compareNumbers);\n    if (length % 2 === 1) {\n        stdev = averageDeviations[(length - 1) / 2] / 0.6745;\n    } else {\n        stdev = 0.5 * (averageDeviations[length / 2] + averageDeviations[length / 2 - 1]) / 0.6745;\n    }\n\n    return {\n        mean: mean,\n        stdev: stdev\n    };\n};\n\nexports.quartiles = function quartiles(values, alreadySorted) {\n    if (typeof (alreadySorted) === 'undefined') alreadySorted = false;\n    if (!alreadySorted) {\n        values = [].concat(values).sort(compareNumbers);\n    }\n\n    var quart = values.length / 4;\n    var q1 = values[Math.ceil(quart) - 1];\n    var q2 = exports.median(values, true);\n    var q3 = values[Math.ceil(quart * 3) - 1];\n\n    return {q1: q1, q2: q2, q3: q3};\n};\n\nexports.pooledStandardDeviation = function pooledStandardDeviation(samples, unbiased) {\n    return Math.sqrt(exports.pooledVariance(samples, unbiased));\n};\n\nexports.pooledVariance = function pooledVariance(samples, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var sum = 0;\n    var length = 0, l = samples.length;\n    for (var i = 0; i < l; i++) {\n        var values = samples[i];\n        var vari = exports.variance(values);\n\n        sum += (values.length - 1) * vari;\n\n        if (unbiased)\n            length += values.length - 1;\n        else\n            length += values.length;\n    }\n    return sum / length;\n};\n\nexports.mode = function mode(values) {\n    var l = values.length,\n        itemCount = new Array(l),\n        i;\n    for (i = 0; i < l; i++) {\n        itemCount[i] = 0;\n    }\n    var itemArray = new Array(l);\n    var count = 0;\n\n    for (i = 0; i < l; i++) {\n        var index = itemArray.indexOf(values[i]);\n        if (index >= 0)\n            itemCount[index]++;\n        else {\n            itemArray[count] = values[i];\n            itemCount[count] = 1;\n            count++;\n        }\n    }\n\n    var maxValue = 0, maxIndex = 0;\n    for (i = 0; i < count; i++) {\n        if (itemCount[i] > maxValue) {\n            maxValue = itemCount[i];\n            maxIndex = i;\n        }\n    }\n\n    return itemArray[maxIndex];\n};\n\nexports.covariance = function covariance(vector1, vector2, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var mean1 = exports.mean(vector1);\n    var mean2 = exports.mean(vector2);\n\n    if (vector1.length !== vector2.length)\n        throw 'Vectors do not have the same dimensions';\n\n    var cov = 0, l = vector1.length;\n    for (var i = 0; i < l; i++) {\n        var x = vector1[i] - mean1;\n        var y = vector2[i] - mean2;\n        cov += x * y;\n    }\n\n    if (unbiased)\n        return cov / (l - 1);\n    else\n        return cov / l;\n};\n\nexports.skewness = function skewness(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n\n    var s2 = 0, s3 = 0, l = values.length;\n    for (var i = 0; i < l; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s3 += dev * dev * dev;\n    }\n    var m2 = s2 / l;\n    var m3 = s3 / l;\n\n    var g = m3 / (Math.pow(m2, 3 / 2.0));\n    if (unbiased) {\n        var a = Math.sqrt(l * (l - 1));\n        var b = l - 2;\n        return (a / b) * g;\n    } else {\n        return g;\n    }\n};\n\nexports.kurtosis = function kurtosis(values, unbiased) {\n    if (typeof (unbiased) === 'undefined') unbiased = true;\n    var theMean = exports.mean(values);\n    var n = values.length, s2 = 0, s4 = 0;\n\n    for (var i = 0; i < n; i++) {\n        var dev = values[i] - theMean;\n        s2 += dev * dev;\n        s4 += dev * dev * dev * dev;\n    }\n    var m2 = s2 / n;\n    var m4 = s4 / n;\n\n    if (unbiased) {\n        var v = s2 / (n - 1);\n        var a = (n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3));\n        var b = s4 / (v * v);\n        var c = ((n - 1) * (n - 1)) / ((n - 2) * (n - 3));\n\n        return a * b - 3 * c;\n    } else {\n        return m4 / (m2 * m2) - 3;\n    }\n};\n\nexports.entropy = function entropy(values, eps) {\n    if (typeof (eps) === 'undefined') eps = 0;\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * Math.log(values[i] + eps);\n    return -sum;\n};\n\nexports.weightedMean = function weightedMean(values, weights) {\n    var sum = 0, l = values.length;\n    for (var i = 0; i < l; i++)\n        sum += values[i] * weights[i];\n    return sum;\n};\n\nexports.weightedStandardDeviation = function weightedStandardDeviation(values, weights) {\n    return Math.sqrt(exports.weightedVariance(values, weights));\n};\n\nexports.weightedVariance = function weightedVariance(values, weights) {\n    var theMean = exports.weightedMean(values, weights);\n    var vari = 0, l = values.length;\n    var a = 0, b = 0;\n\n    for (var i = 0; i < l; i++) {\n        var z = values[i] - theMean;\n        var w = weights[i];\n\n        vari += w * (z * z);\n        b += w;\n        a += w * w;\n    }\n\n    return vari * (b / (b * b - a));\n};\n\nexports.center = function center(values, inPlace) {\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n\n    var result = values;\n    if (!inPlace)\n        result = [].concat(values);\n\n    var theMean = exports.mean(result), l = result.length;\n    for (var i = 0; i < l; i++)\n        result[i] -= theMean;\n};\n\nexports.standardize = function standardize(values, standardDev, inPlace) {\n    if (typeof (standardDev) === 'undefined') standardDev = exports.standardDeviation(values);\n    if (typeof (inPlace) === 'undefined') inPlace = false;\n    var l = values.length;\n    var result = inPlace ? values : new Array(l);\n    for (var i = 0; i < l; i++)\n        result[i] = values[i] / standardDev;\n    return result;\n};\n\nexports.cumulativeSum = function cumulativeSum(array) {\n    var l = array.length;\n    var result = new Array(l);\n    result[0] = array[0];\n    for (var i = 1; i < l; i++)\n        result[i] = result[i - 1] + array[i];\n    return result;\n};\n","import 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 baselineCorrection from 'ml-baseline-correction-regression';\nimport {\n  xDivide,\n  xSubtract,\n  xMultiply,\n  xAdd,\n  xIsMonotone,\n} from 'ml-spectra-processing';\nimport Stat from 'ml-stat/array';\n/**\n *\n * @private\n * @param {object} spectrum\n * @param {object} [options={}]\n * @param {number} [options.from=x.min]\n * @param {number} [options.to=x.max]\n * @param {number} [options.numberOfPoints]\n * @param {String} [options.processing] Allows to calculate derivatives\n * @param {Array} [options.filters=[]] Array of object containing 'name' (centerMean, divideSD, normalize, rescale) and 'options'\n * @param {Array} [options.exclusions=[]]\n * @returns {DataXY}\n */\nexport function getNormalizedSpectrum(spectrum, options = {}) {\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) newSpectrum.title = spectrum.title;\n  if (spectrum.dataType) newSpectrum.dataType = spectrum.dataType;\n  if (spectrum.meta) newSpectrum.meta = spectrum.meta;\n\n  let {\n    from = spectrum.variables.x.min,\n    to = spectrum.variables.x.max,\n    numberOfPoints,\n    filters = [],\n    exclusions = [],\n    processing = '',\n  } = options;\n  let { x, y } = filterX(data, { from, to });\n\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          `1° derivative of ${newSpectrum.variables.y.label.replace(\n            /\\s*\\[.*\\]/,\n            '',\n          )}`;\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          `2° derivative of ${newSpectrum.variables.y.label.replace(\n            /\\s*\\[.*\\]/,\n            '',\n          )}`;\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    default:\n  }\n\n  if (filters.length) {\n    // filters change the y axis, we get rid of the units\n    newSpectrum.variables.y.units = '';\n    newSpectrum.variables.y.label =\n      newSpectrum.variables.y.label &&\n      newSpectrum.variables.y.label.replace(/\\s*\\[.*\\]/, '');\n  }\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 'baselinecorreciton': {\n        let result = baselineCorrection(x, y, filterOptions);\n        y = result.corrected;\n        break;\n      }\n      case '':\n      case undefined:\n        break;\n      default:\n        throw new Error(`Unknown process kind: ${process.kind}`);\n    }\n  }\n\n  if (!numberOfPoints) {\n    data = filterX({ x, y }, { from, to, exclusions });\n  } else {\n    data = equallySpaced({ x, y }, { from, to, numberOfPoints, exclusions });\n  }\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\n  return newSpectrum;\n}\n","/*\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 = 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\",\"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-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\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.5\";\n\n  return Qty;\n\n})));\n","import Qty from 'js-quantities';\n\nexport function convertUnit(array, fromUnit, toUnit) {\n  fromUnit = normalize(fromUnit);\n  toUnit = normalize(toUnit);\n\n  if (fromUnit === toUnit) return array;\n\n  try {\n    const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n    return convert(array);\n  } catch (e) {\n    return undefined;\n  }\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","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\n\nimport { convertUnit } from './convertUnit';\n\nexport function getConvertedVariable(variable, newUnits) {\n  const data =\n    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,\n    min: min(data),\n    max: max(data),\n    isMonotone: xIsMonotone(data),\n  };\n}\n","import { convertUnit } from './convertUnit';\nimport { getConvertedVariable } from './getConvertedVariable';\n\n/**\n * Retrieve a spectrum with only X/Y data based on xUnits / yUnits and convert units\n * if necessary\n * @param {Array} [spectra] Array of spectra\n * @param {object} [selector={}]\n * @param {string} [selector.units] Units separated by vs like for example \"g vs °C\"\n * @param {string} [selector.xUnits]\n * @param {string} [selector.yUnits]\n * @returns {Spectrum}\n */\n\nexport function getXYSpectrum(spectra = [], selector = {}) {\n  if (spectra.length < 1) return;\n  for (let spectrum of spectra) {\n    let { xUnits, yUnits, units } = selector;\n    if (units && !xUnits && !yUnits) [yUnits, xUnits] = units.split(/\\s+vs\\s+/);\n    let x;\n    let y;\n    let variableNames = Object.keys(spectrum.variables);\n    if (!variableNames.length > 1) continue;\n\n    if (xUnits === undefined) {\n      x = spectrum.variables[variableNames[0]];\n    } else {\n      for (let key in spectrum.variables) {\n        let converted = convertUnit(1, spectrum.variables[key].units, xUnits);\n        if (converted) {\n          x = getConvertedVariable(spectrum.variables[key], xUnits);\n          break;\n        }\n      }\n    }\n    if (yUnits === undefined) {\n      y = spectrum.variables[variableNames[1]];\n    } else {\n      for (let key in spectrum.variables) {\n        let converted = convertUnit(1, spectrum.variables[key].units, yUnits);\n        if (converted) {\n          y = getConvertedVariable(spectrum.variables[key], yUnits);\n          break;\n        }\n      }\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}\n","import isAnyArray from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport { xIsMonotone } from 'ml-spectra-processing';\n\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum';\nimport { getXYSpectrum } from './util/getXYSpectrum';\n\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 * @class Analysis\n * @param {object} [options={}]\n * @param {string} [options.id=randomString] unique identifier\n * @param {string} [options.label=options.id] human redeable label\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.spectra = [];\n    this.cache = {};\n  }\n\n  /**\n   * Add a spectrum in the internal spectra variable\n   * @param {object} [variables]\n   * @param {object} [variables.x]\n   * @param {array} [variables.x.data]\n   * @param {array} [variables.x.units='x']\n   * @param {array} [variables.x.label='x']\n   * @param {object} [variables.y]\n   * @param {array} [variables.y.data]\n   * @param {array} [variables.y.units='y']\n   * @param {array} [variables.y.label='y']\n   * @param {object} [options={}]\n   * @param {string} [options.dataType='']\n   * @param {string} [options.title='']\n   *\n   */\n  pushSpectrum(variables, options = {}) {\n    this.spectra.push(standardizeData(variables, options));\n    this.cache = {};\n  }\n\n  /**\n   * Retrieve a Spectrum based on x/y units\n   * @param {object} [selector={}]\n   * @param {string} [selector.units] Units separated by vs like for example \"g vs °C\"\n   * @param {string} [selector.xUnits] if undefined takes the first variable\n   * @param {string} [selector.yUnits] if undefined takes the second variable\n   * @returns {Spectrum}\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  /**\n   * Return the data object for specific x/y units with possibly some\n   * normalization options\n   * @param {object} [options={}]\n   * @param {object} [options.selector]\n   * @param {string} [options.selector.xUnits] // if undefined takes the first variable\n   * @param {string} [options.selector.yUnits] // if undefined takes the second variable\n   * @param {object} [options.normalization]\n   *\n   */\n  getNormalizedSpectrum(options = {}) {\n    const { normalization, selector } = options;\n    const spectrum = this.getXYSpectrum(selector);\n    if (!spectrum) return undefined;\n    return getNormalizedSpectrum(spectrum, normalization);\n  }\n\n  /**\n   * Returns the xLabel\n   * @param {object} [selector]\n   * @param {string} [selector.xUnits] // if undefined takes the first variable\n   * @param {string} [selector.yUnits] // if undefined takes the second variable\n   * @returns {string}\n   */\n  getXLabel(selector) {\n    return this.getXYSpectrum(selector).variables.x.label;\n  }\n\n  /**\n   * Returns the yLabel\n   * @param {object} [selector]\n   * @param {string} [selector.xUnits] // if undefined takes the first variable\n   * @param {string} [selector.yUnits] // if undefined takes the second variable\n   * @returns {string}\n   */\n  getYLabel(selector) {\n    return this.getXYSpectrum(selector).variables.y.label;\n  }\n}\n\n/**\n * Internal function that ensure the order of x / y array\n * @param {DataXY} [variables]\n * @param {object} [options={}]\n * @return {Spectrum}\n */\nfunction standardizeData(variables, options = {}) {\n  let { meta = {}, dataType = '', title = '' } = options;\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\n  let x = xVariable.data;\n  let reverse = x && x.length > 1 && x[0] > x[x.length - 1];\n\n  for (let key in variables) {\n    let variable = variables[key];\n    if (reverse) variable.data = variable.data.reverse();\n    variable.label = variable.label || key;\n    variable.units =\n      variable.units || variable.label.replace(/^.*[([](.*)[)\\]].*$/, '$1');\n    variable.min = min(variable.data);\n    variable.max = max(variable.data);\n    variable.isMonotone = xIsMonotone(variable.data);\n  }\n\n  return {\n    variables,\n    title,\n    dataType,\n    meta,\n  };\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\n\nexport function complexChromatogram(result) {\n  let spectra = result.spectra;\n  let length = spectra.length;\n  let chromatogram = {\n    times: new Array(length),\n    series: {\n      ms: {\n        dimension: 2,\n        data: new Array(length),\n      },\n    },\n  };\n\n  let existingGCMSFields = [];\n  for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n    let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n    if (spectra[0][label]) {\n      existingGCMSFields.push(label);\n      chromatogram.series[label] = {\n        dimension: 1,\n        data: new Array(length),\n      };\n    }\n  }\n\n  for (let i = 0; i < length; i++) {\n    let spectrum = spectra[i];\n    chromatogram.times[i] = spectrum.pageValue;\n    for (let j = 0; j < existingGCMSFields.length; j++) {\n      chromatogram.series[existingGCMSFields[j]].data[i] = parseFloat(\n        spectrum[existingGCMSFields[j]],\n      );\n    }\n    if (spectrum.data) {\n      chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n    }\n  }\n  result.chromatogram = chromatogram;\n}\n\nexport function isMSField(canonicDataLabel) {\n  return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\n\nexport function convertMSFieldToLabel(value) {\n  return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n","export default function convertToFloatArray(stringArray) {\n  let floatArray = [];\n  for (let i = 0; i < stringArray.length; i++) {\n    floatArray.push(parseFloat(stringArray[i]));\n  }\n  return floatArray;\n}\n","export default function fastParseXYData(spectrum, value) {\n  // TODO need to deal with result\n  //  console.log(value);\n  // we check if deltaX is defined otherwise we calculate it\n\n  let yFactor = spectrum.yFactor;\n  let deltaX = spectrum.deltaX;\n\n  spectrum.isXYdata = true;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let currentX = spectrum.firstX;\n  let currentY = spectrum.firstY;\n\n  // we skip the first line\n  //\n  let endLine = false;\n  let ascii;\n  let i = 0;\n  for (; i < value.length; i++) {\n    ascii = value.charCodeAt(i);\n    if (ascii === 13 || ascii === 10) {\n      endLine = true;\n    } else {\n      if (endLine) break;\n    }\n  }\n\n  // we proceed taking the i after the first line\n  let newLine = true;\n  let isDifference = false;\n  let isLastDifference = false;\n  let lastDifference = 0;\n  let isDuplicate = false;\n  let inComment = false;\n  let currentValue = 0; // can be a difference or a duplicate\n  let lastValue = 0; // must be the real last value\n  let isNegative = false;\n  let inValue = false;\n  let skipFirstValue = false;\n  let decimalPosition = 0;\n  for (; i <= value.length; i++) {\n    if (i === value.length) ascii = 13;\n    else ascii = value.charCodeAt(i);\n    if (inComment) {\n      // we should ignore the text if we are after $$\n      if (ascii === 13 || ascii === 10) {\n        newLine = true;\n        inComment = false;\n      }\n    } else {\n      // when is it a new value ?\n      // when it is not a digit, . or comma\n      // it is a number that is either new or we continue\n      if (ascii <= 57 && ascii >= 48) {\n        // a number\n        inValue = true;\n        if (decimalPosition > 0) {\n          currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n        } else {\n          currentValue *= 10;\n          currentValue += ascii - 48;\n        }\n      } else if (ascii === 44 || ascii === 46) {\n        // a \",\" or \".\"\n        inValue = true;\n        decimalPosition++;\n      } else {\n        if (inValue) {\n          // need to process the previous value\n          if (newLine) {\n            newLine = false; // we don't check the X value\n            // console.log(\"NEW LINE\",isDifference, lastDifference);\n            // if new line and lastDifference, the first value is just a check !\n            // that we don't check ...\n            if (isLastDifference) skipFirstValue = true;\n          } else {\n            // need to deal with duplicate and differences\n            if (skipFirstValue) {\n              skipFirstValue = false;\n            } else {\n              if (isDifference) {\n                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                isLastDifference = true;\n                isDifference = false;\n              } else if (!isDuplicate) {\n                lastValue = isNegative ? 0 - currentValue : currentValue;\n              }\n              let duplicate = isDuplicate ? currentValue - 1 : 1;\n              for (let j = 0; j < duplicate; j++) {\n                if (isLastDifference) {\n                  currentY += lastDifference;\n                } else {\n                  currentY = lastValue;\n                }\n                currentData.x.push(currentX);\n                currentData.y.push(currentY * yFactor);\n                currentX += deltaX;\n              }\n            }\n          }\n          isNegative = false;\n          currentValue = 0;\n          decimalPosition = 0;\n          inValue = false;\n          isDuplicate = false;\n        }\n\n        // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n        if (ascii < 74 && ascii > 63) {\n          inValue = true;\n          isLastDifference = false;\n          currentValue = ascii - 64;\n        } else if (ascii > 96 && ascii < 106) {\n          // negative SQZ digits a b c d e f g h i (ascii 97-105)\n          inValue = true;\n          isLastDifference = false;\n          currentValue = ascii - 96;\n          isNegative = true;\n        } else if (ascii === 115) {\n          // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n          inValue = true;\n          isDuplicate = true;\n          currentValue = 9;\n        } else if (ascii > 82 && ascii < 91) {\n          inValue = true;\n          isDuplicate = true;\n          currentValue = ascii - 82;\n        } else if (ascii > 73 && ascii < 83) {\n          // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n          inValue = true;\n          isDifference = true;\n          currentValue = ascii - 73;\n        } else if (ascii > 105 && ascii < 115) {\n          // negative DIF digits j k l m n o p q r (ascii 106-114)\n          inValue = true;\n          isDifference = true;\n          currentValue = ascii - 105;\n          isNegative = true;\n        } else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n          // $ sign, we need to check the next one\n          inValue = true;\n          inComment = true;\n        } else if (ascii === 37) {\n          // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n          inValue = true;\n          isDifference = true;\n          currentValue = 0;\n          isNegative = false;\n        } else if (ascii === 45) {\n          // a \"-\"\n          // check if after there is a number, decimal or comma\n          let ascii2 = value.charCodeAt(i + 1);\n          if (\n            (ascii2 >= 48 && ascii2 <= 57) ||\n            ascii2 === 44 ||\n            ascii2 === 46\n          ) {\n            inValue = true;\n            if (!newLine) isLastDifference = false;\n            isNegative = true;\n          }\n        } else if (ascii === 13 || ascii === 10) {\n          newLine = true;\n          inComment = false;\n        }\n        // and now analyse the details ... space or tabulation\n        // if \"+\" we just don't care\n      }\n    }\n  }\n}\n","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\n\nexport default function parsePeakTable(spectrum, value, result) {\n  spectrum.isPeaktable = true;\n\n  if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n    parseXY(spectrum, value, result);\n  } else {\n    parseXYZ(spectrum, value, result);\n  }\n\n  // we will add the data in the variables\n  if (spectrum.variables) {\n    for (let key in spectrum.variables) {\n      spectrum.variables[key].data = spectrum.data[key];\n    }\n  }\n}\n\nfunction parseXY(spectrum, value, result) {\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let values = lines[i]\n      .trim()\n      .replace(removeCommentRegExp, '')\n      .split(peakTableSplitRegExp);\n    if (values.length % 2 === 0) {\n      for (let j = 0; j < values.length; j = j + 2) {\n        // takes around 40% of the time to add and parse the 2 values nearly exclusively because of parseFloat\n        currentData.x.push(parseFloat(values[j]) * spectrum.xFactor);\n        currentData.y.push(parseFloat(values[j + 1]) * spectrum.yFactor);\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n\nfunction parseXYZ(spectrum, value, result) {\n  let currentData = {};\n  let variables = Object.keys(spectrum.variables);\n  let numberOfVariables = variables.length;\n  variables.forEach((variable) => (currentData[variable] = []));\n  spectrum.data = currentData;\n\n  // counts for around 20% of the time\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    let values = lines[i]\n      .trim()\n      .replace(removeCommentRegExp, '')\n      .split(peakTableSplitRegExp);\n    if (values.length % numberOfVariables === 0) {\n      for (let j = 0; j < values.length; j++) {\n        // todo should try to find a xFactor (y, ...)\n        currentData[variables[j % numberOfVariables]].push(\n          parseFloat(values[j]),\n        );\n      }\n    } else {\n      result.logs.push(`Format error: ${values}`);\n    }\n  }\n}\n","export default function parseXYA(spectrum, value) {\n  let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n\n  spectrum.isXYAdata = true;\n  let values;\n  let currentData = { x: [], y: [] };\n  spectrum.data = currentData;\n\n  let lines = value.split(/,? *,?[;\\r\\n]+ */);\n\n  for (let i = 1; i < lines.length; i++) {\n    values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n    currentData.x.push(parseFloat(values[0]));\n    currentData.y.push(parseFloat(values[1]));\n  }\n}\n","import getMedian from 'ml-array-median';\n\nexport default function convertTo3DZ(spectra) {\n  let minZ = spectra[0].data.y[0];\n  let maxZ = minZ;\n  let ySize = spectra.length;\n  let xSize = spectra[0].data.x.length;\n\n  let z = new Array(ySize);\n  for (let i = 0; i < ySize; i++) {\n    z[i] = spectra[i].data.y;\n    for (let j = 0; j < xSize; j++) {\n      let value = z[i][j];\n      if (value < minZ) minZ = value;\n      if (value > maxZ) maxZ = value;\n    }\n  }\n\n  const firstX = spectra[0].data.x[0];\n  const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n  const firstY = spectra[0].pageValue;\n  const lastY = spectra[ySize - 1].pageValue;\n\n  // Because the min / max value are the only information about the matrix if we invert\n  // min and max we need to invert the array\n  if (firstX > lastX) {\n    for (let spectrum of z) {\n      spectrum.reverse();\n    }\n  }\n  if (firstY > lastY) {\n    z.reverse();\n  }\n\n  return {\n    z: z,\n    minX: Math.min(firstX, lastX),\n    maxX: Math.max(firstX, lastX),\n    minY: Math.min(firstY, lastY),\n    maxY: Math.max(firstY, lastY),\n    minZ: minZ,\n    maxZ: maxZ,\n    noise: getMedian(z[0].map(Math.abs)),\n  };\n}\n","export default function generateContourLines(zData, options) {\n  let noise = zData.noise;\n  let z = zData.z;\n  let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n  let isOver0, isOver1, isOver2, isOver3;\n  let nbSubSpectra = z.length;\n  let nbPovars = z[0].length;\n  let pAx, pAy, pBx, pBy;\n\n  let x0 = zData.minX;\n  let xN = zData.maxX;\n  let dx = (xN - x0) / (nbPovars - 1);\n  let y0 = zData.minY;\n  let yN = zData.maxY;\n  let dy = (yN - y0) / (nbSubSpectra - 1);\n  let minZ = zData.minZ;\n  let maxZ = zData.maxZ;\n\n  // System.out.prvarln('y0 '+y0+' yN '+yN);\n  // -------------------------\n  // Povars attribution\n  //\n  // 0----1\n  // |  / |\n  // | /  |\n  // 2----3\n  //\n  // ---------------------d------\n\n  let iter = options.nbContourLevels * 2;\n  let contourLevels = new Array(iter);\n  let lineZValue;\n  for (let level = 0; level < iter; level++) {\n    // multiply by 2 for positif and negatif\n    let contourLevel = {};\n    contourLevels[level] = contourLevel;\n    let side = level % 2;\n    let factor =\n      (maxZ - options.noiseMultiplier * noise) *\n      Math.exp((level >> 1) - options.nbContourLevels);\n    if (side === 0) {\n      lineZValue = factor + options.noiseMultiplier * noise;\n    } else {\n      lineZValue = 0 - factor - options.noiseMultiplier * noise;\n    }\n    let lines = [];\n    contourLevel.zValue = lineZValue;\n    contourLevel.lines = lines;\n\n    if (lineZValue <= minZ || lineZValue >= maxZ) continue;\n\n    for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n      let subSpectra = z[iSubSpectra];\n      let subSpectraAfter = z[iSubSpectra + 1];\n      for (let povar = 0; povar < nbPovars - 1; povar++) {\n        povarHeight0 = subSpectra[povar];\n        povarHeight1 = subSpectra[povar + 1];\n        povarHeight2 = subSpectraAfter[povar];\n        povarHeight3 = subSpectraAfter[povar + 1];\n\n        isOver0 = povarHeight0 > lineZValue;\n        isOver1 = povarHeight1 > lineZValue;\n        isOver2 = povarHeight2 > lineZValue;\n        isOver3 = povarHeight3 > lineZValue;\n\n        // Example povar0 is over the plane and povar1 and\n        // povar2 are below, we find the varersections and add\n        // the segment\n        if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n          pAx =\n            povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n          pAy = iSubSpectra;\n          pBx = povar;\n          pBy =\n            iSubSpectra +\n            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n          lines.push(pAx * dx + x0);\n          lines.push(pAy * dy + y0);\n          lines.push(pBx * dx + x0);\n          lines.push(pBy * dy + y0);\n        }\n        // remove push does not help !!!!\n        if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n          pAx = povar + 1;\n          pAy =\n            iSubSpectra +\n            1 -\n            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n          pBx =\n            povar +\n            1 -\n            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n          pBy = iSubSpectra + 1;\n          lines.push(pAx * dx + x0);\n          lines.push(pAy * dy + y0);\n          lines.push(pBx * dx + x0);\n          lines.push(pBy * dy + y0);\n        }\n        // test around the diagonal\n        if (isOver1 !== isOver2) {\n          pAx =\n            (povar +\n              1 -\n              (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n              dx +\n            x0;\n          pAy =\n            (iSubSpectra +\n              (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n              dy +\n            y0;\n          if (isOver1 !== isOver0) {\n            pBx =\n              povar +\n              1 -\n              (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n            pBy = iSubSpectra;\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver2 !== isOver0) {\n            pBx = povar;\n            pBy =\n              iSubSpectra +\n              1 -\n              (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver1 !== isOver3) {\n            pBx = povar + 1;\n            pBy =\n              iSubSpectra +\n              (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n          if (isOver2 !== isOver3) {\n            pBx =\n              povar +\n              (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n            pBy = iSubSpectra + 1;\n            lines.push(pAx);\n            lines.push(pAy);\n            lines.push(pBx * dx + x0);\n            lines.push(pBy * dy + y0);\n          }\n        }\n      }\n    }\n  }\n\n  return {\n    minX: zData.minX,\n    maxX: zData.maxX,\n    minY: zData.minY,\n    maxY: zData.maxY,\n    segments: contourLevels,\n  };\n}\n","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\n\nexport default function add2D(result, options) {\n  let zData = convertTo3DZ(result.spectra);\n  if (!options.noContour) {\n    result.contourLines = generateContourLines(zData, options);\n    delete zData.z;\n  }\n  result.minMax = zData;\n}\n","/**\n * Fast Fourier Transform module\n * 1D-FFT/IFFT, 2D-FFT/IFFT (radix-2)\n */\nvar FFT = (function(){\n  var FFT;  \n  \n  if(typeof exports !== 'undefined') {\n    FFT = exports;   // for CommonJS\n  } else {\n    FFT = {};\n  }\n  \n  var version = {\n    release: '0.3.0',\n    date: '2013-03'\n  };\n  FFT.toString = function() {\n    return \"version \" + version.release + \", released \" + version.date;\n  };\n\n  // core operations\n  var _n = 0,          // order\n      _bitrev = null,  // bit reversal table\n      _cstb = null;    // sin/cos table\n\n  var core = {\n    init : function(n) {\n      if(n !== 0 && (n & (n - 1)) === 0) {\n        _n = n;\n        core._initArray();\n        core._makeBitReversalTable();\n        core._makeCosSinTable();\n      } else {\n        throw new Error(\"init: radix-2 required\");\n      }\n    },\n    // 1D-FFT\n    fft1d : function(re, im) {\n      core.fft(re, im, 1);\n    },\n    // 1D-IFFT\n    ifft1d : function(re, im) {\n      var n = 1/_n;\n      core.fft(re, im, -1);\n      for(var i=0; i<_n; i++) {\n        re[i] *= n;\n        im[i] *= n;\n      }\n    },\n     // 1D-IFFT\n    bt1d : function(re, im) {\n      core.fft(re, im, -1);\n    },\n    // 2D-FFT Not very useful if the number of rows have to be equal to cols\n    fft2d : function(re, im) {\n      var tre = [],\n          tim = [],\n          i = 0;\n      // x-axis\n      for(var y=0; y<_n; y++) {\n        i = y*_n;\n        for(var x1=0; x1<_n; x1++) {\n          tre[x1] = re[x1 + i];\n          tim[x1] = im[x1 + i];\n        }\n        core.fft1d(tre, tim);\n        for(var x2=0; x2<_n; x2++) {\n          re[x2 + i] = tre[x2];\n          im[x2 + i] = tim[x2];\n        }\n      }\n      // y-axis\n      for(var x=0; x<_n; x++) {\n        for(var y1=0; y1<_n; y1++) {\n          i = x + y1*_n;\n          tre[y1] = re[i];\n          tim[y1] = im[i];\n        }\n        core.fft1d(tre, tim);\n        for(var y2=0; y2<_n; y2++) {\n          i = x + y2*_n;\n          re[i] = tre[y2];\n          im[i] = tim[y2];\n        }\n      }\n    },\n    // 2D-IFFT\n    ifft2d : function(re, im) {\n      var tre = [],\n          tim = [],\n          i = 0;\n      // x-axis\n      for(var y=0; y<_n; y++) {\n        i = y*_n;\n        for(var x1=0; x1<_n; x1++) {\n          tre[x1] = re[x1 + i];\n          tim[x1] = im[x1 + i];\n        }\n        core.ifft1d(tre, tim);\n        for(var x2=0; x2<_n; x2++) {\n          re[x2 + i] = tre[x2];\n          im[x2 + i] = tim[x2];\n        }\n      }\n      // y-axis\n      for(var x=0; x<_n; x++) {\n        for(var y1=0; y1<_n; y1++) {\n          i = x + y1*_n;\n          tre[y1] = re[i];\n          tim[y1] = im[i];\n        }\n        core.ifft1d(tre, tim);\n        for(var y2=0; y2<_n; y2++) {\n          i = x + y2*_n;\n          re[i] = tre[y2];\n          im[i] = tim[y2];\n        }\n      }\n    },\n    // core operation of FFT\n    fft : function(re, im, inv) {\n      var d, h, ik, m, tmp, wr, wi, xr, xi,\n          n4 = _n >> 2;\n      // bit reversal\n      for(var l=0; l<_n; l++) {\n        m = _bitrev[l];\n        if(l < m) {\n          tmp = re[l];\n          re[l] = re[m];\n          re[m] = tmp;\n          tmp = im[l];\n          im[l] = im[m];\n          im[m] = tmp;\n        }\n      }\n      // butterfly operation\n      for(var k=1; k<_n; k<<=1) {\n        h = 0;\n        d = _n/(k << 1);\n        for(var j=0; j<k; j++) {\n          wr = _cstb[h + n4];\n          wi = inv*_cstb[h];\n          for(var i=j; i<_n; i+=(k<<1)) {\n            ik = i + k;\n            xr = wr*re[ik] + wi*im[ik];\n            xi = wr*im[ik] - wi*re[ik];\n            re[ik] = re[i] - xr;\n            re[i] += xr;\n            im[ik] = im[i] - xi;\n            im[i] += xi;\n          }\n          h += d;\n        }\n      }\n    },\n    // initialize the array (supports TypedArray)\n    _initArray : function() {\n      if(typeof Uint32Array !== 'undefined') {\n        _bitrev = new Uint32Array(_n);\n      } else {\n        _bitrev = [];\n      }\n      if(typeof Float64Array !== 'undefined') {\n        _cstb = new Float64Array(_n*1.25);\n      } else {\n        _cstb = [];\n      }\n    },\n    // zero padding\n    _paddingZero : function() {\n      // TODO\n    },\n    // makes bit reversal table\n    _makeBitReversalTable : function() {\n      var i = 0,\n          j = 0,\n          k = 0;\n      _bitrev[0] = 0;\n      while(++i < _n) {\n        k = _n >> 1;\n        while(k <= j) {\n          j -= k;\n          k >>= 1;\n        }\n        j += k;\n        _bitrev[i] = j;\n      }\n    },\n    // makes trigonometiric function table\n    _makeCosSinTable : function() {\n      var n2 = _n >> 1,\n          n4 = _n >> 2,\n          n8 = _n >> 3,\n          n2p4 = n2 + n4,\n          t = Math.sin(Math.PI/_n),\n          dc = 2*t*t,\n          ds = Math.sqrt(dc*(2 - dc)),\n          c = _cstb[n4] = 1,\n          s = _cstb[0] = 0;\n      t = 2*dc;\n      for(var i=1; i<n8; i++) {\n        c -= dc;\n        dc += t*c;\n        s += ds;\n        ds -= t*s;\n        _cstb[i] = s;\n        _cstb[n4 - i] = c;\n      }\n      if(n8 !== 0) {\n        _cstb[n8] = Math.sqrt(0.5);\n      }\n      for(var j=0; j<n4; j++) {\n        _cstb[n2 - j]  = _cstb[j];\n      }\n      for(var k=0; k<n2p4; k++) {\n        _cstb[k + n2] = -_cstb[k];\n      }\n    }\n  };\n  // aliases (public APIs)\n  var apis = ['init', 'fft1d', 'ifft1d', 'fft2d', 'ifft2d'];\n  for(var i=0; i<apis.length; i++) {\n    FFT[apis[i]] = core[apis[i]];\n  }\n  FFT.bt = core.bt1d;\n  FFT.fft = core.fft1d;\n  FFT.ifft = core.ifft1d;\n  \n  return FFT;\n}).call(this);\n","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\n\n// TODO: can we have a better source and more digits ? @jwist\n\nexport const gyromagneticRatio = {\n  '1H': 267.52218744e6,\n  '2H': 41.065e6,\n  '3H': 285.3508e6,\n  '3He': -203.789e6,\n  '7Li': 103.962e6,\n  '13C': 67.28284e6,\n  '14N': 19.331e6,\n  '15N': -27.116e6,\n  '17O': -36.264e6,\n  '19F': 251.662e6,\n  '23Na': 70.761e6,\n  '27Al': 69.763e6,\n  '29Si': -53.19e6,\n  '31P': 108.291e6,\n  '57Fe': 8.681e6,\n  '63Cu': 71.118e6,\n  '67Zn': 16.767e6,\n  '129Xe': -73.997e6,\n};\n","import { gyromagneticRatio } from 'nmr-processing';\n\nexport default function postProcessingNMR(entriesFlat) {\n  // specific NMR functions\n  let observeFrequency = 0;\n  let shiftOffsetVal = 0;\n\n  for (let entry of entriesFlat) {\n    for (let spectrum of entry.spectra) {\n      if (entry.ntuples && entry.ntuples.symbol) {\n        if (!observeFrequency && spectrum.observeFrequency) {\n          observeFrequency = spectrum.observeFrequency;\n        }\n        if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n          shiftOffsetVal = spectrum.shiftOffsetVal;\n        }\n      } else {\n        observeFrequency = spectrum.observeFrequency;\n        shiftOffsetVal = spectrum.shiftOffsetVal;\n      }\n\n      if (observeFrequency) {\n        if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n          spectrum.xUnits = 'PPM';\n          spectrum.xFactor = spectrum.xFactor / observeFrequency;\n          spectrum.firstX = spectrum.firstX / observeFrequency;\n          spectrum.lastX = spectrum.lastX / observeFrequency;\n          spectrum.deltaX = spectrum.deltaX / observeFrequency;\n          for (let i = 0; i < spectrum.data.x.length; i++) {\n            spectrum.data.x[i] /= observeFrequency;\n          }\n        }\n      }\n      if (shiftOffsetVal) {\n        let shift = spectrum.firstX - shiftOffsetVal;\n        spectrum.firstX = spectrum.firstX - shift;\n        spectrum.lastX = spectrum.lastX - shift;\n        for (let i = 0; i < spectrum.data.x.length; i++) {\n          spectrum.data.x[i] -= shift;\n        }\n      }\n\n      if (\n        observeFrequency &&\n        entry.ntuples &&\n        entry.ntuples.symbol &&\n        entry.ntuples.nucleus\n      ) {\n        let unit = '';\n        let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n        if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n          unit = entry.ntuples.units[pageSymbolIndex];\n        }\n        if (unit !== 'PPM') {\n          if (pageSymbolIndex !== 0) {\n            throw Error('Not sure about this ntuples format');\n          }\n\n          let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n          let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n          if (!ratio0 || !ratio1) {\n            throw Error('Problem with determination of gyromagnetic ratio');\n          }\n          let ratio = (ratio0 / ratio1) * observeFrequency;\n          spectrum.pageValue /= ratio;\n        }\n      }\n    }\n  }\n}\n","export default function profiling(result, action, options) {\n  if (result.profiling) {\n    result.profiling.push({\n      action,\n      time: Date.now() - options.start,\n    });\n  }\n}\n","export default function simpleChromatogram(result) {\n  let data = result.spectra[0].data;\n  result.chromatogram = {\n    times: data.x.slice(),\n    series: {\n      intensity: {\n        dimension: 1,\n        data: data.y.slice(),\n      },\n    },\n  };\n}\n","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\n\nexport default function postProcessing(entriesFlat, result, options) {\n  // converting Hz to ppm\n  postProcessingNMR(entriesFlat);\n\n  for (let entry of entriesFlat) {\n    if (Object.keys(entry.ntuples).length > 0) {\n      let newNtuples = [];\n      let keys = Object.keys(entry.ntuples);\n      for (let i = 0; i < keys.length; i++) {\n        let key = keys[i];\n        let values = entry.ntuples[key];\n        for (let j = 0; j < values.length; j++) {\n          if (!newNtuples[j]) newNtuples[j] = {};\n          newNtuples[j][key] = values[j];\n        }\n      }\n      entry.ntuples = newNtuples;\n    }\n\n    if (entry.twoD && options.wantXY) {\n      add2D(entry, options);\n\n      profiling(result, 'Finished countour plot calculation', options);\n\n      if (!options.keepSpectra) {\n        delete entry.spectra;\n      }\n    }\n\n    // maybe it is a GC (HPLC) / MS. In this case we add a new format\n    if (options.chromatogram) {\n      if (entry.spectra.length > 1) {\n        complexChromatogram(entry);\n      } else {\n        simpleChromatogram(entry);\n      }\n      profiling(result, 'Finished chromatogram calculation', options);\n    }\n  }\n}\n","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n  let xIndex = -1;\n  let yIndex = -1;\n  let firstVariable = '';\n  let secondVariable = '';\n  if (kind.indexOf('++') > 0) {\n    firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n    secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n  } else {\n    kind = kind.replace(/[^a-zA-Z]/g, '');\n    firstVariable = kind.charAt(0);\n    secondVariable = kind.charAt(1);\n    spectrum.variables = {};\n    for (let symbol of kind) {\n      let lowerCaseSymbol = symbol.toLowerCase();\n      let index = currentEntry.ntuples.symbol.indexOf(symbol);\n      if (index === -1) throw Error(`Symbol undefined: ${symbol}`);\n      spectrum.variables[lowerCaseSymbol] = {};\n      for (let key in currentEntry.ntuples) {\n        if (currentEntry.ntuples[key][index]) {\n          spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n            currentEntry.ntuples[key][index];\n        }\n      }\n    }\n  }\n  xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n  yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n\n  if (xIndex === -1) xIndex = 0;\n  if (yIndex === -1) yIndex = 0;\n\n  if (currentEntry.ntuples.first) {\n    if (currentEntry.ntuples.first.length > xIndex) {\n      spectrum.firstX = currentEntry.ntuples.first[xIndex];\n    }\n    if (currentEntry.ntuples.first.length > yIndex) {\n      spectrum.firstY = currentEntry.ntuples.first[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.last) {\n    if (currentEntry.ntuples.last.length > xIndex) {\n      spectrum.lastX = currentEntry.ntuples.last[xIndex];\n    }\n    if (currentEntry.ntuples.last.length > yIndex) {\n      spectrum.lastY = currentEntry.ntuples.last[yIndex];\n    }\n  }\n  if (\n    currentEntry.ntuples.vardim &&\n    currentEntry.ntuples.vardim.length > xIndex\n  ) {\n    spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n  }\n  if (currentEntry.ntuples.factor) {\n    if (currentEntry.ntuples.factor.length > xIndex) {\n      spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n    }\n    if (currentEntry.ntuples.factor.length > yIndex) {\n      spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n    }\n  }\n  if (currentEntry.ntuples.units) {\n    if (currentEntry.ntuples.units.length > xIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[xIndex]\n      ) {\n        spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n      } else {\n        spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n      }\n    }\n    if (currentEntry.ntuples.units.length > yIndex) {\n      if (\n        currentEntry.ntuples.varname &&\n        currentEntry.ntuples.varname[yIndex]\n      ) {\n        spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n      } else {\n        spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n      }\n    }\n  }\n}\n","export default function prepareSpectrum(spectrum) {\n  if (!spectrum.xFactor) spectrum.xFactor = 1;\n  if (!spectrum.yFactor) spectrum.yFactor = 1;\n}\n","import { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparator = /[ \\t]*,[ \\t]*/;\n\nclass Spectrum {}\n\nconst defaultOptions = {\n  keepRecordsRegExp: /^$/,\n  canonicDataLabels: true,\n  canonicMetadataLabels: false,\n  dynamicTyping: true,\n  withoutXY: false,\n  chromatogram: false,\n  keepSpectra: false,\n  noContour: false,\n  nbContourLevels: 7,\n  noiseMultiplier: 5,\n  profiling: false,\n};\n\n/**\n *\n * @param {text} jcamp\n * @param {object} [options]\n * @param {number} [options.keepRecordsRegExp=/^$/] By default we don't keep meta information\n * @param {number} [options.canonicDataLabels=true] Canonize the Labels (uppercase without symbol)\n * @param {number} [options.canonicMetadataLabels=false] Canonize the metadata Labels (uppercase without symbol)\n * @param {number} [options.dynamicTyping=false] Convert numbers to Number\n * @param {number} [options.withoutXY=false] Remove the XY data\n * @param {number} [options.chromatogram=false] Special post-processing for GC / HPLC / MS\n * @param {number} [options.keepSpectra=false] Force to keep the spectra in case of 2D\n * @param {number} [options.noContour=false] Don't calculate countour in case of 2D\n * @param {number} [options.nbContourLevels=7] Number of positive / negative contour levels to calculate\n * @param {number} [options.noiseMultiplier=5] Define for 2D the level as 5 times the median as default\n * @param {number} [options.profiling=false] Add profiling information\n */\n\nexport default function convert(jcamp, options = {}) {\n  options = Object.assign({}, defaultOptions, options);\n  options.wantXY = !options.withoutXY;\n  options.start = Date.now();\n\n  let entriesFlat = [];\n\n  let result = {\n    profiling: options.profiling ? [] : false,\n    logs: [],\n    entries: [],\n  };\n\n  let tmpResult = { children: [] };\n  let currentEntry = tmpResult;\n  let parentsStack = [];\n\n  let spectrum = new Spectrum();\n\n  if (typeof jcamp !== 'string') {\n    throw new TypeError('the JCAMP should be a string');\n  }\n\n  profiling(result, 'Before split to LDRS', options);\n\n  let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n\n  profiling(result, 'Split to LDRS', options);\n\n  if (ldrs[0]) ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n\n  for (let ldr of ldrs) {\n    // This is a new LDR\n    let position = ldr.indexOf('=');\n    let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n    let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n\n    let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n\n    if (canonicDataLabel === 'DATATABLE') {\n      let endLine = dataValue.indexOf('\\n');\n      if (endLine === -1) endLine = dataValue.indexOf('\\r');\n      if (endLine > 0) {\n        // ##DATA TABLE= (X++(I..I)), XYDATA\n        // We need to find the variables\n\n        let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n        prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n\n        spectrum.datatable = infos[0];\n        if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n          canonicDataLabel = 'PEAKTABLE';\n        } else if (\n          infos[1] &&\n          (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)\n        ) {\n          canonicDataLabel = 'XYDATA';\n          spectrum.deltaX =\n            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n        }\n      }\n    }\n\n    if (canonicDataLabel === 'XYDATA') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n        if (dataValue.match(/.*\\+\\+.*/)) {\n          // ex: (X++(Y..Y))\n          if (!spectrum.deltaX) {\n            spectrum.deltaX =\n              (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n          }\n          fastParseXYData(spectrum, dataValue, result);\n        } else {\n          parsePeakTable(spectrum, dataValue, result);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    } else if (canonicDataLabel === 'PEAKTABLE') {\n      if (options.wantXY) {\n        prepareSpectrum(spectrum);\n        parsePeakTable(spectrum, dataValue, result);\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n    if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n      if (options.wantXY) {\n        if (dataValue.match(/.*(XYA).*/)) {\n          // ex: (XYA)\n          parseXYA(spectrum, dataValue);\n        }\n        currentEntry.spectra.push(spectrum);\n        spectrum = new Spectrum();\n      }\n      continue;\n    }\n\n    if (canonicDataLabel === 'TITLE') {\n      let parentEntry = currentEntry;\n      if (!parentEntry.children) {\n        parentEntry.children = [];\n      }\n      currentEntry = {\n        spectra: [],\n        ntuples: {},\n        info: {},\n        meta: {},\n      };\n      parentEntry.children.push(currentEntry);\n      parentsStack.push(parentEntry);\n      entriesFlat.push(currentEntry);\n      currentEntry.title = dataValue;\n    } else if (canonicDataLabel === 'DATATYPE') {\n      currentEntry.dataType = dataValue;\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'NTUPLES') {\n      if (dataValue.toLowerCase().indexOf('nd') > -1) {\n        currentEntry.twoD = true;\n      }\n    } else if (canonicDataLabel === 'DATACLASS') {\n      currentEntry.dataClass = dataValue;\n    } else if (canonicDataLabel === 'XUNITS') {\n      spectrum.xUnits = dataValue;\n    } else if (canonicDataLabel === 'YUNITS') {\n      spectrum.yUnits = dataValue;\n    } else if (canonicDataLabel === 'FIRSTX') {\n      spectrum.firstX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTX') {\n      spectrum.lastX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'FIRSTY') {\n      spectrum.firstY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'LASTY') {\n      spectrum.lastY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'NPOINTS') {\n      spectrum.nbPoints = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'XFACTOR') {\n      spectrum.xFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'YFACTOR') {\n      spectrum.yFactor = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXX') {\n      spectrum.maxX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINX') {\n      spectrum.minX = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MAXY') {\n      spectrum.maxY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'MINY') {\n      spectrum.minY = parseFloat(dataValue);\n    } else if (canonicDataLabel === 'DELTAX') {\n      spectrum.deltaX = parseFloat(dataValue);\n    } else if (\n      canonicDataLabel === '.OBSERVEFREQUENCY' ||\n      canonicDataLabel === '$SFO1'\n    ) {\n      if (!spectrum.observeFrequency) {\n        spectrum.observeFrequency = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n      if (!spectrum.xType) {\n        currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n      }\n    } else if (canonicDataLabel === '$OFFSET') {\n      // OFFSET for Bruker spectra\n      currentEntry.shiftOffsetNum = 0;\n      if (!spectrum.shiftOffsetVal) {\n        spectrum.shiftOffsetVal = parseFloat(dataValue);\n      }\n    } else if (canonicDataLabel === '$REFERENCEPOINT') {\n      // OFFSET for Varian spectra\n      // if we activate this part it does not work for ACD specmanager\n      //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n      //                 var parts = dataValue.split(/ *, */);\n      //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n      //                 spectrum.shiftOffsetVal = parseFloat(parts[3].trim());\n    } else if (canonicDataLabel === 'VARNAME') {\n      currentEntry.ntuples.varname = dataValue.split(ntuplesSeparator);\n    } else if (canonicDataLabel === 'SYMBOL') {\n      currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparator);\n    } else if (canonicDataLabel === 'VARTYPE') {\n      currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparator);\n    } else if (canonicDataLabel === 'VARFORM') {\n      currentEntry.ntuples.varform = dataValue.split(ntuplesSeparator);\n    } else if (canonicDataLabel === 'VARDIM') {\n      currentEntry.ntuples.vardim = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === 'UNITS') {\n      currentEntry.ntuples.units = dataValue.split(ntuplesSeparator);\n    } else if (canonicDataLabel === 'FACTOR') {\n      currentEntry.ntuples.factor = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === 'FIRST') {\n      currentEntry.ntuples.first = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === 'LAST') {\n      currentEntry.ntuples.last = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === 'MIN') {\n      currentEntry.ntuples.min = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === 'MAX') {\n      currentEntry.ntuples.max = convertToFloatArray(\n        dataValue.split(ntuplesSeparator),\n      );\n    } else if (canonicDataLabel === '.NUCLEUS') {\n      if (currentEntry.ntuples) {\n        currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparator);\n      }\n      if (currentEntry.twoD) {\n        currentEntry.yType = dataValue.split(ntuplesSeparator)[0];\n      }\n    } else if (canonicDataLabel === 'PAGE') {\n      spectrum.page = dataValue.trim();\n      spectrum.pageValue = parseFloat(dataValue.replace(/^.*=/, ''));\n      spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n    } else if (canonicDataLabel === 'RETENTIONTIME') {\n      spectrum.pageValue = parseFloat(dataValue);\n    } else if (isMSField(canonicDataLabel)) {\n      spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n    } else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n      spectrum.sampleDescription = dataValue;\n    } else if (canonicDataLabel === 'END') {\n      currentEntry = parentsStack.pop();\n    }\n\n    if (\n      currentEntry &&\n      currentEntry.info &&\n      currentEntry.meta &&\n      canonicDataLabel.match(options.keepRecordsRegExp)\n    ) {\n      let value = dataValue.trim();\n      let target, label;\n      if (dataLabel.startsWith('$')) {\n        label = options.canonicMetadataLabels\n          ? canonicDataLabel.substring(1)\n          : dataLabel.substring(1);\n        target = currentEntry.meta;\n      } else {\n        label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n        target = currentEntry.info;\n      }\n\n      if (options.dynamicTyping) {\n        let parsedValue = Number.parseFloat(value);\n        if (!Number.isNaN(parsedValue)) value = parsedValue;\n      }\n      if (target[label]) {\n        if (!Array.isArray(target[label])) {\n          target[label] = [target[label]];\n        }\n        target[label].push(value);\n      } else {\n        target[label] = value;\n      }\n    }\n  }\n\n  profiling(result, 'Finished parsing', options);\n\n  postProcessing(entriesFlat, result, options);\n\n  profiling(result, 'Total time', options);\n\n  /*\n  if (result.children && result.children.length>0) {\n    result = { ...result, ...result.children[0] };\n  }\n  */\n  result.entries = tmpResult.children;\n  result.flatten = entriesFlat;\n\n  return result;\n}\n","import { convert } from 'jcampconverter';\n\nimport { Analysis } from '../Analysis';\n\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 * @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, options);\n  return analysis;\n}\n\nfunction addJcamp(analysis, jcamp) {\n  let converted = convert(jcamp, {\n    keepRecordsRegExp: /.*/,\n  });\n\n  for (let entry of converted.flatten) {\n    let currentSpectrum = entry.spectra[0];\n\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    } else {\n      for (let key in currentSpectrum.variables) {\n        const variable = currentSpectrum.variables[key];\n        if (variable.label) 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\n    analysis.pushSpectrum(currentSpectrum.variables, {\n      dataType: entry.dataType,\n      title: entry.title,\n      meta: entry.meta,\n    });\n  }\n}\n","export function addStyle(serie, spectrum, options = {}) {\n  let { color = '#A9A9A9', opacity = 1, lineWidth = 1 } = options;\n  if (color.match(/#[0-9A-F]{6}$/i)) {\n    color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\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","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","import { addStyle } from './addStyle';\nimport { COLORS } from './colors';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param {Array<Analysis>} analyses\n * @param {object} [options={}]\n * @param {Array} [options.ids] List of spectra ids, by all\n * @param {Array} [options.colors] List of colors\n * @param {Array} [options.opacities=[1]] List of opacities\n * @param {Array} [options.linesWidth=[1]] List of linesWidth\n * @param {object} [options.selector={}]\n * @param {object} [options.normalization]\n */\nexport function getJSGraph(analyses, options = {}) {\n  const {\n    colors = COLORS,\n    opacities = [1],\n    linesWidth = [1],\n    selector,\n    normalization,\n  } = options;\n  let series = [];\n\n  let xLabel = '';\n  let yLabel = '';\n\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) continue;\n    if (!xLabel) xLabel = currentData.variables.x.label;\n    if (!yLabel) yLabel = currentData.variables.y.label;\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    series.push(serie);\n  }\n  return {\n    axes: {\n      x: {\n        label: xLabel,\n        unit: '',\n        unitWrapperBefore: '',\n        unitWrapperAfter: '',\n        flipped: false,\n        display: true,\n      },\n      y: {\n        label: yLabel,\n        unit: '',\n        unitWrapperBefore: '',\n        unitWrapperAfter: '',\n        flipped: false,\n        display: true,\n      },\n    },\n    series,\n  };\n}\n","export function getNormalizationAnnotations(filter = {}, boundary) {\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","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    varType.push(\n      variable.type\n        ? variable.type.toUpperCase()\n        : i === 0\n        ? 'INDEPENDENT'\n        : 'DEPENDENT',\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 of Object.keys(meta)) {\n    header += `##$${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","/**\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 {object} [options.meta = {}] - comments to add to the file\n\n * @return {string} JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n  const { meta = {}, info = {} } = options;\n\n  const {\n    title = '',\n    owner = '',\n    origin = '',\n    dataType = '',\n    xUnits = '',\n    yUnits = '',\n  } = info;\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  let points = [];\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    points.push(`${x} ${y}`);\n  }\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##FIRSTX=${firstX}\n##LASTX=${lastX}\n##FIRSTY=${firstY}\n##LASTY=${lastY}\\n`;\n\n  for (const key of Object.keys(meta)) {\n    header += `##$${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=${points.length}\n##PEAK TABLE=(XY..XY)\n${points.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';\n\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}\n\nfunction getJcamp(spectrum, options) {\n  const { info = {}, meta = {} } = options;\n\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\n  return fromVariables(spectrum.variables, jcampOptions);\n}\n","import { toJcamps } from './toJcamps';\n\nexport function toJcamp(analysis, options = {}) {\n  return toJcamps(analysis, options).join('\\n');\n}\n","/* eslint-disable no-unused-vars */\nconst experiments = [\n  'MAP',\n  'MAPDP',\n  'MAPSV',\n  'MAPSVDP',\n  'NORM',\n  'SDP',\n  'SDPSV',\n  'SEM',\n  'NOEXP',\n];\n\nconst technics = [\n  'AES diff',\n  'AES dir',\n  'EDX',\n  'ELS',\n  'FABMS',\n  'FABMS energy spec',\n  'ISS',\n  'SIMS',\n  'SIMS energy spec',\n  'SNMS',\n  'SNMS energy spec',\n  'UPS',\n  'XPS',\n  'XRF',\n];\n\nconst scans = ['REGULAR', 'IRREGULAR', 'MAPPING'];\n\nexport function parse(text) {\n  const lines = text.split(/\\r?\\n/);\n  let pointer = 0;\n  let parsed = { header: {}, blocks: [], info: {} };\n  pointer = parseHeader(lines, parsed, pointer);\n  for (let i = 0; i < parsed.info.nbBlocks; i++) {\n    pointer = parseBlock(lines, parsed, pointer);\n  }\n  return parsed;\n}\n\nfunction parseHeader(lines, parsed, pointer) {\n  const { header, info } = parsed;\n  header['format identifier'] = lines[pointer++];\n  header['institution identifier'] = lines[pointer++];\n  header['instrument model identifier'] = lines[pointer++];\n  header['operator identifier'] = lines[pointer++];\n  header['experiment identifier'] = lines[pointer++];\n  info.nbComments = Number(lines[pointer++]);\n  header['number of lines in comment'] = info.nbComments;\n  const comments = [];\n  for (let i = 0; i < info.nbComments; i++) {\n    comments.push(lines[pointer++]);\n  }\n  header['comment line'] = comments.join('\\n');\n  header['experiment mode'] = lines[pointer++];\n  header['scan mode'] = lines[pointer++];\n  if (['MAP', 'MAPD', 'NORM', 'SDP'].includes(header['experiment mode'])) {\n    header['number of spectral regions'] = Number(lines[pointer++]);\n  }\n  if (['MAP', 'MAPD'].includes(header['experiment mode'])) {\n    header['number of analysis positions'] = Number(lines[pointer++]);\n    header['number of discrete x coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n    header['number of discrete y coordinates available in full map'] = Number(\n      lines[pointer++],\n    );\n  }\n  info.nbExperimentVariables = Number(lines[pointer++]);\n  const experimentVariables = [];\n  header['number of experimental variables'] = info.nbExperimentVariables;\n  for (let i = 0; i < info.nbExperimentVariables; i++) {\n    experimentVariables.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.experimentVariables = experimentVariables;\n\n  /*\n    If the values of any of the block parameters are the same in all of the\n    blocks their values may be sent in the first block and then omitted\n    from all subsequent blocks.\n    - n > 0 : the parameters listed are to be included\n    - n < 0 : the parameters listed are to be excluded\n    - n = 0 : all parameters are to be given in all blocks\n    A complete block contains 40 parts.\n    */\n  info.nbEntriesInclusionExclusion = Number(lines[pointer++]);\n  header['number of entries in parameter inclusion or exclusion list'] =\n    info.nbEntriesInclusionExclusion;\n  info.blockParametersincludes = new Array(40).fill(\n    info.nbEntriesInclusionExclusion <= 0,\n  );\n  for (let i = 0; i < Math.abs(info.nbEntriesInclusionExclusion); i++) {\n    info.blockParametersincludes[Number(lines[pointer++]) + 1] =\n      info.nbEntriesInclusionExclusion > 0;\n  }\n\n  header['number of manually entered items in block'] = Number(\n    lines[pointer++],\n  );\n  info.nbFutureUpgradeExperimentEntries = Number(lines[pointer++]);\n  header['number of future upgrade experiment entries'] =\n    info.nbFutureUpgradeExperimentEntries;\n  const futureUpgradeExperimentEntries = [];\n  for (let i = 0; i < info.nbFutureUpgradeExperimentEntries; i++) {\n    futureUpgradeExperimentEntries.push({\n      label: lines[pointer++],\n      unit: lines[pointer++],\n    });\n  }\n  header.futureUpgradeExperimentEntries = futureUpgradeExperimentEntries;\n  if (info.nbFutureUpgradeExperimentEntries !== 0) {\n    throw Error('unsupported future upgrade experiment entries');\n  }\n\n  header['number of future upgrade block entries'] = Number(lines[pointer++]);\n  if (header['number of future upgrade block entries'] !== 0) {\n    throw Error('unsupported future upgrade block entries');\n  }\n\n  info.nbBlocks = Number(lines[pointer++]);\n  header['number of blocks'] = info.nbBlocks;\n  return pointer;\n}\n\nfunction parseBlock(lines, parsed, pointer) {\n  const { blocks, header, info } = parsed;\n\n  const firstBlock = blocks[0];\n  const includes =\n    blocks.length === 0\n      ? new Array(40).fill(true)\n      : info.blockParametersincludes;\n\n  const block = {};\n  block['block identifier'] = lines[pointer++];\n  block['sample identifier'] = lines[pointer++];\n  block['year in full'] = includes[0]\n    ? Number(lines[pointer++])\n    : firstBlock['year in full'];\n  block.month = includes[1] ? Number(lines[pointer++]) : firstBlock.month;\n  block['day of month'] = includes[2]\n    ? Number(lines[pointer++])\n    : firstBlock['day of month'];\n  block.hours = includes[3] ? Number(lines[pointer++]) : firstBlock.hours;\n  block.minutes = includes[4] ? Number(lines[pointer++]) : firstBlock.minutes;\n  block.seconds = includes[5] ? Number(lines[pointer++]) : firstBlock.seconds;\n  block['number of hours in advance of Greenwich Mean Time'] = includes[6]\n    ? Number(lines[pointer++])\n    : firstBlock['number of hours in advance of Greenwich Mean Time'];\n\n  if (includes[7]) {\n    const nbComments = Number(lines[pointer++]);\n    block['number of lines in block comment'] = nbComments;\n    const comments = [];\n    for (let i = 0; i < nbComments; i++) {\n      comments.push(lines[pointer++]);\n    }\n    block.blockComment = comments.join('\\n');\n  } else {\n    block['number of lines in block comment'] =\n      firstBlock['number of lines in block comment'];\n    block.blockComment = firstBlock.blockComment;\n  }\n\n  block.technique = includes[8] ? lines[pointer++] : firstBlock.technique;\n  if (['MAP', 'MAPDP'].includes(header['experiment mode'])) {\n    block['x coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['x coordinate'];\n    block['y coordinate'] = includes[9]\n      ? Number(lines[pointer++])\n      : firstBlock['y coordinate'];\n  }\n\n  if (includes[10]) {\n    let values = [];\n    for (let i = 0; i < header.experimentVariables.length; i++) {\n      values.push(lines[pointer++]);\n    }\n    block['value of experimental variable'] = values;\n  } else {\n    block['value of experimental variable'] =\n      firstBlock['value of experimental variable'];\n  }\n\n  block['analysis source label'] = includes[11]\n    ? lines[pointer++]\n    : firstBlock['analysis source label'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) ||\n    [\n      'SNMS energy spec',\n      'FABMS',\n      'FABMS energy spec',\n      'ISS',\n      'SIMS',\n      'SIMS energy spec',\n      'SNMS',\n    ].includes(block.technique)\n  ) {\n    block['sputtering ion or atom atomic number'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering ion or atom atomic number'];\n    block['number of atoms in sputtering ion or atom particle'] = includes[12]\n      ? Number(lines[pointer++])\n      : firstBlock['number of atoms in sputtering ion or atom particle'];\n    block['sputtering ion or atom charge sign and number'] = includes[12]\n      ? lines[pointer++]\n      : firstBlock['sputtering ion or atom charge sign and number'];\n  }\n\n  block['analysis source characteristic energy'] = includes[13]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source characteristic energy'];\n\n  block['analysis source strength'] = includes[14]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source strength'];\n\n  block['analysis source beam width x'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width x'];\n  block['analysis source beam width y'] = includes[15]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source beam width y'];\n\n  if (\n    ['MAP', 'MAPDP', 'MAPSV', 'MAPSVDP', 'SEM'].includes(\n      header['experiment mode'],\n    )\n  ) {\n    block['field of view x'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view x'];\n    block['field of view y'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['field of view y'];\n  }\n\n  if (['SEM', 'MAPSV', 'MAPSVDP'].includes(header['experiment mode'])) {\n    block['first linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start x coordinate'];\n    block['first linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan start y coordinate'];\n    block['first linescan finish x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish x coordinate'];\n    block['first linescan finish y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan finish y coordinate'];\n    block['last linescan start x coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last x coordinate'];\n    block['last linescan start y coordinate'] = includes[16]\n      ? Number(lines[pointer++])\n      : firstBlock['first linescan last y coordinate'];\n  }\n\n  block['analysis source polar angle of incidence'] = includes[18]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source polar angle of incidence'];\n\n  block['analysis source azimuth'] = includes[19]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis source azimuth'];\n\n  block['analyser mode'] = includes[20]\n    ? lines[pointer++]\n    : firstBlock['analyser mode'];\n\n  block[\n    'analyser pass energy or retard ratio or mass resolution'\n  ] = includes[21]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser pass energy or retard ratio or mass resolution'];\n\n  if (block.technique === 'AES diff') {\n    block['differential width'] = includes[22]\n      ? lines[pointer++]\n      : firstBlock['differential width'];\n  }\n\n  block['magnification of analyser transfer lens'] = includes[23]\n    ? Number(lines[pointer++])\n    : firstBlock['magnification of analyser transfer lens'];\n\n  block[\n    'analyser work function or acceptance energy of atom or ion'\n  ] = includes[24]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser work function or acceptance energy of atom or ion'];\n\n  block['target bias'] = includes[25]\n    ? Number(lines[pointer++])\n    : firstBlock['target bias'];\n\n  block['analysis width x'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width x'];\n  block['analysis width y'] = includes[26]\n    ? Number(lines[pointer++])\n    : firstBlock['analysis width y'];\n\n  block['analyser axis take off polar angle'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off polar angle'];\n  block['analyser axis take off azimuth'] = includes[27]\n    ? Number(lines[pointer++])\n    : firstBlock['analyser axis take off azimuth'];\n\n  block['species label'] = includes[28]\n    ? lines[pointer++]\n    : firstBlock['species label'];\n\n  block['transition or charge state label'] = includes[29]\n    ? lines[pointer++]\n    : firstBlock['transition or charge state label'];\n  block['charge of detected particle'] = includes[29]\n    ? Number(lines[pointer++])\n    : firstBlock['charge of detected particle'];\n\n  if (header['scan mode'] !== 'REGULAR') {\n    throw Error('Only REGULAR scans are supported');\n  }\n\n  block['abscissa label'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa label'];\n  block['abscissa units'] = includes[30]\n    ? lines[pointer++]\n    : firstBlock['abscissa units'];\n\n  block['abscissa start'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa start'];\n  block['abscissa increment'] = includes[30]\n    ? Number(lines[pointer++])\n    : firstBlock['abscissa increment'];\n\n  if (includes[31]) {\n    const nbCorrespondingVariables = Number(lines[pointer++]);\n    block['number of corresponding variables'] = nbCorrespondingVariables;\n    const correspondingVariables = [];\n    for (let i = 0; i < nbCorrespondingVariables; i++) {\n      correspondingVariables.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        array: [],\n      });\n    }\n    block.correspondingVariables = correspondingVariables;\n  } else {\n    block['number of corresponding variables'] =\n      firstBlock['number of corresponding variables'];\n    block.correspondingVariables = JSON.parse(\n      JSON.stringify(firstBlock.correspondingVariables),\n    );\n    block.correspondingVariables.array = [];\n  }\n\n  block['signal mode'] = includes[32]\n    ? lines[pointer++]\n    : firstBlock['signal mode'];\n\n  block['signal collection time'] = includes[33]\n    ? Number(lines[pointer++])\n    : firstBlock['signal collection time'];\n\n  block['number of scans to compile this block'] = includes[34]\n    ? Number(lines[pointer++])\n    : firstBlock['number of scans to compile this block'];\n\n  block['signal time correction'] = includes[35]\n    ? Number(lines[pointer++])\n    : firstBlock['signal time correction'];\n\n  if (\n    ['MAPDP', 'MAPSVDP', 'SDP', 'SDPSV'].includes(header['experiment mode']) &&\n    ['AES diff', 'AES dir', 'EDX', 'ELS', 'UPS', 'XPS', 'XRF'].includes(\n      block.technique,\n    )\n  ) {\n    block['sputtering source energy'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source energy'];\n    block['sputtering source beam current'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source beam current'];\n    block['sputtering source width x'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width x'];\n    block['sputtering source width y'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source width y'];\n    block['sputtering source polar angle of incidence'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source polar angle of incidence'];\n    block['sputtering source azimuth'] = includes[36]\n      ? Number(lines[pointer++])\n      : firstBlock['sputtering source azimuth'];\n    block['sputtering mode'] = includes[36]\n      ? lines[pointer++]\n      : firstBlock['sputtering mode'];\n  }\n\n  block['sample normal polar angle of tilt'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal polar angle of tilt'];\n  block['sample normal tilt azimuth'] = includes[37]\n    ? Number(lines[pointer++])\n    : firstBlock['sample normal tilt azimuth'];\n\n  block['sample rotation angle'] = includes[38]\n    ? Number(lines[pointer++])\n    : firstBlock['sample rotation angle'];\n\n  if (includes[39]) {\n    const nbAdditionalNumericalParameters = Number(lines[pointer++]);\n    block[\n      'number of additional numerical parameters'\n    ] = nbAdditionalNumericalParameters;\n    const additionalNumericalParameters = [];\n    for (let i = 0; i < nbAdditionalNumericalParameters; i++) {\n      additionalNumericalParameters.push({\n        label: lines[pointer++],\n        unit: lines[pointer++],\n        value: lines[pointer++],\n      });\n    }\n    block.additionalNumericalParameters = additionalNumericalParameters;\n  } else {\n    block['number of additional numerical parameters'] =\n      firstBlock['number of additional numerical parameters'];\n    block.additionalNumericalParameters =\n      firstBlock.additionalNumericalParameters;\n  }\n\n  block.nbOrdinateValues = Number(lines[pointer++]);\n  for (let correspondingVariable of block.correspondingVariables) {\n    correspondingVariable.minimumOrdinateValue = Number(lines[pointer++]);\n    correspondingVariable.maximumOrdinateValue = Number(lines[pointer++]);\n  }\n  for (\n    let i = 0;\n    i < block.nbOrdinateValues / block.correspondingVariables.length;\n    i++\n  ) {\n    for (let correspondingVariable of block.correspondingVariables) {\n      correspondingVariable.array.push(Number(lines[pointer++]));\n    }\n  }\n\n  parsed.blocks.push(block);\n  return pointer;\n}\n","import { parse } from 'vamas';\n\nimport { Analysis } from '..';\n\nexport function fromVamas(text) {\n  let parsed = parse(text);\n  let header = parsed.header;\n  let blocks = parsed.blocks;\n  let title = header['experiment identifier'];\n  let analysis = new Analysis();\n  for (let block of blocks) {\n    let sourceEnergy = block['analysis source characteristic energy'];\n\n    let yVariable = block.correspondingVariables[0];\n    let yLabel = yVariable.label;\n    let yValues = yVariable.array;\n\n    let xLabel = block['abscissa label'];\n    let xUnits = block['abscissa units'];\n    let xStart = block['abscissa start'];\n    let xIncrement = block['abscissa increment'];\n\n    let xValues = new Float64Array(yValues.length);\n    for (let i = 0; i < yValues.length; i++) {\n      xValues[i] = xStart + xIncrement * i;\n    }\n    // currently we take the first corresponding variables\n\n    let meta = {};\n    for (let key in block) {\n      if (typeof block[key] === 'string' || typeof block[key] === 'number') {\n        meta[key] = block[key];\n      }\n    }\n\n    for (let key in header) {\n      if (typeof header[key] === 'string' || typeof header[key] === 'number') {\n        meta[key] = header[key];\n      }\n    }\n\n    const variables = {};\n    if (xLabel === 'Kinetic energy' && sourceEnergy) {\n      // we will calculate bonding energy\n      variables.x = {\n        data: xValues.map((value) => sourceEnergy - value).reverse(),\n        label: 'Bonding energy',\n        units: xUnits,\n        type: 'DEPENDENT',\n      };\n      variables.y = {\n        data: yValues.reverse(),\n        label: yLabel,\n        type: 'DEPENDENT',\n      };\n      variables.k = {\n        data: xValues.reverse(),\n        label: xLabel,\n        units: xUnits,\n        type: 'INDEPENDENT',\n      };\n    } else {\n      variables.x = {\n        data: xValues,\n        label: xLabel,\n        units: xUnits,\n        type: 'INDEPENDENT',\n      };\n      variables.y = {\n        data: yValues,\n        label: yLabel,\n        type: 'DEPENDENT',\n      };\n    }\n\n    analysis.pushSpectrum(variables, {\n      dataType: 'XPS',\n      title,\n      meta,\n    });\n  }\n\n  return analysis;\n}\n","export const references = [\n  { element: 'H', orbital: '1s', be: 14 },\n  { element: 'He', orbital: '1s', be: 25 },\n  { element: 'Li', orbital: '1s', be: 55 },\n  { element: 'Be', orbital: '1s', be: 111 },\n  { element: 'B', orbital: '1s', be: 188 },\n  { element: 'C', orbital: '1s', be: 284 },\n  { element: 'N', orbital: '1s', be: 399 },\n  { element: 'O', orbital: '1s', be: 532 },\n  { element: 'F', orbital: '1s', be: 686 },\n  { element: 'Ne', orbital: '1s', be: 867 },\n  { element: 'Na', orbital: '1s', be: 1072 },\n  { element: 'O', orbital: '2s', be: 24 },\n  { element: 'F', orbital: '2s', be: 31 },\n  { element: 'Ne', orbital: '2s', be: 45 },\n  { element: 'Na', orbital: '2s', be: 63 },\n  { element: 'Mg', orbital: '2s', be: 89 },\n  { element: 'Al', orbital: '2s', be: 118 },\n  { element: 'Si', orbital: '2s', be: 149 },\n  { element: 'P', orbital: '2s', be: 189 },\n  { element: 'S', orbital: '2s', be: 229 },\n  { element: 'Cl', orbital: '2s', be: 270 },\n  { element: 'Ar', orbital: '2s', be: 320 },\n  { element: 'K', orbital: '2s', be: 377 },\n  { element: 'Ca', orbital: '2s', be: 438 },\n  { element: 'Sc', orbital: '2s', be: 500 },\n  { element: 'Ti', orbital: '2s', be: 564 },\n  { element: 'V', orbital: '2s', be: 628 },\n  { element: 'Cr', orbital: '2s', be: 695 },\n  { element: 'Mn', orbital: '2s', be: 769 },\n  { element: 'Fe', orbital: '2s', be: 846 },\n  { element: 'Co', orbital: '2s', be: 926 },\n  { element: 'Ni', orbital: '2s', be: 1008 },\n  { element: 'Cu', orbital: '2s', be: 1096 },\n  { element: 'Zn', orbital: '2s', be: 1194 },\n  { element: 'B', orbital: '2p1/2', be: 5 },\n  { element: 'C', orbital: '2p1/2', be: 7 },\n  { element: 'N', orbital: '2p1/2', be: 9 },\n  { element: 'O', orbital: '2p1/2', be: 7 },\n  { element: 'F', orbital: '2p1/2', be: 9 },\n  { element: 'Ne', orbital: '2p1/2', be: 18 },\n  { element: 'Na', orbital: '2p1/2', be: 31 },\n  { element: 'Mg', orbital: '2p1/2', be: 52 },\n  { element: 'Al', orbital: '2p1/2', be: 74 },\n  { element: 'Si', orbital: '2p1/2', be: 100 },\n  { element: 'P', orbital: '2p1/2', be: 136 },\n  { element: 'S', orbital: '2p1/2', be: 165 },\n  { element: 'Cl', orbital: '2p1/2', be: 202 },\n  { element: 'Ar', orbital: '2p1/2', be: 247 },\n  { element: 'K', orbital: '2p1/2', be: 297 },\n  { element: 'Ca', orbital: '2p1/2', be: 350 },\n  { element: 'Sc', orbital: '2p1/2', be: 407 },\n  { element: 'Ti', orbital: '2p1/2', be: 461 },\n  { element: 'V', orbital: '2p1/2', be: 520 },\n  { element: 'Cr', orbital: '2p1/2', be: 584 },\n  { element: 'Mn', orbital: '2p1/2', be: 652 },\n  { element: 'Fe', orbital: '2p1/2', be: 723 },\n  { element: 'Co', orbital: '2p1/2', be: 794 },\n  { element: 'Ni', orbital: '2p1/2', be: 872 },\n  { element: 'Cu', orbital: '2p1/2', be: 951 },\n  { element: 'Zn', orbital: '2p1/2', be: 1044 },\n  { element: 'Ga', orbital: '2p1/2', be: 1143 },\n  { element: 'Ge', orbital: '2p1/2', be: 1249 },\n  { element: 'B', orbital: '2p3/2', be: 5 },\n  { element: 'C', orbital: '2p3/2', be: 7 },\n  { element: 'N', orbital: '2p3/2', be: 9 },\n  { element: 'O', orbital: '2p3/2', be: 7 },\n  { element: 'F', orbital: '2p3/2', be: 9 },\n  { element: 'Ne', orbital: '2p3/2', be: 18 },\n  { element: 'Na', orbital: '2p3/2', be: 31 },\n  { element: 'Mg', orbital: '2p3/2', be: 52 },\n  { element: 'Al', orbital: '2p3/2', be: 73 },\n  { element: 'Si', orbital: '2p3/2', be: 99 },\n  { element: 'P', orbital: '2p3/2', be: 135 },\n  { element: 'S', orbital: '2p3/2', be: 164 },\n  { element: 'Cl', orbital: '2p3/2', be: 200 },\n  { element: 'Ar', orbital: '2p3/2', be: 245 },\n  { element: 'K', orbital: '2p3/2', be: 294 },\n  { element: 'Ca', orbital: '2p3/2', be: 347 },\n  { element: 'Sc', orbital: '2p3/2', be: 402 },\n  { element: 'Ti', orbital: '2p3/2', be: 455 },\n  { element: 'V', orbital: '2p3/2', be: 513 },\n  { element: 'Cr', orbital: '2p3/2', be: 575 },\n  { element: 'Mn', orbital: '2p3/2', be: 641 },\n  { element: 'Fe', orbital: '2p3/2', be: 710 },\n  { element: 'Co', orbital: '2p3/2', be: 779 },\n  { element: 'Ni', orbital: '2p3/2', be: 855 },\n  { element: 'Cu', orbital: '2p3/2', be: 931 },\n  { element: 'Zn', orbital: '2p3/2', be: 1021 },\n  { element: 'Ga', orbital: '2p3/2', be: 1116 },\n  { element: 'Ge', orbital: '2p3/2', be: 1217 },\n  { element: 'B', orbital: '2p', be: 5 },\n  { element: 'C', orbital: '2p', be: 7 },\n  { element: 'N', orbital: '2p', be: 9 },\n  { element: 'O', orbital: '2p', be: 7 },\n  { element: 'F', orbital: '2p', be: 9 },\n  { element: 'Ne', orbital: '2p', be: 18 },\n  { element: 'Na', orbital: '2p', be: 31 },\n  { element: 'Mg', orbital: '2p', be: 52 },\n  { element: 'Al', orbital: '2p', be: 73 },\n  { element: 'Si', orbital: '2p', be: 99 },\n  { element: 'P', orbital: '2p', be: 135 },\n  { element: 'S', orbital: '2p', be: 164 },\n  { element: 'Cl', orbital: '2p', be: 200 },\n  { element: 'Ar', orbital: '2p', be: 245 },\n  { element: 'K', orbital: '2p', be: 294 },\n  { element: 'Ca', orbital: '2p', be: 347 },\n  { element: 'Sc', orbital: '2p', be: 402 },\n  { element: 'Ti', orbital: '2p', be: 455 },\n  { element: 'V', orbital: '2p', be: 513 },\n  { element: 'Cr', orbital: '2p', be: 575 },\n  { element: 'Mn', orbital: '2p', be: 641 },\n  { element: 'Fe', orbital: '2p', be: 710 },\n  { element: 'Co', orbital: '2p', be: 779 },\n  { element: 'Ni', orbital: '2p', be: 855 },\n  { element: 'Cu', orbital: '2p', be: 931 },\n  { element: 'Zn', orbital: '2p', be: 1021 },\n  { element: 'Ga', orbital: '2p', be: 1116 },\n  { element: 'Ge', orbital: '2p', be: 1217 },\n  { element: 'Na', orbital: '3s', be: 1 },\n  { element: 'Mg', orbital: '3s', be: 2 },\n  { element: 'Al', orbital: '3s', be: 1 },\n  { element: 'Si', orbital: '3s', be: 8 },\n  { element: 'P', orbital: '3s', be: 16 },\n  { element: 'S', orbital: '3s', be: 16 },\n  { element: 'Cl', orbital: '3s', be: 18 },\n  { element: 'Ar', orbital: '3s', be: 25 },\n  { element: 'K', orbital: '3s', be: 34 },\n  { element: 'Ca', orbital: '3s', be: 44 },\n  { element: 'Sc', orbital: '3s', be: 54 },\n  { element: 'Ti', orbital: '3s', be: 59 },\n  { element: 'V', orbital: '3s', be: 66 },\n  { element: 'Cr', orbital: '3s', be: 74 },\n  { element: 'Mn', orbital: '3s', be: 84 },\n  { element: 'Fe', orbital: '3s', be: 95 },\n  { element: 'Co', orbital: '3s', be: 101 },\n  { element: 'Ni', orbital: '3s', be: 112 },\n  { element: 'Cu', orbital: '3s', be: 120 },\n  { element: 'Zn', orbital: '3s', be: 137 },\n  { element: 'Ga', orbital: '3s', be: 158 },\n  { element: 'Ge', orbital: '3s', be: 181 },\n  { element: 'As', orbital: '3s', be: 204 },\n  { element: 'Se', orbital: '3s', be: 232 },\n  { element: 'Br', orbital: '3s', be: 257 },\n  { element: 'Kr', orbital: '3s', be: 289 },\n  { element: 'Rb', orbital: '3s', be: 322 },\n  { element: 'Sr', orbital: '3s', be: 358 },\n  { element: 'Y', orbital: '3s', be: 395 },\n  { element: 'Zr', orbital: '3s', be: 431 },\n  { element: 'Nb', orbital: '3s', be: 469 },\n  { element: 'Mo', orbital: '3s', be: 505 },\n  { element: 'Tc', orbital: '3s', be: 544 },\n  { element: 'Ru', orbital: '3s', be: 585 },\n  { element: 'Rh', orbital: '3s', be: 627 },\n  { element: 'Pd', orbital: '3s', be: 670 },\n  { element: 'Ag', orbital: '3s', be: 717 },\n  { element: 'Cd', orbital: '3s', be: 770 },\n  { element: 'In', orbital: '3s', be: 826 },\n  { element: 'Sn', orbital: '3s', be: 884 },\n  { element: 'Sb', orbital: '3s', be: 944 },\n  { element: 'Te', orbital: '3s', be: 1006 },\n  { element: 'I', orbital: '3s', be: 1072 },\n  { element: 'Xe', orbital: '3s', be: 1145 },\n  { element: 'Cs', orbital: '3s', be: 1217 },\n  { element: 'Si', orbital: '3p1/2', be: 3 },\n  { element: 'P', orbital: '3p1/2', be: 10 },\n  { element: 'S', orbital: '3p1/2', be: 8 },\n  { element: 'Cl', orbital: '3p1/2', be: 7 },\n  { element: 'Ar', orbital: '3p1/2', be: 12 },\n  { element: 'K', orbital: '3p1/2', be: 18 },\n  { element: 'Ca', orbital: '3p1/2', be: 26 },\n  { element: 'Sc', orbital: '3p1/2', be: 32 },\n  { element: 'Ti', orbital: '3p1/2', be: 34 },\n  { element: 'V', orbital: '3p1/2', be: 38 },\n  { element: 'Cr', orbital: '3p1/2', be: 43 },\n  { element: 'Mn', orbital: '3p1/2', be: 49 },\n  { element: 'Fe', orbital: '3p1/2', be: 56 },\n  { element: 'Co', orbital: '3p1/2', be: 60 },\n  { element: 'Ni', orbital: '3p1/2', be: 68 },\n  { element: 'Cu', orbital: '3p1/2', be: 74 },\n  { element: 'Zn', orbital: '3p1/2', be: 87 },\n  { element: 'Ga', orbital: '3p1/2', be: 107 },\n  { element: 'Ge', orbital: '3p1/2', be: 129 },\n  { element: 'As', orbital: '3p1/2', be: 147 },\n  { element: 'Se', orbital: '3p1/2', be: 168 },\n  { element: 'Br', orbital: '3p1/2', be: 189 },\n  { element: 'Kr', orbital: '3p1/2', be: 223 },\n  { element: 'Rb', orbital: '3p1/2', be: 248 },\n  { element: 'Sr', orbital: '3p1/2', be: 280 },\n  { element: 'Y', orbital: '3p1/2', be: 313 },\n  { element: 'Zr', orbital: '3p1/2', be: 345 },\n  { element: 'Nb', orbital: '3p1/2', be: 379 },\n  { element: 'Mo', orbital: '3p1/2', be: 410 },\n  { element: 'Tc', orbital: '3p1/2', be: 445 },\n  { element: 'Ru', orbital: '3p1/2', be: 483 },\n  { element: 'Rh', orbital: '3p1/2', be: 521 },\n  { element: 'Pd', orbital: '3p1/2', be: 559 },\n  { element: 'Ag', orbital: '3p1/2', be: 602 },\n  { element: 'Cd', orbital: '3p1/2', be: 651 },\n  { element: 'In', orbital: '3p1/2', be: 702 },\n  { element: 'Sn', orbital: '3p1/2', be: 757 },\n  { element: 'Sb', orbital: '3p1/2', be: 812 },\n  { element: 'Te', orbital: '3p1/2', be: 870 },\n  { element: 'I', orbital: '3p1/2', be: 931 },\n  { element: 'Xe', orbital: '3p1/2', be: 999 },\n  { element: 'Cs', orbital: '3p1/2', be: 1065 },\n  { element: 'Ba', orbital: '3p1/2', be: 1137 },\n  { element: 'La', orbital: '3p1/2', be: 1205 },\n  { element: 'Si', orbital: '3p3/2', be: 3 },\n  { element: 'P', orbital: '3p3/2', be: 10 },\n  { element: 'S', orbital: '3p3/2', be: 8 },\n  { element: 'Cl', orbital: '3p3/2', be: 7 },\n  { element: 'Ar', orbital: '3p3/2', be: 12 },\n  { element: 'K', orbital: '3p3/2', be: 18 },\n  { element: 'Ca', orbital: '3p3/2', be: 26 },\n  { element: 'Sc', orbital: '3p3/2', be: 32 },\n  { element: 'Ti', orbital: '3p3/2', be: 34 },\n  { element: 'V', orbital: '3p3/2', be: 38 },\n  { element: 'Cr', orbital: '3p3/2', be: 43 },\n  { element: 'Mn', orbital: '3p3/2', be: 49 },\n  { element: 'Fe', orbital: '3p3/2', be: 56 },\n  { element: 'Co', orbital: '3p3/2', be: 60 },\n  { element: 'Ni', orbital: '3p3/2', be: 68 },\n  { element: 'Cu', orbital: '3p3/2', be: 74 },\n  { element: 'Zn', orbital: '3p3/2', be: 87 },\n  { element: 'Ga', orbital: '3p3/2', be: 103 },\n  { element: 'Ge', orbital: '3p3/2', be: 122 },\n  { element: 'As', orbital: '3p3/2', be: 141 },\n  { element: 'Se', orbital: '3p3/2', be: 162 },\n  { element: 'Br', orbital: '3p3/2', be: 182 },\n  { element: 'Kr', orbital: '3p3/2', be: 214 },\n  { element: 'Rb', orbital: '3p3/2', be: 239 },\n  { element: 'Sr', orbital: '3p3/2', be: 269 },\n  { element: 'Y', orbital: '3p3/2', be: 301 },\n  { element: 'Zr', orbital: '3p3/2', be: 331 },\n  { element: 'Nb', orbital: '3p3/2', be: 363 },\n  { element: 'Mo', orbital: '3p3/2', be: 393 },\n  { element: 'Tc', orbital: '3p3/2', be: 425 },\n  { element: 'Ru', orbital: '3p3/2', be: 461 },\n  { element: 'Rh', orbital: '3p3/2', be: 496 },\n  { element: 'Pd', orbital: '3p3/2', be: 531 },\n  { element: 'Ag', orbital: '3p3/2', be: 571 },\n  { element: 'Cd', orbital: '3p3/2', be: 617 },\n  { element: 'In', orbital: '3p3/2', be: 664 },\n  { element: 'Sn', orbital: '3p3/2', be: 715 },\n  { element: 'Sb', orbital: '3p3/2', be: 766 },\n  { element: 'Te', orbital: '3p3/2', be: 819 },\n  { element: 'I', orbital: '3p3/2', be: 875 },\n  { element: 'Xe', orbital: '3p3/2', be: 937 },\n  { element: 'Cs', orbital: '3p3/2', be: 998 },\n  { element: 'Ba', orbital: '3p3/2', be: 1063 },\n  { element: 'La', orbital: '3p3/2', be: 1124 },\n  { element: 'Ce', orbital: '3p3/2', be: 1186 },\n  { element: 'Pr', orbital: '3p3/2', be: 1243 },\n  { element: 'Si', orbital: '3p', be: 3 },\n  { element: 'P', orbital: '3p', be: 10 },\n  { element: 'S', orbital: '3p', be: 8 },\n  { element: 'Cl', orbital: '3p', be: 7 },\n  { element: 'Ar', orbital: '3p', be: 12 },\n  { element: 'K', orbital: '3p', be: 18 },\n  { element: 'Ca', orbital: '3p', be: 26 },\n  { element: 'Sc', orbital: '3p', be: 32 },\n  { element: 'Ti', orbital: '3p', be: 34 },\n  { element: 'V', orbital: '3p', be: 38 },\n  { element: 'Cr', orbital: '3p', be: 43 },\n  { element: 'Mn', orbital: '3p', be: 49 },\n  { element: 'Fe', orbital: '3p', be: 56 },\n  { element: 'Co', orbital: '3p', be: 60 },\n  { element: 'Ni', orbital: '3p', be: 68 },\n  { element: 'Cu', orbital: '3p', be: 74 },\n  { element: 'Zn', orbital: '3p', be: 87 },\n  { element: 'Ga', orbital: '3p', be: 103 },\n  { element: 'Ge', orbital: '3p', be: 122 },\n  { element: 'As', orbital: '3p', be: 141 },\n  { element: 'Se', orbital: '3p', be: 162 },\n  { element: 'Br', orbital: '3p', be: 182 },\n  { element: 'Kr', orbital: '3p', be: 214 },\n  { element: 'Rb', orbital: '3p', be: 239 },\n  { element: 'Sr', orbital: '3p', be: 269 },\n  { element: 'Y', orbital: '3p', be: 301 },\n  { element: 'Zr', orbital: '3p', be: 331 },\n  { element: 'Nb', orbital: '3p', be: 363 },\n  { element: 'Mo', orbital: '3p', be: 393 },\n  { element: 'Tc', orbital: '3p', be: 425 },\n  { element: 'Ru', orbital: '3p', be: 461 },\n  { element: 'Rh', orbital: '3p', be: 496 },\n  { element: 'Pd', orbital: '3p', be: 531 },\n  { element: 'Ag', orbital: '3p', be: 571 },\n  { element: 'Cd', orbital: '3p', be: 617 },\n  { element: 'In', orbital: '3p', be: 664 },\n  { element: 'Sn', orbital: '3p', be: 715 },\n  { element: 'Sb', orbital: '3p', be: 766 },\n  { element: 'Te', orbital: '3p', be: 819 },\n  { element: 'I', orbital: '3p', be: 875 },\n  { element: 'Xe', orbital: '3p', be: 937 },\n  { element: 'Cs', orbital: '3p', be: 998 },\n  { element: 'Ba', orbital: '3p', be: 1063 },\n  { element: 'La', orbital: '3p', be: 1124 },\n  { element: 'Ce', orbital: '3p', be: 1186 },\n  { element: 'Pr', orbital: '3p', be: 1243 },\n  { element: 'Sc', orbital: '3d3/2', be: 7 },\n  { element: 'Ti', orbital: '3d3/2', be: 3 },\n  { element: 'V', orbital: '3d3/2', be: 2 },\n  { element: 'Cr', orbital: '3d3/2', be: 2 },\n  { element: 'Mn', orbital: '3d3/2', be: 4 },\n  { element: 'Fe', orbital: '3d3/2', be: 6 },\n  { element: 'Co', orbital: '3d3/2', be: 3 },\n  { element: 'Ni', orbital: '3d3/2', be: 4 },\n  { element: 'Cu', orbital: '3d3/2', be: 2 },\n  { element: 'Zn', orbital: '3d3/2', be: 9 },\n  { element: 'Ga', orbital: '3d3/2', be: 18 },\n  { element: 'Ge', orbital: '3d3/2', be: 29 },\n  { element: 'As', orbital: '3d3/2', be: 41 },\n  { element: 'Se', orbital: '3d3/2', be: 57 },\n  { element: 'Br', orbital: '3d3/2', be: 70 },\n  { element: 'Kr', orbital: '3d3/2', be: 89 },\n  { element: 'Rb', orbital: '3d3/2', be: 112 },\n  { element: 'Sr', orbital: '3d3/2', be: 135 },\n  { element: 'Y', orbital: '3d3/2', be: 160 },\n  { element: 'Zr', orbital: '3d3/2', be: 183 },\n  { element: 'Nb', orbital: '3d3/2', be: 208 },\n  { element: 'Mo', orbital: '3d3/2', be: 230 },\n  { element: 'Tc', orbital: '3d3/2', be: 257 },\n  { element: 'Ru', orbital: '3d3/2', be: 284 },\n  { element: 'Rh', orbital: '3d3/2', be: 312 },\n  { element: 'Pd', orbital: '3d3/2', be: 340 },\n  { element: 'Ag', orbital: '3d3/2', be: 373 },\n  { element: 'Cd', orbital: '3d3/2', be: 411 },\n  { element: 'In', orbital: '3d3/2', be: 451 },\n  { element: 'Sn', orbital: '3d3/2', be: 494 },\n  { element: 'Sb', orbital: '3d3/2', be: 537 },\n  { element: 'Te', orbital: '3d3/2', be: 582 },\n  { element: 'I', orbital: '3d3/2', be: 631 },\n  { element: 'Xe', orbital: '3d3/2', be: 685 },\n  { element: 'Cs', orbital: '3d3/2', be: 740 },\n  { element: 'Ba', orbital: '3d3/2', be: 796 },\n  { element: 'La', orbital: '3d3/2', be: 849 },\n  { element: 'Ce', orbital: '3d3/2', be: 902 },\n  { element: 'Pr', orbital: '3d3/2', be: 951 },\n  { element: 'Nd', orbital: '3d3/2', be: 1000 },\n  { element: 'Pm', orbital: '3d3/2', be: 1052 },\n  { element: 'Sm', orbital: '3d3/2', be: 1107 },\n  { element: 'Eu', orbital: '3d3/2', be: 1161 },\n  { element: 'Gd', orbital: '3d3/2', be: 1218 },\n  { element: 'Sc', orbital: '3d5/2', be: 7 },\n  { element: 'Ti', orbital: '3d5/2', be: 3 },\n  { element: 'V', orbital: '3d5/2', be: 2 },\n  { element: 'Cr', orbital: '3d5/2', be: 2 },\n  { element: 'Mn', orbital: '3d5/2', be: 4 },\n  { element: 'Fe', orbital: '3d5/2', be: 6 },\n  { element: 'Co', orbital: '3d5/2', be: 3 },\n  { element: 'Ni', orbital: '3d5/2', be: 4 },\n  { element: 'Cu', orbital: '3d5/2', be: 2 },\n  { element: 'Zn', orbital: '3d5/2', be: 9 },\n  { element: 'Ga', orbital: '3d5/2', be: 18 },\n  { element: 'Ge', orbital: '3d5/2', be: 29 },\n  { element: 'As', orbital: '3d5/2', be: 41 },\n  { element: 'Se', orbital: '3d5/2', be: 57 },\n  { element: 'Br', orbital: '3d5/2', be: 69 },\n  { element: 'Kr', orbital: '3d5/2', be: 89 },\n  { element: 'Rb', orbital: '3d5/2', be: 111 },\n  { element: 'Sr', orbital: '3d5/2', be: 133 },\n  { element: 'Y', orbital: '3d5/2', be: 158 },\n  { element: 'Zr', orbital: '3d5/2', be: 180 },\n  { element: 'Nb', orbital: '3d5/2', be: 205 },\n  { element: 'Mo', orbital: '3d5/2', be: 227 },\n  { element: 'Tc', orbital: '3d5/2', be: 253 },\n  { element: 'Ru', orbital: '3d5/2', be: 279 },\n  { element: 'Rh', orbital: '3d5/2', be: 307 },\n  { element: 'Pd', orbital: '3d5/2', be: 335 },\n  { element: 'Ag', orbital: '3d5/2', be: 367 },\n  { element: 'Cd', orbital: '3d5/2', be: 404 },\n  { element: 'In', orbital: '3d5/2', be: 443 },\n  { element: 'Sn', orbital: '3d5/2', be: 485 },\n  { element: 'Sb', orbital: '3d5/2', be: 528 },\n  { element: 'Te', orbital: '3d5/2', be: 572 },\n  { element: 'I', orbital: '3d5/2', be: 620 },\n  { element: 'Xe', orbital: '3d5/2', be: 672 },\n  { element: 'Cs', orbital: '3d5/2', be: 726 },\n  { element: 'Ba', orbital: '3d5/2', be: 781 },\n  { element: 'La', orbital: '3d5/2', be: 832 },\n  { element: 'Ce', orbital: '3d5/2', be: 884 },\n  { element: 'Pr', orbital: '3d5/2', be: 931 },\n  { element: 'Nd', orbital: '3d5/2', be: 978 },\n  { element: 'Pm', orbital: '3d5/2', be: 1027 },\n  { element: 'Sm', orbital: '3d5/2', be: 1081 },\n  { element: 'Eu', orbital: '3d5/2', be: 1131 },\n  { element: 'Gd', orbital: '3d5/2', be: 1186 },\n  { element: 'Tb', orbital: '3d5/2', be: 1242 },\n  { element: 'Sc', orbital: '3d', be: 7 },\n  { element: 'Ti', orbital: '3d', be: 3 },\n  { element: 'V', orbital: '3d', be: 2 },\n  { element: 'Cr', orbital: '3d', be: 2 },\n  { element: 'Mn', orbital: '3d', be: 4 },\n  { element: 'Fe', orbital: '3d', be: 6 },\n  { element: 'Co', orbital: '3d', be: 3 },\n  { element: 'Ni', orbital: '3d', be: 4 },\n  { element: 'Cu', orbital: '3d', be: 2 },\n  { element: 'Zn', orbital: '3d', be: 9 },\n  { element: 'Ga', orbital: '3d', be: 18 },\n  { element: 'Ge', orbital: '3d', be: 29 },\n  { element: 'As', orbital: '3d', be: 41 },\n  { element: 'Se', orbital: '3d', be: 57 },\n  { element: 'Br', orbital: '3d', be: 69 },\n  { element: 'Kr', orbital: '3d', be: 89 },\n  { element: 'Rb', orbital: '3d', be: 111 },\n  { element: 'Sr', orbital: '3d', be: 133 },\n  { element: 'Y', orbital: '3d', be: 158 },\n  { element: 'Zr', orbital: '3d', be: 180 },\n  { element: 'Nb', orbital: '3d', be: 205 },\n  { element: 'Mo', orbital: '3d', be: 227 },\n  { element: 'Tc', orbital: '3d', be: 253 },\n  { element: 'Ru', orbital: '3d', be: 279 },\n  { element: 'Rh', orbital: '3d', be: 307 },\n  { element: 'Pd', orbital: '3d', be: 335 },\n  { element: 'Ag', orbital: '3d', be: 367 },\n  { element: 'Cd', orbital: '3d', be: 404 },\n  { element: 'In', orbital: '3d', be: 443 },\n  { element: 'Sn', orbital: '3d', be: 485 },\n  { element: 'Sb', orbital: '3d', be: 528 },\n  { element: 'Te', orbital: '3d', be: 572 },\n  { element: 'I', orbital: '3d', be: 620 },\n  { element: 'Xe', orbital: '3d', be: 672 },\n  { element: 'Cs', orbital: '3d', be: 726 },\n  { element: 'Ba', orbital: '3d', be: 781 },\n  { element: 'La', orbital: '3d', be: 832 },\n  { element: 'Ce', orbital: '3d', be: 884 },\n  { element: 'Pr', orbital: '3d', be: 931 },\n  { element: 'Nd', orbital: '3d', be: 978 },\n  { element: 'Pm', orbital: '3d', be: 1027 },\n  { element: 'Sm', orbital: '3d', be: 1081 },\n  { element: 'Eu', orbital: '3d', be: 1131 },\n  { element: 'Gd', orbital: '3d', be: 1186 },\n  { element: 'Tb', orbital: '3d', be: 1242 },\n  { element: 'Br', orbital: '4s', be: 27 },\n  { element: 'Kr', orbital: '4s', be: 24 },\n  { element: 'Rb', orbital: '4s', be: 30 },\n  { element: 'Sr', orbital: '4s', be: 38 },\n  { element: 'Y', orbital: '4s', be: 46 },\n  { element: 'Zr', orbital: '4s', be: 52 },\n  { element: 'Nb', orbital: '4s', be: 58 },\n  { element: 'Mo', orbital: '4s', be: 62 },\n  { element: 'Tc', orbital: '4s', be: 68 },\n  { element: 'Ru', orbital: '4s', be: 75 },\n  { element: 'Rh', orbital: '4s', be: 81 },\n  { element: 'Pd', orbital: '4s', be: 86 },\n  { element: 'Ag', orbital: '4s', be: 95 },\n  { element: 'Cd', orbital: '4s', be: 108 },\n  { element: 'In', orbital: '4s', be: 122 },\n  { element: 'Sn', orbital: '4s', be: 137 },\n  { element: 'Sb', orbital: '4s', be: 152 },\n  { element: 'Te', orbital: '4s', be: 168 },\n  { element: 'I', orbital: '4s', be: 186 },\n  { element: 'Xe', orbital: '4s', be: 208 },\n  { element: 'Cs', orbital: '4s', be: 231 },\n  { element: 'Ba', orbital: '4s', be: 253 },\n  { element: 'La', orbital: '4s', be: 271 },\n  { element: 'Ce', orbital: '4s', be: 290 },\n  { element: 'Pr', orbital: '4s', be: 305 },\n  { element: 'Nd', orbital: '4s', be: 316 },\n  { element: 'Pm', orbital: '4s', be: 331 },\n  { element: 'Sm', orbital: '4s', be: 347 },\n  { element: 'Eu', orbital: '4s', be: 360 },\n  { element: 'Gd', orbital: '4s', be: 376 },\n  { element: 'Tb', orbital: '4s', be: 398 },\n  { element: 'Dy', orbital: '4s', be: 416 },\n  { element: 'Ho', orbital: '4s', be: 436 },\n  { element: 'Er', orbital: '4s', be: 449 },\n  { element: 'Tm', orbital: '4s', be: 472 },\n  { element: 'Yb', orbital: '4s', be: 487 },\n  { element: 'Lu', orbital: '4s', be: 506 },\n  { element: 'Hf', orbital: '4s', be: 538 },\n  { element: 'Ta', orbital: '4s', be: 566 },\n  { element: 'W', orbital: '4s', be: 595 },\n  { element: 'Re', orbital: '4s', be: 625 },\n  { element: 'Os', orbital: '4s', be: 655 },\n  { element: 'Ir', orbital: '4s', be: 690 },\n  { element: 'Pt', orbital: '4s', be: 724 },\n  { element: 'Au', orbital: '4s', be: 759 },\n  { element: 'Hg', orbital: '4s', be: 800 },\n  { element: 'Tl', orbital: '4s', be: 846 },\n  { element: 'Pb', orbital: '4s', be: 894 },\n  { element: 'Bi', orbital: '4s', be: 939 },\n  { element: 'Po', orbital: '4s', be: 995 },\n  { element: 'At', orbital: '4s', be: 1042 },\n  { element: 'Rn', orbital: '4s', be: 1097 },\n  { element: 'Fr', orbital: '4s', be: 1153 },\n  { element: 'Ra', orbital: '4s', be: 1208 },\n  { element: 'U', orbital: '4s', be: 1043 },\n  { element: 'Ga', orbital: '4p1/2', be: 1 },\n  { element: 'Ge', orbital: '4p1/2', be: 3 },\n  { element: 'As', orbital: '4p1/2', be: 3 },\n  { element: 'Se', orbital: '4p1/2', be: 6 },\n  { element: 'Br', orbital: '4p1/2', be: 5 },\n  { element: 'Kr', orbital: '4p1/2', be: 11 },\n  { element: 'Rb', orbital: '4p1/2', be: 15 },\n  { element: 'Sr', orbital: '4p1/2', be: 20 },\n  { element: 'Y', orbital: '4p1/2', be: 26 },\n  { element: 'Zr', orbital: '4p1/2', be: 29 },\n  { element: 'Nb', orbital: '4p1/2', be: 34 },\n  { element: 'Mo', orbital: '4p1/2', be: 35 },\n  { element: 'Tc', orbital: '4p1/2', be: 39 },\n  { element: 'Ru', orbital: '4p1/2', be: 43 },\n  { element: 'Rh', orbital: '4p1/2', be: 48 },\n  { element: 'Pd', orbital: '4p1/2', be: 51 },\n  { element: 'Ag', orbital: '4p1/2', be: 62 },\n  { element: 'Cd', orbital: '4p1/2', be: 67 },\n  { element: 'In', orbital: '4p1/2', be: 77 },\n  { element: 'Sn', orbital: '4p1/2', be: 89 },\n  { element: 'Sb', orbital: '4p1/2', be: 99 },\n  { element: 'Te', orbital: '4p1/2', be: 110 },\n  { element: 'I', orbital: '4p1/2', be: 123 },\n  { element: 'Xe', orbital: '4p1/2', be: 147 },\n  { element: 'Cs', orbital: '4p1/2', be: 172 },\n  { element: 'Ba', orbital: '4p1/2', be: 192 },\n  { element: 'La', orbital: '4p1/2', be: 206 },\n  { element: 'Ce', orbital: '4p1/2', be: 224 },\n  { element: 'Pr', orbital: '4p1/2', be: 237 },\n  { element: 'Nd', orbital: '4p1/2', be: 244 },\n  { element: 'Pm', orbital: '4p1/2', be: 255 },\n  { element: 'Sm', orbital: '4p1/2', be: 267 },\n  { element: 'Eu', orbital: '4p1/2', be: 284 },\n  { element: 'Gd', orbital: '4p1/2', be: 289 },\n  { element: 'Tb', orbital: '4p1/2', be: 311 },\n  { element: 'Dy', orbital: '4p1/2', be: 332 },\n  { element: 'Ho', orbital: '4p1/2', be: 343 },\n  { element: 'Er', orbital: '4p1/2', be: 366 },\n  { element: 'Tm', orbital: '4p1/2', be: 386 },\n  { element: 'Yb', orbital: '4p1/2', be: 396 },\n  { element: 'Lu', orbital: '4p1/2', be: 410 },\n  { element: 'Hf', orbital: '4p1/2', be: 437 },\n  { element: 'Ta', orbital: '4p1/2', be: 465 },\n  { element: 'W', orbital: '4p1/2', be: 492 },\n  { element: 'Re', orbital: '4p1/2', be: 518 },\n  { element: 'Os', orbital: '4p1/2', be: 547 },\n  { element: 'Ir', orbital: '4p1/2', be: 577 },\n  { element: 'Pt', orbital: '4p1/2', be: 608 },\n  { element: 'Au', orbital: '4p1/2', be: 644 },\n  { element: 'Hg', orbital: '4p1/2', be: 677 },\n  { element: 'Tl', orbital: '4p1/2', be: 722 },\n  { element: 'Pb', orbital: '4p1/2', be: 764 },\n  { element: 'Bi', orbital: '4p1/2', be: 806 },\n  { element: 'Po', orbital: '4p1/2', be: 851 },\n  { element: 'At', orbital: '4p1/2', be: 886 },\n  { element: 'Rn', orbital: '4p1/2', be: 929 },\n  { element: 'Fr', orbital: '4p1/2', be: 980 },\n  { element: 'Ra', orbital: '4p1/2', be: 1058 },\n  { element: 'Ac', orbital: '4p1/2', be: 1080 },\n  { element: 'Th', orbital: '4p1/2', be: 1168 },\n  { element: 'Ga', orbital: '4p3/2', be: 1 },\n  { element: 'Ge', orbital: '4p3/2', be: 3 },\n  { element: 'As', orbital: '4p3/2', be: 3 },\n  { element: 'Se', orbital: '4p3/2', be: 6 },\n  { element: 'Br', orbital: '4p3/2', be: 5 },\n  { element: 'Kr', orbital: '4p3/2', be: 11 },\n  { element: 'Rb', orbital: '4p3/2', be: 14 },\n  { element: 'Sr', orbital: '4p3/2', be: 20 },\n  { element: 'Y', orbital: '4p3/2', be: 26 },\n  { element: 'Zr', orbital: '4p3/2', be: 29 },\n  { element: 'Nb', orbital: '4p3/2', be: 34 },\n  { element: 'Mo', orbital: '4p3/2', be: 35 },\n  { element: 'Tc', orbital: '4p3/2', be: 39 },\n  { element: 'Ru', orbital: '4p3/2', be: 43 },\n  { element: 'Rh', orbital: '4p3/2', be: 48 },\n  { element: 'Pd', orbital: '4p3/2', be: 56 },\n  { element: 'Ag', orbital: '4p3/2', be: 56 },\n  { element: 'Cd', orbital: '4p3/2', be: 67 },\n  { element: 'In', orbital: '4p3/2', be: 77 },\n  { element: 'Sn', orbital: '4p3/2', be: 89 },\n  { element: 'Sb', orbital: '4p3/2', be: 99 },\n  { element: 'Te', orbital: '4p3/2', be: 110 },\n  { element: 'I', orbital: '4p3/2', be: 123 },\n  { element: 'Xe', orbital: '4p3/2', be: 147 },\n  { element: 'Cs', orbital: '4p3/2', be: 162 },\n  { element: 'Ba', orbital: '4p3/2', be: 180 },\n  { element: 'La', orbital: '4p3/2', be: 192 },\n  { element: 'Ce', orbital: '4p3/2', be: 208 },\n  { element: 'Pr', orbital: '4p3/2', be: 218 },\n  { element: 'Nd', orbital: '4p3/2', be: 225 },\n  { element: 'Pm', orbital: '4p3/2', be: 237 },\n  { element: 'Sm', orbital: '4p3/2', be: 249 },\n  { element: 'Eu', orbital: '4p3/2', be: 257 },\n  { element: 'Gd', orbital: '4p3/2', be: 271 },\n  { element: 'Tb', orbital: '4p3/2', be: 286 },\n  { element: 'Dy', orbital: '4p3/2', be: 293 },\n  { element: 'Ho', orbital: '4p3/2', be: 306 },\n  { element: 'Er', orbital: '4p3/2', be: 320 },\n  { element: 'Tm', orbital: '4p3/2', be: 337 },\n  { element: 'Yb', orbital: '4p3/2', be: 343 },\n  { element: 'Lu', orbital: '4p3/2', be: 359 },\n  { element: 'Hf', orbital: '4p3/2', be: 380 },\n  { element: 'Ta', orbital: '4p3/2', be: 405 },\n  { element: 'W', orbital: '4p3/2', be: 426 },\n  { element: 'Re', orbital: '4p3/2', be: 445 },\n  { element: 'Os', orbital: '4p3/2', be: 469 },\n  { element: 'Ir', orbital: '4p3/2', be: 495 },\n  { element: 'Pt', orbital: '4p3/2', be: 519 },\n  { element: 'Au', orbital: '4p3/2', be: 546 },\n  { element: 'Hg', orbital: '4p3/2', be: 571 },\n  { element: 'Tl', orbital: '4p3/2', be: 609 },\n  { element: 'Pb', orbital: '4p3/2', be: 645 },\n  { element: 'Bi', orbital: '4p3/2', be: 679 },\n  { element: 'Po', orbital: '4p3/2', be: 705 },\n  { element: 'At', orbital: '4p3/2', be: 740 },\n  { element: 'Rn', orbital: '4p3/2', be: 768 },\n  { element: 'Fr', orbital: '4p3/2', be: 810 },\n  { element: 'Ra', orbital: '4p3/2', be: 879 },\n  { element: 'Ac', orbital: '4p3/2', be: 890 },\n  { element: 'Th', orbital: '4p3/2', be: 968 },\n  { element: 'Ga', orbital: '4p', be: 1 },\n  { element: 'Ge', orbital: '4p', be: 3 },\n  { element: 'As', orbital: '4p', be: 3 },\n  { element: 'Se', orbital: '4p', be: 6 },\n  { element: 'Br', orbital: '4p', be: 5 },\n  { element: 'Kr', orbital: '4p', be: 11 },\n  { element: 'Rb', orbital: '4p', be: 14 },\n  { element: 'Sr', orbital: '4p', be: 20 },\n  { element: 'Y', orbital: '4p', be: 26 },\n  { element: 'Zr', orbital: '4p', be: 29 },\n  { element: 'Nb', orbital: '4p', be: 34 },\n  { element: 'Mo', orbital: '4p', be: 35 },\n  { element: 'Tc', orbital: '4p', be: 39 },\n  { element: 'Ru', orbital: '4p', be: 43 },\n  { element: 'Rh', orbital: '4p', be: 48 },\n  { element: 'Pd', orbital: '4p', be: 56 },\n  { element: 'Ag', orbital: '4p', be: 56 },\n  { element: 'Cd', orbital: '4p', be: 67 },\n  { element: 'In', orbital: '4p', be: 77 },\n  { element: 'Sn', orbital: '4p', be: 89 },\n  { element: 'Sb', orbital: '4p', be: 99 },\n  { element: 'Te', orbital: '4p', be: 110 },\n  { element: 'I', orbital: '4p', be: 123 },\n  { element: 'Xe', orbital: '4p', be: 147 },\n  { element: 'Cs', orbital: '4p', be: 162 },\n  { element: 'Ba', orbital: '4p', be: 180 },\n  { element: 'La', orbital: '4p', be: 192 },\n  { element: 'Ce', orbital: '4p', be: 208 },\n  { element: 'Pr', orbital: '4p', be: 218 },\n  { element: 'Nd', orbital: '4p', be: 225 },\n  { element: 'Pm', orbital: '4p', be: 237 },\n  { element: 'Sm', orbital: '4p', be: 249 },\n  { element: 'Eu', orbital: '4p', be: 257 },\n  { element: 'Gd', orbital: '4p', be: 271 },\n  { element: 'Tb', orbital: '4p', be: 286 },\n  { element: 'Dy', orbital: '4p', be: 293 },\n  { element: 'Ho', orbital: '4p', be: 306 },\n  { element: 'Er', orbital: '4p', be: 320 },\n  { element: 'Tm', orbital: '4p', be: 337 },\n  { element: 'Yb', orbital: '4p', be: 343 },\n  { element: 'Lu', orbital: '4p', be: 359 },\n  { element: 'Hf', orbital: '4p', be: 380 },\n  { element: 'Ta', orbital: '4p', be: 405 },\n  { element: 'W', orbital: '4p', be: 426 },\n  { element: 'Re', orbital: '4p', be: 445 },\n  { element: 'Os', orbital: '4p', be: 469 },\n  { element: 'Ir', orbital: '4p', be: 495 },\n  { element: 'Pt', orbital: '4p', be: 519 },\n  { element: 'Au', orbital: '4p', be: 546 },\n  { element: 'Hg', orbital: '4p', be: 571 },\n  { element: 'Tl', orbital: '4p', be: 609 },\n  { element: 'Pb', orbital: '4p', be: 645 },\n  { element: 'Bi', orbital: '4p', be: 679 },\n  { element: 'Po', orbital: '4p', be: 705 },\n  { element: 'At', orbital: '4p', be: 740 },\n  { element: 'Rn', orbital: '4p', be: 768 },\n  { element: 'Fr', orbital: '4p', be: 810 },\n  { element: 'Ra', orbital: '4p', be: 879 },\n  { element: 'Ac', orbital: '4p', be: 890 },\n  { element: 'Th', orbital: '4p', be: 968 },\n  { element: 'Y', orbital: '4d3/2', be: 3 },\n  { element: 'Zr', orbital: '4d3/2', be: 3 },\n  { element: 'Nb', orbital: '4d3/2', be: 4 },\n  { element: 'Mo', orbital: '4d3/2', be: 2 },\n  { element: 'Tc', orbital: '4d3/2', be: 2 },\n  { element: 'Ru', orbital: '4d3/2', be: 2 },\n  { element: 'Rh', orbital: '4d3/2', be: 3 },\n  { element: 'Pd', orbital: '4d3/2', be: 1 },\n  { element: 'Ag', orbital: '4d3/2', be: 3 },\n  { element: 'Cd', orbital: '4d3/2', be: 9 },\n  { element: 'In', orbital: '4d3/2', be: 16 },\n  { element: 'Sn', orbital: '4d3/2', be: 24 },\n  { element: 'Sb', orbital: '4d3/2', be: 32 },\n  { element: 'Te', orbital: '4d3/2', be: 40 },\n  { element: 'I', orbital: '4d3/2', be: 50 },\n  { element: 'Xe', orbital: '4d3/2', be: 63 },\n  { element: 'Cs', orbital: '4d3/2', be: 79 },\n  { element: 'Ba', orbital: '4d3/2', be: 93 },\n  { element: 'La', orbital: '4d3/2', be: 99 },\n  { element: 'Ce', orbital: '4d3/2', be: 111 },\n  { element: 'Pr', orbital: '4d3/2', be: 114 },\n  { element: 'Nd', orbital: '4d3/2', be: 118 },\n  { element: 'Pm', orbital: '4d3/2', be: 121 },\n  { element: 'Sm', orbital: '4d3/2', be: 130 },\n  { element: 'Eu', orbital: '4d3/2', be: 134 },\n  { element: 'Gd', orbital: '4d3/2', be: 141 },\n  { element: 'Tb', orbital: '4d3/2', be: 148 },\n  { element: 'Dy', orbital: '4d3/2', be: 154 },\n  { element: 'Ho', orbital: '4d3/2', be: 161 },\n  { element: 'Er', orbital: '4d3/2', be: 177 },\n  { element: 'Tm', orbital: '4d3/2', be: 180 },\n  { element: 'Yb', orbital: '4d3/2', be: 197 },\n  { element: 'Lu', orbital: '4d3/2', be: 205 },\n  { element: 'Hf', orbital: '4d3/2', be: 224 },\n  { element: 'Ta', orbital: '4d3/2', be: 242 },\n  { element: 'W', orbital: '4d3/2', be: 259 },\n  { element: 'Re', orbital: '4d3/2', be: 274 },\n  { element: 'Os', orbital: '4d3/2', be: 290 },\n  { element: 'Ir', orbital: '4d3/2', be: 312 },\n  { element: 'Pt', orbital: '4d3/2', be: 331 },\n  { element: 'Au', orbital: '4d3/2', be: 352 },\n  { element: 'Hg', orbital: '4d3/2', be: 379 },\n  { element: 'Tl', orbital: '4d3/2', be: 407 },\n  { element: 'Pb', orbital: '4d3/2', be: 435 },\n  { element: 'Bi', orbital: '4d3/2', be: 464 },\n  { element: 'Po', orbital: '4d3/2', be: 500 },\n  { element: 'At', orbital: '4d3/2', be: 533 },\n  { element: 'Rn', orbital: '4d3/2', be: 567 },\n  { element: 'Fr', orbital: '4d3/2', be: 603 },\n  { element: 'Ra', orbital: '4d3/2', be: 636 },\n  { element: 'Ac', orbital: '4d3/2', be: 675 },\n  { element: 'Th', orbital: '4d3/2', be: 714 },\n  { element: 'U', orbital: '4d3/2', be: 781 },\n  { element: 'Y', orbital: '4d5/2', be: 3 },\n  { element: 'Zr', orbital: '4d5/2', be: 3 },\n  { element: 'Nb', orbital: '4d5/2', be: 4 },\n  { element: 'Mo', orbital: '4d5/2', be: 2 },\n  { element: 'Tc', orbital: '4d5/2', be: 2 },\n  { element: 'Ru', orbital: '4d5/2', be: 2 },\n  { element: 'Rh', orbital: '4d5/2', be: 3 },\n  { element: 'Pd', orbital: '4d5/2', be: 1 },\n  { element: 'Ag', orbital: '4d5/2', be: 3 },\n  { element: 'Cd', orbital: '4d5/2', be: 9 },\n  { element: 'In', orbital: '4d5/2', be: 16 },\n  { element: 'Sn', orbital: '4d5/2', be: 24 },\n  { element: 'Sb', orbital: '4d5/2', be: 32 },\n  { element: 'Te', orbital: '4d5/2', be: 40 },\n  { element: 'I', orbital: '4d5/2', be: 50 },\n  { element: 'Xe', orbital: '4d5/2', be: 63 },\n  { element: 'Cs', orbital: '4d5/2', be: 77 },\n  { element: 'Ba', orbital: '4d5/2', be: 90 },\n  { element: 'La', orbital: '4d5/2', be: 99 },\n  { element: 'Ce', orbital: '4d5/2', be: 111 },\n  { element: 'Pr', orbital: '4d5/2', be: 114 },\n  { element: 'Nd', orbital: '4d5/2', be: 118 },\n  { element: 'Pm', orbital: '4d5/2', be: 121 },\n  { element: 'Sm', orbital: '4d5/2', be: 130 },\n  { element: 'Eu', orbital: '4d5/2', be: 134 },\n  { element: 'Gd', orbital: '4d5/2', be: 141 },\n  { element: 'Tb', orbital: '4d5/2', be: 148 },\n  { element: 'Dy', orbital: '4d5/2', be: 154 },\n  { element: 'Ho', orbital: '4d5/2', be: 161 },\n  { element: 'Er', orbital: '4d5/2', be: 168 },\n  { element: 'Tm', orbital: '4d5/2', be: 180 },\n  { element: 'Yb', orbital: '4d5/2', be: 184 },\n  { element: 'Lu', orbital: '4d5/2', be: 195 },\n  { element: 'Hf', orbital: '4d5/2', be: 214 },\n  { element: 'Ta', orbital: '4d5/2', be: 230 },\n  { element: 'W', orbital: '4d5/2', be: 246 },\n  { element: 'Re', orbital: '4d5/2', be: 260 },\n  { element: 'Os', orbital: '4d5/2', be: 273 },\n  { element: 'Ir', orbital: '4d5/2', be: 295 },\n  { element: 'Pt', orbital: '4d5/2', be: 314 },\n  { element: 'Au', orbital: '4d5/2', be: 334 },\n  { element: 'Hg', orbital: '4d5/2', be: 360 },\n  { element: 'Tl', orbital: '4d5/2', be: 386 },\n  { element: 'Pb', orbital: '4d5/2', be: 413 },\n  { element: 'Bi', orbital: '4d5/2', be: 440 },\n  { element: 'Po', orbital: '4d5/2', be: 473 },\n  { element: 'At', orbital: '4d5/2', be: 507 },\n  { element: 'Rn', orbital: '4d5/2', be: 541 },\n  { element: 'Fr', orbital: '4d5/2', be: 577 },\n  { element: 'Ra', orbital: '4d5/2', be: 603 },\n  { element: 'Ac', orbital: '4d5/2', be: 639 },\n  { element: 'Th', orbital: '4d5/2', be: 677 },\n  { element: 'U', orbital: '4d5/2', be: 739 },\n  { element: 'Y', orbital: '4d', be: 3 },\n  { element: 'Zr', orbital: '4d', be: 3 },\n  { element: 'Nb', orbital: '4d', be: 4 },\n  { element: 'Mo', orbital: '4d', be: 2 },\n  { element: 'Tc', orbital: '4d', be: 2 },\n  { element: 'Ru', orbital: '4d', be: 2 },\n  { element: 'Rh', orbital: '4d', be: 3 },\n  { element: 'Pd', orbital: '4d', be: 1 },\n  { element: 'Ag', orbital: '4d', be: 3 },\n  { element: 'Cd', orbital: '4d', be: 9 },\n  { element: 'In', orbital: '4d', be: 16 },\n  { element: 'Sn', orbital: '4d', be: 24 },\n  { element: 'Sb', orbital: '4d', be: 32 },\n  { element: 'Te', orbital: '4d', be: 40 },\n  { element: 'I', orbital: '4d', be: 50 },\n  { element: 'Xe', orbital: '4d', be: 63 },\n  { element: 'Cs', orbital: '4d', be: 77 },\n  { element: 'Ba', orbital: '4d', be: 90 },\n  { element: 'La', orbital: '4d', be: 99 },\n  { element: 'Ce', orbital: '4d', be: 111 },\n  { element: 'Pr', orbital: '4d', be: 114 },\n  { element: 'Nd', orbital: '4d', be: 118 },\n  { element: 'Pm', orbital: '4d', be: 121 },\n  { element: 'Sm', orbital: '4d', be: 130 },\n  { element: 'Eu', orbital: '4d', be: 134 },\n  { element: 'Gd', orbital: '4d', be: 141 },\n  { element: 'Tb', orbital: '4d', be: 148 },\n  { element: 'Dy', orbital: '4d', be: 154 },\n  { element: 'Ho', orbital: '4d', be: 161 },\n  { element: 'Er', orbital: '4d', be: 168 },\n  { element: 'Tm', orbital: '4d', be: 180 },\n  { element: 'Yb', orbital: '4d', be: 184 },\n  { element: 'Lu', orbital: '4d', be: 195 },\n  { element: 'Hf', orbital: '4d', be: 214 },\n  { element: 'Ta', orbital: '4d', be: 230 },\n  { element: 'W', orbital: '4d', be: 246 },\n  { element: 'Re', orbital: '4d', be: 260 },\n  { element: 'Os', orbital: '4d', be: 273 },\n  { element: 'Ir', orbital: '4d', be: 295 },\n  { element: 'Pt', orbital: '4d', be: 314 },\n  { element: 'Au', orbital: '4d', be: 334 },\n  { element: 'Hg', orbital: '4d', be: 360 },\n  { element: 'Tl', orbital: '4d', be: 386 },\n  { element: 'Pb', orbital: '4d', be: 413 },\n  { element: 'Bi', orbital: '4d', be: 440 },\n  { element: 'Po', orbital: '4d', be: 473 },\n  { element: 'At', orbital: '4d', be: 507 },\n  { element: 'Rn', orbital: '4d', be: 541 },\n  { element: 'Fr', orbital: '4d', be: 577 },\n  { element: 'Ra', orbital: '4d', be: 603 },\n  { element: 'Ac', orbital: '4d', be: 639 },\n  { element: 'Th', orbital: '4d', be: 677 },\n  { element: 'U', orbital: '4d', be: 739 },\n  { element: 'Ce', orbital: '4f5/2', be: 1 },\n  { element: 'Pr', orbital: '4f5/2', be: 2 },\n  { element: 'Nd', orbital: '4f5/2', be: 2 },\n  { element: 'Pm', orbital: '4f5/2', be: 4 },\n  { element: 'Sm', orbital: '4f5/2', be: 7 },\n  { element: 'Tb', orbital: '4f5/2', be: 3 },\n  { element: 'Dy', orbital: '4f5/2', be: 4 },\n  { element: 'Ho', orbital: '4f5/2', be: 4 },\n  { element: 'Er', orbital: '4f5/2', be: 4 },\n  { element: 'Tm', orbital: '4f5/2', be: 5 },\n  { element: 'Yb', orbital: '4f5/2', be: 6 },\n  { element: 'Lu', orbital: '4f5/2', be: 7 },\n  { element: 'Hf', orbital: '4f5/2', be: 19 },\n  { element: 'Ta', orbital: '4f5/2', be: 27 },\n  { element: 'W', orbital: '4f5/2', be: 37 },\n  { element: 'Re', orbital: '4f5/2', be: 47 },\n  { element: 'Os', orbital: '4f5/2', be: 52 },\n  { element: 'Ir', orbital: '4f5/2', be: 63 },\n  { element: 'Pt', orbital: '4f5/2', be: 74 },\n  { element: 'Au', orbital: '4f5/2', be: 87 },\n  { element: 'Hg', orbital: '4f5/2', be: 103 },\n  { element: 'Tl', orbital: '4f5/2', be: 122 },\n  { element: 'Pb', orbital: '4f5/2', be: 143 },\n  { element: 'Bi', orbital: '4f5/2', be: 163 },\n  { element: 'Po', orbital: '4f5/2', be: 184 },\n  { element: 'At', orbital: '4f5/2', be: 210 },\n  { element: 'Rn', orbital: '4f5/2', be: 238 },\n  { element: 'Fr', orbital: '4f5/2', be: 268 },\n  { element: 'Ra', orbital: '4f5/2', be: 299 },\n  { element: 'Ac', orbital: '4f5/2', be: 319 },\n  { element: 'Th', orbital: '4f5/2', be: 344 },\n  { element: 'U', orbital: '4f5/2', be: 391 },\n  { element: 'Ce', orbital: '4f7/2', be: 1 },\n  { element: 'Pr', orbital: '4f7/2', be: 2 },\n  { element: 'Nd', orbital: '4f7/2', be: 2 },\n  { element: 'Pm', orbital: '4f7/2', be: 4 },\n  { element: 'Sm', orbital: '4f7/2', be: 7 },\n  { element: 'Tb', orbital: '4f7/2', be: 3 },\n  { element: 'Dy', orbital: '4f7/2', be: 4 },\n  { element: 'Ho', orbital: '4f7/2', be: 4 },\n  { element: 'Er', orbital: '4f7/2', be: 4 },\n  { element: 'Tm', orbital: '4f7/2', be: 5 },\n  { element: 'Yb', orbital: '4f7/2', be: 6 },\n  { element: 'Lu', orbital: '4f7/2', be: 7 },\n  { element: 'Hf', orbital: '4f7/2', be: 18 },\n  { element: 'Ta', orbital: '4f7/2', be: 25 },\n  { element: 'W', orbital: '4f7/2', be: 34 },\n  { element: 'Re', orbital: '4f7/2', be: 45 },\n  { element: 'Os', orbital: '4f7/2', be: 50 },\n  { element: 'Ir', orbital: '4f7/2', be: 60 },\n  { element: 'Pt', orbital: '4f7/2', be: 70 },\n  { element: 'Au', orbital: '4f7/2', be: 83 },\n  { element: 'Hg', orbital: '4f7/2', be: 99 },\n  { element: 'Tl', orbital: '4f7/2', be: 118 },\n  { element: 'Pb', orbital: '4f7/2', be: 138 },\n  { element: 'Bi', orbital: '4f7/2', be: 158 },\n  { element: 'Po', orbital: '4f7/2', be: 184 },\n  { element: 'At', orbital: '4f7/2', be: 210 },\n  { element: 'Rn', orbital: '4f7/2', be: 238 },\n  { element: 'Fr', orbital: '4f7/2', be: 268 },\n  { element: 'Ra', orbital: '4f7/2', be: 299 },\n  { element: 'Ac', orbital: '4f7/2', be: 319 },\n  { element: 'Th', orbital: '4f7/2', be: 335 },\n  { element: 'U', orbital: '4f7/2', be: 380 },\n  { element: 'Ce', orbital: '4f', be: 1 },\n  { element: 'Pr', orbital: '4f', be: 2 },\n  { element: 'Nd', orbital: '4f', be: 2 },\n  { element: 'Pm', orbital: '4f', be: 4 },\n  { element: 'Sm', orbital: '4f', be: 7 },\n  { element: 'Tb', orbital: '4f', be: 3 },\n  { element: 'Dy', orbital: '4f', be: 4 },\n  { element: 'Ho', orbital: '4f', be: 4 },\n  { element: 'Er', orbital: '4f', be: 4 },\n  { element: 'Tm', orbital: '4f', be: 5 },\n  { element: 'Yb', orbital: '4f', be: 6 },\n  { element: 'Lu', orbital: '4f', be: 7 },\n  { element: 'Hf', orbital: '4f', be: 18 },\n  { element: 'Ta', orbital: '4f', be: 25 },\n  { element: 'W', orbital: '4f', be: 34 },\n  { element: 'Re', orbital: '4f', be: 45 },\n  { element: 'Os', orbital: '4f', be: 50 },\n  { element: 'Ir', orbital: '4f', be: 60 },\n  { element: 'Pt', orbital: '4f', be: 70 },\n  { element: 'Au', orbital: '4f', be: 83 },\n  { element: 'Hg', orbital: '4f', be: 99 },\n  { element: 'Tl', orbital: '4f', be: 118 },\n  { element: 'Pb', orbital: '4f', be: 138 },\n  { element: 'Bi', orbital: '4f', be: 158 },\n  { element: 'Po', orbital: '4f', be: 184 },\n  { element: 'At', orbital: '4f', be: 210 },\n  { element: 'Rn', orbital: '4f', be: 238 },\n  { element: 'Fr', orbital: '4f', be: 268 },\n  { element: 'Ra', orbital: '4f', be: 299 },\n  { element: 'Ac', orbital: '4f', be: 319 },\n  { element: 'Th', orbital: '4f', be: 335 },\n  { element: 'U', orbital: '4f', be: 380 },\n  { element: 'Sn', orbital: '5s', be: 1 },\n  { element: 'Sb', orbital: '5s', be: 7 },\n  { element: 'Te', orbital: '5s', be: 12 },\n  { element: 'I', orbital: '5s', be: 14 },\n  { element: 'Xe', orbital: '5s', be: 18 },\n  { element: 'Cs', orbital: '5s', be: 23 },\n  { element: 'Ba', orbital: '5s', be: 40 },\n  { element: 'La', orbital: '5s', be: 33 },\n  { element: 'Ce', orbital: '5s', be: 38 },\n  { element: 'Pr', orbital: '5s', be: 38 },\n  { element: 'Nd', orbital: '5s', be: 38 },\n  { element: 'Pm', orbital: '5s', be: 38 },\n  { element: 'Sm', orbital: '5s', be: 39 },\n  { element: 'Eu', orbital: '5s', be: 32 },\n  { element: 'Gd', orbital: '5s', be: 36 },\n  { element: 'Tb', orbital: '5s', be: 40 },\n  { element: 'Dy', orbital: '5s', be: 63 },\n  { element: 'Ho', orbital: '5s', be: 51 },\n  { element: 'Er', orbital: '5s', be: 60 },\n  { element: 'Tm', orbital: '5s', be: 53 },\n  { element: 'Yb', orbital: '5s', be: 53 },\n  { element: 'Lu', orbital: '5s', be: 57 },\n  { element: 'Hf', orbital: '5s', be: 65 },\n  { element: 'Ta', orbital: '5s', be: 71 },\n  { element: 'W', orbital: '5s', be: 77 },\n  { element: 'Re', orbital: '5s', be: 83 },\n  { element: 'Os', orbital: '5s', be: 84 },\n  { element: 'Ir', orbital: '5s', be: 96 },\n  { element: 'Pt', orbital: '5s', be: 102 },\n  { element: 'Au', orbital: '5s', be: 108 },\n  { element: 'Hg', orbital: '5s', be: 120 },\n  { element: 'Tl', orbital: '5s', be: 137 },\n  { element: 'Pb', orbital: '5s', be: 148 },\n  { element: 'Bi', orbital: '5s', be: 160 },\n  { element: 'Po', orbital: '5s', be: 177 },\n  { element: 'At', orbital: '5s', be: 195 },\n  { element: 'Rn', orbital: '5s', be: 214 },\n  { element: 'Fr', orbital: '5s', be: 234 },\n  { element: 'Ra', orbital: '5s', be: 254 },\n  { element: 'Ac', orbital: '5s', be: 272 },\n  { element: 'Th', orbital: '5s', be: 290 },\n  { element: 'In', orbital: '5p1/2', be: 1 },\n  { element: 'Sn', orbital: '5p1/2', be: 1 },\n  { element: 'Sb', orbital: '5p1/2', be: 2 },\n  { element: 'Te', orbital: '5p1/2', be: 2 },\n  { element: 'I', orbital: '5p1/2', be: 3 },\n  { element: 'Xe', orbital: '5p1/2', be: 7 },\n  { element: 'Cs', orbital: '5p1/2', be: 13 },\n  { element: 'Ba', orbital: '5p1/2', be: 17 },\n  { element: 'La', orbital: '5p1/2', be: 15 },\n  { element: 'Ce', orbital: '5p1/2', be: 20 },\n  { element: 'Pr', orbital: '5p1/2', be: 23 },\n  { element: 'Nd', orbital: '5p1/2', be: 22 },\n  { element: 'Pm', orbital: '5p1/2', be: 22 },\n  { element: 'Sm', orbital: '5p1/2', be: 22 },\n  { element: 'Eu', orbital: '5p1/2', be: 22 },\n  { element: 'Gd', orbital: '5p1/2', be: 21 },\n  { element: 'Tb', orbital: '5p1/2', be: 26 },\n  { element: 'Dy', orbital: '5p1/2', be: 26 },\n  { element: 'Ho', orbital: '5p1/2', be: 20 },\n  { element: 'Er', orbital: '5p1/2', be: 29 },\n  { element: 'Tm', orbital: '5p1/2', be: 32 },\n  { element: 'Yb', orbital: '5p1/2', be: 23 },\n  { element: 'Lu', orbital: '5p1/2', be: 28 },\n  { element: 'Hf', orbital: '5p1/2', be: 38 },\n  { element: 'Ta', orbital: '5p1/2', be: 45 },\n  { element: 'W', orbital: '5p1/2', be: 47 },\n  { element: 'Re', orbital: '5p1/2', be: 46 },\n  { element: 'Os', orbital: '5p1/2', be: 58 },\n  { element: 'Ir', orbital: '5p1/2', be: 63 },\n  { element: 'Pt', orbital: '5p1/2', be: 66 },\n  { element: 'Au', orbital: '5p1/2', be: 72 },\n  { element: 'Hg', orbital: '5p1/2', be: 81 },\n  { element: 'Tl', orbital: '5p1/2', be: 100 },\n  { element: 'Pb', orbital: '5p1/2', be: 105 },\n  { element: 'Bi', orbital: '5p1/2', be: 117 },\n  { element: 'Po', orbital: '5p1/2', be: 132 },\n  { element: 'At', orbital: '5p1/2', be: 148 },\n  { element: 'Rn', orbital: '5p1/2', be: 164 },\n  { element: 'Fr', orbital: '5p1/2', be: 182 },\n  { element: 'Ra', orbital: '5p1/2', be: 200 },\n  { element: 'Ac', orbital: '5p1/2', be: 215 },\n  { element: 'Th', orbital: '5p1/2', be: 229 },\n  { element: 'In', orbital: '5p3/2', be: 1 },\n  { element: 'Sn', orbital: '5p3/2', be: 1 },\n  { element: 'Sb', orbital: '5p3/2', be: 2 },\n  { element: 'Te', orbital: '5p3/2', be: 2 },\n  { element: 'I', orbital: '5p3/2', be: 3 },\n  { element: 'Xe', orbital: '5p3/2', be: 7 },\n  { element: 'Cs', orbital: '5p3/2', be: 12 },\n  { element: 'Ba', orbital: '5p3/2', be: 15 },\n  { element: 'La', orbital: '5p3/2', be: 15 },\n  { element: 'Ce', orbital: '5p3/2', be: 20 },\n  { element: 'Pr', orbital: '5p3/2', be: 23 },\n  { element: 'Nd', orbital: '5p3/2', be: 22 },\n  { element: 'Pm', orbital: '5p3/2', be: 22 },\n  { element: 'Sm', orbital: '5p3/2', be: 22 },\n  { element: 'Eu', orbital: '5p3/2', be: 22 },\n  { element: 'Gd', orbital: '5p3/2', be: 21 },\n  { element: 'Tb', orbital: '5p3/2', be: 26 },\n  { element: 'Dy', orbital: '5p3/2', be: 26 },\n  { element: 'Ho', orbital: '5p3/2', be: 20 },\n  { element: 'Er', orbital: '5p3/2', be: 29 },\n  { element: 'Tm', orbital: '5p3/2', be: 32 },\n  { element: 'Yb', orbital: '5p3/2', be: 23 },\n  { element: 'Lu', orbital: '5p3/2', be: 28 },\n  { element: 'Hf', orbital: '5p3/2', be: 31 },\n  { element: 'Ta', orbital: '5p3/2', be: 37 },\n  { element: 'W', orbital: '5p3/2', be: 37 },\n  { element: 'Re', orbital: '5p3/2', be: 35 },\n  { element: 'Os', orbital: '5p3/2', be: 46 },\n  { element: 'Ir', orbital: '5p3/2', be: 51 },\n  { element: 'Pt', orbital: '5p3/2', be: 51 },\n  { element: 'Au', orbital: '5p3/2', be: 54 },\n  { element: 'Hg', orbital: '5p3/2', be: 58 },\n  { element: 'Tl', orbital: '5p3/2', be: 76 },\n  { element: 'Pb', orbital: '5p3/2', be: 86 },\n  { element: 'Bi', orbital: '5p3/2', be: 93 },\n  { element: 'Po', orbital: '5p3/2', be: 104 },\n  { element: 'At', orbital: '5p3/2', be: 115 },\n  { element: 'Rn', orbital: '5p3/2', be: 127 },\n  { element: 'Fr', orbital: '5p3/2', be: 140 },\n  { element: 'Ra', orbital: '5p3/2', be: 153 },\n  { element: 'Ac', orbital: '5p3/2', be: 167 },\n  { element: 'Th', orbital: '5p3/2', be: 182 },\n  { element: 'In', orbital: '5p', be: 1 },\n  { element: 'Sn', orbital: '5p', be: 1 },\n  { element: 'Sb', orbital: '5p', be: 2 },\n  { element: 'Te', orbital: '5p', be: 2 },\n  { element: 'I', orbital: '5p', be: 3 },\n  { element: 'Xe', orbital: '5p', be: 7 },\n  { element: 'Cs', orbital: '5p', be: 12 },\n  { element: 'Ba', orbital: '5p', be: 15 },\n  { element: 'La', orbital: '5p', be: 15 },\n  { element: 'Ce', orbital: '5p', be: 20 },\n  { element: 'Pr', orbital: '5p', be: 23 },\n  { element: 'Nd', orbital: '5p', be: 22 },\n  { element: 'Pm', orbital: '5p', be: 22 },\n  { element: 'Sm', orbital: '5p', be: 22 },\n  { element: 'Eu', orbital: '5p', be: 22 },\n  { element: 'Gd', orbital: '5p', be: 21 },\n  { element: 'Tb', orbital: '5p', be: 26 },\n  { element: 'Dy', orbital: '5p', be: 26 },\n  { element: 'Ho', orbital: '5p', be: 20 },\n  { element: 'Er', orbital: '5p', be: 29 },\n  { element: 'Tm', orbital: '5p', be: 32 },\n  { element: 'Yb', orbital: '5p', be: 23 },\n  { element: 'Lu', orbital: '5p', be: 28 },\n  { element: 'Hf', orbital: '5p', be: 31 },\n  { element: 'Ta', orbital: '5p', be: 37 },\n  { element: 'W', orbital: '5p', be: 37 },\n  { element: 'Re', orbital: '5p', be: 35 },\n  { element: 'Os', orbital: '5p', be: 46 },\n  { element: 'Ir', orbital: '5p', be: 51 },\n  { element: 'Pt', orbital: '5p', be: 51 },\n  { element: 'Au', orbital: '5p', be: 54 },\n  { element: 'Hg', orbital: '5p', be: 58 },\n  { element: 'Tl', orbital: '5p', be: 76 },\n  { element: 'Pb', orbital: '5p', be: 86 },\n  { element: 'Bi', orbital: '5p', be: 93 },\n  { element: 'Po', orbital: '5p', be: 104 },\n  { element: 'At', orbital: '5p', be: 115 },\n  { element: 'Rn', orbital: '5p', be: 127 },\n  { element: 'Fr', orbital: '5p', be: 140 },\n  { element: 'Ra', orbital: '5p', be: 153 },\n  { element: 'Ac', orbital: '5p', be: 167 },\n  { element: 'Th', orbital: '5p', be: 182 },\n  { element: 'Lu', orbital: '5d3/2', be: 5 },\n  { element: 'Hf', orbital: '5d3/2', be: 7 },\n  { element: 'Ta', orbital: '5d3/2', be: 6 },\n  { element: 'W', orbital: '5d3/2', be: 6 },\n  { element: 'Re', orbital: '5d3/2', be: 4 },\n  { element: 'Ir', orbital: '5d3/2', be: 4 },\n  { element: 'Pt', orbital: '5d3/2', be: 2 },\n  { element: 'Au', orbital: '5d3/2', be: 3 },\n  { element: 'Hg', orbital: '5d3/2', be: 7 },\n  { element: 'Tl', orbital: '5d3/2', be: 16 },\n  { element: 'Pb', orbital: '5d3/2', be: 22 },\n  { element: 'Bi', orbital: '5d3/2', be: 27 },\n  { element: 'Po', orbital: '5d3/2', be: 31 },\n  { element: 'At', orbital: '5d3/2', be: 40 },\n  { element: 'Rn', orbital: '5d3/2', be: 48 },\n  { element: 'Fr', orbital: '5d3/2', be: 58 },\n  { element: 'Ra', orbital: '5d3/2', be: 68 },\n  { element: 'Ac', orbital: '5d3/2', be: 80 },\n  { element: 'Th', orbital: '5d3/2', be: 95 },\n  { element: 'U', orbital: '5d3/2', be: 104 },\n  { element: 'Lu', orbital: '5d5/2', be: 5 },\n  { element: 'Hf', orbital: '5d5/2', be: 7 },\n  { element: 'Ta', orbital: '5d5/2', be: 6 },\n  { element: 'W', orbital: '5d5/2', be: 6 },\n  { element: 'Re', orbital: '5d5/2', be: 4 },\n  { element: 'Ir', orbital: '5d5/2', be: 4 },\n  { element: 'Pt', orbital: '5d5/2', be: 2 },\n  { element: 'Au', orbital: '5d5/2', be: 3 },\n  { element: 'Hg', orbital: '5d5/2', be: 7 },\n  { element: 'Tl', orbital: '5d5/2', be: 13 },\n  { element: 'Pb', orbital: '5d5/2', be: 20 },\n  { element: 'Bi', orbital: '5d5/2', be: 25 },\n  { element: 'Po', orbital: '5d5/2', be: 31 },\n  { element: 'At', orbital: '5d5/2', be: 40 },\n  { element: 'Rn', orbital: '5d5/2', be: 48 },\n  { element: 'Fr', orbital: '5d5/2', be: 58 },\n  { element: 'Ra', orbital: '5d5/2', be: 68 },\n  { element: 'Ac', orbital: '5d5/2', be: 80 },\n  { element: 'Th', orbital: '5d5/2', be: 88 },\n  { element: 'U', orbital: '5d5/2', be: 96 },\n  { element: 'Lu', orbital: '5d', be: 5 },\n  { element: 'Hf', orbital: '5d', be: 7 },\n  { element: 'Ta', orbital: '5d', be: 6 },\n  { element: 'W', orbital: '5d', be: 6 },\n  { element: 'Re', orbital: '5d', be: 4 },\n  { element: 'Ir', orbital: '5d', be: 4 },\n  { element: 'Pt', orbital: '5d', be: 2 },\n  { element: 'Au', orbital: '5d', be: 3 },\n  { element: 'Hg', orbital: '5d', be: 7 },\n  { element: 'Tl', orbital: '5d', be: 13 },\n  { element: 'Pb', orbital: '5d', be: 20 },\n  { element: 'Bi', orbital: '5d', be: 25 },\n  { element: 'Po', orbital: '5d', be: 31 },\n  { element: 'At', orbital: '5d', be: 40 },\n  { element: 'Rn', orbital: '5d', be: 48 },\n  { element: 'Fr', orbital: '5d', be: 58 },\n  { element: 'Ra', orbital: '5d', be: 68 },\n  { element: 'Ac', orbital: '5d', be: 80 },\n  { element: 'Th', orbital: '5d', be: 88 },\n  { element: 'U', orbital: '5d', be: 96 },\n  { element: 'Pb', orbital: '6s', be: 3 },\n  { element: 'Bi', orbital: '6s', be: 8 },\n  { element: 'Po', orbital: '6s', be: 12 },\n  { element: 'At', orbital: '6s', be: 18 },\n  { element: 'Rn', orbital: '6s', be: 26 },\n  { element: 'Fr', orbital: '6s', be: 34 },\n  { element: 'Ra', orbital: '6s', be: 44 },\n  { element: 'Th', orbital: '6s', be: 60 },\n  { element: 'Pb', orbital: '6p1/2', be: 1 },\n  { element: 'Bi', orbital: '6p1/2', be: 3 },\n  { element: 'Po', orbital: '6p1/2', be: 5 },\n  { element: 'At', orbital: '6p1/2', be: 8 },\n  { element: 'Rn', orbital: '6p1/2', be: 11 },\n  { element: 'Fr', orbital: '6p1/2', be: 15 },\n  { element: 'Ra', orbital: '6p1/2', be: 19 },\n  { element: 'Th', orbital: '6p1/2', be: 49 },\n  { element: 'U', orbital: '6p1/2', be: 28.9 },\n  { element: 'Pb', orbital: '6p3/2', be: 1 },\n  { element: 'Bi', orbital: '6p3/2', be: 3 },\n  { element: 'Po', orbital: '6p3/2', be: 5 },\n  { element: 'At', orbital: '6p3/2', be: 8 },\n  { element: 'Rn', orbital: '6p3/2', be: 11 },\n  { element: 'Fr', orbital: '6p3/2', be: 15 },\n  { element: 'Ra', orbital: '6p3/2', be: 19 },\n  { element: 'Th', orbital: '6p3/2', be: 43 },\n  { element: 'U', orbital: '6p3/2', be: 19 },\n  { element: 'Pb', orbital: '6p', be: 1 },\n  { element: 'Bi', orbital: '6p', be: 3 },\n  { element: 'Po', orbital: '6p', be: 5 },\n  { element: 'At', orbital: '6p', be: 8 },\n  { element: 'Rn', orbital: '6p', be: 11 },\n  { element: 'Fr', orbital: '6p', be: 15 },\n  { element: 'Ra', orbital: '6p', be: 19 },\n  { element: 'Th', orbital: '6p', be: 43 },\n  { element: 'U', orbital: '6p', be: 19 },\n  { element: 'H', orbital: '1s', be: 14 },\n  { element: 'He', orbital: '1s', be: 25 },\n  { element: 'Li', orbital: '1s', be: 55 },\n  { element: 'Be', orbital: '1s', be: 111 },\n  { element: 'B', orbital: '1s', be: 188 },\n  { element: 'C', orbital: '1s', be: 284 },\n  { element: 'N', orbital: '1s', be: 399 },\n  { element: 'O', orbital: '1s', be: 532 },\n  { element: 'F', orbital: '1s', be: 686 },\n  { element: 'Ne', orbital: '1s', be: 867 },\n  { element: 'Na', orbital: '1s', be: 1072 },\n  { element: 'O', orbital: '2s', be: 24 },\n  { element: 'F', orbital: '2s', be: 31 },\n  { element: 'Ne', orbital: '2s', be: 45 },\n  { element: 'Na', orbital: '2s', be: 63 },\n  { element: 'Mg', orbital: '2s', be: 89 },\n  { element: 'Al', orbital: '2s', be: 118 },\n  { element: 'Si', orbital: '2s', be: 149 },\n  { element: 'P', orbital: '2s', be: 189 },\n  { element: 'S', orbital: '2s', be: 229 },\n  { element: 'Cl', orbital: '2s', be: 270 },\n  { element: 'Ar', orbital: '2s', be: 320 },\n  { element: 'K', orbital: '2s', be: 377 },\n  { element: 'Ca', orbital: '2s', be: 438 },\n  { element: 'Sc', orbital: '2s', be: 500 },\n  { element: 'Ti', orbital: '2s', be: 564 },\n  { element: 'V', orbital: '2s', be: 628 },\n  { element: 'Cr', orbital: '2s', be: 695 },\n  { element: 'Mn', orbital: '2s', be: 769 },\n  { element: 'Fe', orbital: '2s', be: 846 },\n  { element: 'Co', orbital: '2s', be: 926 },\n  { element: 'Ni', orbital: '2s', be: 1008 },\n  { element: 'Cu', orbital: '2s', be: 1096 },\n  { element: 'Zn', orbital: '2s', be: 1194 },\n  { element: 'B', orbital: '2p1/2', be: 5 },\n  { element: 'C', orbital: '2p1/2', be: 7 },\n  { element: 'N', orbital: '2p1/2', be: 9 },\n  { element: 'O', orbital: '2p1/2', be: 7 },\n  { element: 'F', orbital: '2p1/2', be: 9 },\n  { element: 'Ne', orbital: '2p1/2', be: 18 },\n  { element: 'Na', orbital: '2p1/2', be: 31 },\n  { element: 'Mg', orbital: '2p1/2', be: 52 },\n  { element: 'Al', orbital: '2p1/2', be: 74 },\n  { element: 'Si', orbital: '2p1/2', be: 100 },\n  { element: 'P', orbital: '2p1/2', be: 136 },\n  { element: 'S', orbital: '2p1/2', be: 165 },\n  { element: 'Cl', orbital: '2p1/2', be: 202 },\n  { element: 'Ar', orbital: '2p1/2', be: 247 },\n  { element: 'K', orbital: '2p1/2', be: 297 },\n  { element: 'Ca', orbital: '2p1/2', be: 350 },\n  { element: 'Sc', orbital: '2p1/2', be: 407 },\n  { element: 'Ti', orbital: '2p1/2', be: 461 },\n  { element: 'V', orbital: '2p1/2', be: 520 },\n  { element: 'Cr', orbital: '2p1/2', be: 584 },\n  { element: 'Mn', orbital: '2p1/2', be: 652 },\n  { element: 'Fe', orbital: '2p1/2', be: 723 },\n  { element: 'Co', orbital: '2p1/2', be: 794 },\n  { element: 'Ni', orbital: '2p1/2', be: 872 },\n  { element: 'Cu', orbital: '2p1/2', be: 951 },\n  { element: 'Zn', orbital: '2p1/2', be: 1044 },\n  { element: 'Ga', orbital: '2p1/2', be: 1143 },\n  { element: 'B', orbital: '2p3/2', be: 5 },\n  { element: 'C', orbital: '2p3/2', be: 7 },\n  { element: 'N', orbital: '2p3/2', be: 9 },\n  { element: 'O', orbital: '2p3/2', be: 7 },\n  { element: 'F', orbital: '2p3/2', be: 9 },\n  { element: 'Ne', orbital: '2p3/2', be: 18 },\n  { element: 'Na', orbital: '2p3/2', be: 31 },\n  { element: 'Mg', orbital: '2p3/2', be: 52 },\n  { element: 'Al', orbital: '2p3/2', be: 73 },\n  { element: 'Si', orbital: '2p3/2', be: 99 },\n  { element: 'P', orbital: '2p3/2', be: 135 },\n  { element: 'S', orbital: '2p3/2', be: 164 },\n  { element: 'Cl', orbital: '2p3/2', be: 200 },\n  { element: 'Ar', orbital: '2p3/2', be: 245 },\n  { element: 'K', orbital: '2p3/2', be: 294 },\n  { element: 'Ca', orbital: '2p3/2', be: 347 },\n  { element: 'Sc', orbital: '2p3/2', be: 402 },\n  { element: 'Ti', orbital: '2p3/2', be: 455 },\n  { element: 'V', orbital: '2p3/2', be: 513 },\n  { element: 'Cr', orbital: '2p3/2', be: 575 },\n  { element: 'Mn', orbital: '2p3/2', be: 641 },\n  { element: 'Fe', orbital: '2p3/2', be: 710 },\n  { element: 'Co', orbital: '2p3/2', be: 779 },\n  { element: 'Ni', orbital: '2p3/2', be: 855 },\n  { element: 'Cu', orbital: '2p3/2', be: 931 },\n  { element: 'Zn', orbital: '2p3/2', be: 1021 },\n  { element: 'Ga', orbital: '2p3/2', be: 1116 },\n  { element: 'Ge', orbital: '2p3/2', be: 1217 },\n  { element: 'B', orbital: '2p', be: 5 },\n  { element: 'C', orbital: '2p', be: 7 },\n  { element: 'N', orbital: '2p', be: 9 },\n  { element: 'O', orbital: '2p', be: 7 },\n  { element: 'F', orbital: '2p', be: 9 },\n  { element: 'Ne', orbital: '2p', be: 18 },\n  { element: 'Na', orbital: '2p', be: 31 },\n  { element: 'Mg', orbital: '2p', be: 52 },\n  { element: 'Al', orbital: '2p', be: 73 },\n  { element: 'Si', orbital: '2p', be: 99 },\n  { element: 'P', orbital: '2p', be: 135 },\n  { element: 'S', orbital: '2p', be: 164 },\n  { element: 'Cl', orbital: '2p', be: 200 },\n  { element: 'Ar', orbital: '2p', be: 245 },\n  { element: 'K', orbital: '2p', be: 294 },\n  { element: 'Ca', orbital: '2p', be: 347 },\n  { element: 'Sc', orbital: '2p', be: 402 },\n  { element: 'Ti', orbital: '2p', be: 455 },\n  { element: 'V', orbital: '2p', be: 513 },\n  { element: 'Cr', orbital: '2p', be: 575 },\n  { element: 'Mn', orbital: '2p', be: 641 },\n  { element: 'Fe', orbital: '2p', be: 710 },\n  { element: 'Co', orbital: '2p', be: 779 },\n  { element: 'Ni', orbital: '2p', be: 855 },\n  { element: 'Cu', orbital: '2p', be: 931 },\n  { element: 'Zn', orbital: '2p', be: 1021 },\n  { element: 'Ga', orbital: '2p', be: 1116 },\n  { element: 'Ge', orbital: '2p', be: 1217 },\n  { element: 'Na', orbital: '3s', be: 1 },\n  { element: 'Mg', orbital: '3s', be: 2 },\n  { element: 'Al', orbital: '3s', be: 1 },\n  { element: 'Si', orbital: '3s', be: 8 },\n  { element: 'P', orbital: '3s', be: 16 },\n  { element: 'S', orbital: '3s', be: 16 },\n  { element: 'Cl', orbital: '3s', be: 18 },\n  { element: 'Ar', orbital: '3s', be: 25 },\n  { element: 'K', orbital: '3s', be: 34 },\n  { element: 'Ca', orbital: '3s', be: 44 },\n  { element: 'Sc', orbital: '3s', be: 54 },\n  { element: 'Ti', orbital: '3s', be: 59 },\n  { element: 'V', orbital: '3s', be: 66 },\n  { element: 'Cr', orbital: '3s', be: 74 },\n  { element: 'Mn', orbital: '3s', be: 84 },\n  { element: 'Fe', orbital: '3s', be: 95 },\n  { element: 'Co', orbital: '3s', be: 101 },\n  { element: 'Ni', orbital: '3s', be: 112 },\n  { element: 'Cu', orbital: '3s', be: 120 },\n  { element: 'Zn', orbital: '3s', be: 137 },\n  { element: 'Ga', orbital: '3s', be: 158 },\n  { element: 'Ge', orbital: '3s', be: 181 },\n  { element: 'As', orbital: '3s', be: 204 },\n  { element: 'Se', orbital: '3s', be: 232 },\n  { element: 'Br', orbital: '3s', be: 257 },\n  { element: 'Kr', orbital: '3s', be: 289 },\n  { element: 'Rb', orbital: '3s', be: 322 },\n  { element: 'Sr', orbital: '3s', be: 358 },\n  { element: 'Y', orbital: '3s', be: 395 },\n  { element: 'Zr', orbital: '3s', be: 431 },\n  { element: 'Nb', orbital: '3s', be: 469 },\n  { element: 'Mo', orbital: '3s', be: 505 },\n  { element: 'Tc', orbital: '3s', be: 544 },\n  { element: 'Ru', orbital: '3s', be: 585 },\n  { element: 'Rh', orbital: '3s', be: 627 },\n  { element: 'Pd', orbital: '3s', be: 670 },\n  { element: 'Ag', orbital: '3s', be: 717 },\n  { element: 'Cd', orbital: '3s', be: 770 },\n  { element: 'In', orbital: '3s', be: 826 },\n  { element: 'Sn', orbital: '3s', be: 884 },\n  { element: 'Sb', orbital: '3s', be: 944 },\n  { element: 'Te', orbital: '3s', be: 1006 },\n  { element: 'I', orbital: '3s', be: 1072 },\n  { element: 'Xe', orbital: '3s', be: 1145 },\n  { element: 'Cs', orbital: '3s', be: 1217 },\n  { element: 'Si', orbital: '3p1/2', be: 3 },\n  { element: 'P', orbital: '3p1/2', be: 10 },\n  { element: 'S', orbital: '3p1/2', be: 8 },\n  { element: 'Cl', orbital: '3p1/2', be: 7 },\n  { element: 'Ar', orbital: '3p1/2', be: 12 },\n  { element: 'K', orbital: '3p1/2', be: 18 },\n  { element: 'Ca', orbital: '3p1/2', be: 26 },\n  { element: 'Sc', orbital: '3p1/2', be: 32 },\n  { element: 'Ti', orbital: '3p1/2', be: 34 },\n  { element: 'V', orbital: '3p1/2', be: 38 },\n  { element: 'Cr', orbital: '3p1/2', be: 43 },\n  { element: 'Mn', orbital: '3p1/2', be: 49 },\n  { element: 'Fe', orbital: '3p1/2', be: 56 },\n  { element: 'Co', orbital: '3p1/2', be: 60 },\n  { element: 'Ni', orbital: '3p1/2', be: 68 },\n  { element: 'Cu', orbital: '3p1/2', be: 74 },\n  { element: 'Zn', orbital: '3p1/2', be: 87 },\n  { element: 'Ga', orbital: '3p1/2', be: 107 },\n  { element: 'Ge', orbital: '3p1/2', be: 129 },\n  { element: 'As', orbital: '3p1/2', be: 147 },\n  { element: 'Se', orbital: '3p1/2', be: 168 },\n  { element: 'Br', orbital: '3p1/2', be: 189 },\n  { element: 'Kr', orbital: '3p1/2', be: 223 },\n  { element: 'Rb', orbital: '3p1/2', be: 248 },\n  { element: 'Sr', orbital: '3p1/2', be: 280 },\n  { element: 'Y', orbital: '3p1/2', be: 313 },\n  { element: 'Zr', orbital: '3p1/2', be: 345 },\n  { element: 'Nb', orbital: '3p1/2', be: 379 },\n  { element: 'Mo', orbital: '3p1/2', be: 410 },\n  { element: 'Tc', orbital: '3p1/2', be: 445 },\n  { element: 'Ru', orbital: '3p1/2', be: 483 },\n  { element: 'Rh', orbital: '3p1/2', be: 521 },\n  { element: 'Pd', orbital: '3p1/2', be: 559 },\n  { element: 'Ag', orbital: '3p1/2', be: 602 },\n  { element: 'Cd', orbital: '3p1/2', be: 651 },\n  { element: 'In', orbital: '3p1/2', be: 702 },\n  { element: 'Sn', orbital: '3p1/2', be: 757 },\n  { element: 'Sb', orbital: '3p1/2', be: 812 },\n  { element: 'Te', orbital: '3p1/2', be: 870 },\n  { element: 'I', orbital: '3p1/2', be: 931 },\n  { element: 'Xe', orbital: '3p1/2', be: 999 },\n  { element: 'Cs', orbital: '3p1/2', be: 1065 },\n  { element: 'Ba', orbital: '3p1/2', be: 1137 },\n  { element: 'La', orbital: '3p1/2', be: 1205 },\n  { element: 'Si', orbital: '3p3/2', be: 3 },\n  { element: 'P', orbital: '3p3/2', be: 10 },\n  { element: 'S', orbital: '3p3/2', be: 8 },\n  { element: 'Cl', orbital: '3p3/2', be: 7 },\n  { element: 'Ar', orbital: '3p3/2', be: 12 },\n  { element: 'K', orbital: '3p3/2', be: 18 },\n  { element: 'Ca', orbital: '3p3/2', be: 26 },\n  { element: 'Sc', orbital: '3p3/2', be: 32 },\n  { element: 'Ti', orbital: '3p3/2', be: 34 },\n  { element: 'V', orbital: '3p3/2', be: 38 },\n  { element: 'Cr', orbital: '3p3/2', be: 43 },\n  { element: 'Mn', orbital: '3p3/2', be: 49 },\n  { element: 'Fe', orbital: '3p3/2', be: 56 },\n  { element: 'Co', orbital: '3p3/2', be: 60 },\n  { element: 'Ni', orbital: '3p3/2', be: 68 },\n  { element: 'Cu', orbital: '3p3/2', be: 74 },\n  { element: 'Zn', orbital: '3p3/2', be: 87 },\n  { element: 'Ga', orbital: '3p3/2', be: 103 },\n  { element: 'Ge', orbital: '3p3/2', be: 122 },\n  { element: 'As', orbital: '3p3/2', be: 141 },\n  { element: 'Se', orbital: '3p3/2', be: 162 },\n  { element: 'Br', orbital: '3p3/2', be: 182 },\n  { element: 'Kr', orbital: '3p3/2', be: 214 },\n  { element: 'Rb', orbital: '3p3/2', be: 239 },\n  { element: 'Sr', orbital: '3p3/2', be: 269 },\n  { element: 'Y', orbital: '3p3/2', be: 301 },\n  { element: 'Zr', orbital: '3p3/2', be: 331 },\n  { element: 'Nb', orbital: '3p3/2', be: 363 },\n  { element: 'Mo', orbital: '3p3/2', be: 393 },\n  { element: 'Tc', orbital: '3p3/2', be: 425 },\n  { element: 'Ru', orbital: '3p3/2', be: 461 },\n  { element: 'Rh', orbital: '3p3/2', be: 496 },\n  { element: 'Pd', orbital: '3p3/2', be: 531 },\n  { element: 'Ag', orbital: '3p3/2', be: 571 },\n  { element: 'Cd', orbital: '3p3/2', be: 617 },\n  { element: 'In', orbital: '3p3/2', be: 664 },\n  { element: 'Sn', orbital: '3p3/2', be: 715 },\n  { element: 'Sb', orbital: '3p3/2', be: 766 },\n  { element: 'Te', orbital: '3p3/2', be: 819 },\n  { element: 'I', orbital: '3p3/2', be: 875 },\n  { element: 'Xe', orbital: '3p3/2', be: 937 },\n  { element: 'Cs', orbital: '3p3/2', be: 998 },\n  { element: 'Ba', orbital: '3p3/2', be: 1063 },\n  { element: 'La', orbital: '3p3/2', be: 1124 },\n  { element: 'Ce', orbital: '3p3/2', be: 1186 },\n  { element: 'Pr', orbital: '3p3/2', be: 1243 },\n  { element: 'Si', orbital: '3p', be: 3 },\n  { element: 'P', orbital: '3p', be: 10 },\n  { element: 'S', orbital: '3p', be: 8 },\n  { element: 'Cl', orbital: '3p', be: 7 },\n  { element: 'Ar', orbital: '3p', be: 12 },\n  { element: 'K', orbital: '3p', be: 18 },\n  { element: 'Ca', orbital: '3p', be: 26 },\n  { element: 'Sc', orbital: '3p', be: 32 },\n  { element: 'Ti', orbital: '3p', be: 34 },\n  { element: 'V', orbital: '3p', be: 38 },\n  { element: 'Cr', orbital: '3p', be: 43 },\n  { element: 'Mn', orbital: '3p', be: 49 },\n  { element: 'Fe', orbital: '3p', be: 56 },\n  { element: 'Co', orbital: '3p', be: 60 },\n  { element: 'Ni', orbital: '3p', be: 68 },\n  { element: 'Cu', orbital: '3p', be: 74 },\n  { element: 'Zn', orbital: '3p', be: 87 },\n  { element: 'Ga', orbital: '3p', be: 103 },\n  { element: 'Ge', orbital: '3p', be: 122 },\n  { element: 'As', orbital: '3p', be: 141 },\n  { element: 'Se', orbital: '3p', be: 162 },\n  { element: 'Br', orbital: '3p', be: 182 },\n  { element: 'Kr', orbital: '3p', be: 214 },\n  { element: 'Rb', orbital: '3p', be: 239 },\n  { element: 'Sr', orbital: '3p', be: 269 },\n  { element: 'Y', orbital: '3p', be: 301 },\n  { element: 'Zr', orbital: '3p', be: 331 },\n  { element: 'Nb', orbital: '3p', be: 363 },\n  { element: 'Mo', orbital: '3p', be: 393 },\n  { element: 'Tc', orbital: '3p', be: 425 },\n  { element: 'Ru', orbital: '3p', be: 461 },\n  { element: 'Rh', orbital: '3p', be: 496 },\n  { element: 'Pd', orbital: '3p', be: 531 },\n  { element: 'Ag', orbital: '3p', be: 571 },\n  { element: 'Cd', orbital: '3p', be: 617 },\n  { element: 'In', orbital: '3p', be: 664 },\n  { element: 'Sn', orbital: '3p', be: 715 },\n  { element: 'Sb', orbital: '3p', be: 766 },\n  { element: 'Te', orbital: '3p', be: 819 },\n  { element: 'I', orbital: '3p', be: 875 },\n  { element: 'Xe', orbital: '3p', be: 937 },\n  { element: 'Cs', orbital: '3p', be: 998 },\n  { element: 'Ba', orbital: '3p', be: 1063 },\n  { element: 'La', orbital: '3p', be: 1124 },\n  { element: 'Ce', orbital: '3p', be: 1186 },\n  { element: 'Pr', orbital: '3p', be: 1243 },\n  { element: 'Sc', orbital: '3d3/2', be: 7 },\n  { element: 'Ti', orbital: '3d3/2', be: 3 },\n  { element: 'V', orbital: '3d3/2', be: 2 },\n  { element: 'Cr', orbital: '3d3/2', be: 2 },\n  { element: 'Mn', orbital: '3d3/2', be: 4 },\n  { element: 'Fe', orbital: '3d3/2', be: 6 },\n  { element: 'Co', orbital: '3d3/2', be: 3 },\n  { element: 'Ni', orbital: '3d3/2', be: 4 },\n  { element: 'Cu', orbital: '3d3/2', be: 2 },\n  { element: 'Zn', orbital: '3d3/2', be: 9 },\n  { element: 'Ga', orbital: '3d3/2', be: 18 },\n  { element: 'Ge', orbital: '3d3/2', be: 29 },\n  { element: 'As', orbital: '3d3/2', be: 41 },\n  { element: 'Se', orbital: '3d3/2', be: 57 },\n  { element: 'Br', orbital: '3d3/2', be: 70 },\n  { element: 'Kr', orbital: '3d3/2', be: 89 },\n  { element: 'Rb', orbital: '3d3/2', be: 112 },\n  { element: 'Sr', orbital: '3d3/2', be: 135 },\n  { element: 'Y', orbital: '3d3/2', be: 160 },\n  { element: 'Zr', orbital: '3d3/2', be: 183 },\n  { element: 'Nb', orbital: '3d3/2', be: 208 },\n  { element: 'Mo', orbital: '3d3/2', be: 230 },\n  { element: 'Tc', orbital: '3d3/2', be: 257 },\n  { element: 'Ru', orbital: '3d3/2', be: 284 },\n  { element: 'Rh', orbital: '3d3/2', be: 312 },\n  { element: 'Pd', orbital: '3d3/2', be: 340 },\n  { element: 'Ag', orbital: '3d3/2', be: 373 },\n  { element: 'Cd', orbital: '3d3/2', be: 411 },\n  { element: 'In', orbital: '3d3/2', be: 451 },\n  { element: 'Sn', orbital: '3d3/2', be: 494 },\n  { element: 'Sb', orbital: '3d3/2', be: 537 },\n  { element: 'Te', orbital: '3d3/2', be: 582 },\n  { element: 'I', orbital: '3d3/2', be: 631 },\n  { element: 'Xe', orbital: '3d3/2', be: 685 },\n  { element: 'Cs', orbital: '3d3/2', be: 740 },\n  { element: 'Ba', orbital: '3d3/2', be: 796 },\n  { element: 'La', orbital: '3d3/2', be: 849 },\n  { element: 'Ce', orbital: '3d3/2', be: 902 },\n  { element: 'Pr', orbital: '3d3/2', be: 951 },\n  { element: 'Nd', orbital: '3d3/2', be: 1000 },\n  { element: 'Pm', orbital: '3d3/2', be: 1052 },\n  { element: 'Sm', orbital: '3d3/2', be: 1107 },\n  { element: 'Eu', orbital: '3d3/2', be: 1161 },\n  { element: 'Gd', orbital: '3d3/2', be: 1218 },\n  { element: 'Sc', orbital: '3d5/2', be: 7 },\n  { element: 'Ti', orbital: '3d5/2', be: 3 },\n  { element: 'V', orbital: '3d5/2', be: 2 },\n  { element: 'Cr', orbital: '3d5/2', be: 2 },\n  { element: 'Mn', orbital: '3d5/2', be: 4 },\n  { element: 'Fe', orbital: '3d5/2', be: 6 },\n  { element: 'Co', orbital: '3d5/2', be: 3 },\n  { element: 'Ni', orbital: '3d5/2', be: 4 },\n  { element: 'Cu', orbital: '3d5/2', be: 2 },\n  { element: 'Zn', orbital: '3d5/2', be: 9 },\n  { element: 'Ga', orbital: '3d5/2', be: 18 },\n  { element: 'Ge', orbital: '3d5/2', be: 29 },\n  { element: 'As', orbital: '3d5/2', be: 41 },\n  { element: 'Se', orbital: '3d5/2', be: 57 },\n  { element: 'Br', orbital: '3d5/2', be: 69 },\n  { element: 'Kr', orbital: '3d5/2', be: 89 },\n  { element: 'Rb', orbital: '3d5/2', be: 111 },\n  { element: 'Sr', orbital: '3d5/2', be: 133 },\n  { element: 'Y', orbital: '3d5/2', be: 158 },\n  { element: 'Zr', orbital: '3d5/2', be: 180 },\n  { element: 'Nb', orbital: '3d5/2', be: 205 },\n  { element: 'Mo', orbital: '3d5/2', be: 227 },\n  { element: 'Tc', orbital: '3d5/2', be: 253 },\n  { element: 'Ru', orbital: '3d5/2', be: 279 },\n  { element: 'Rh', orbital: '3d5/2', be: 307 },\n  { element: 'Pd', orbital: '3d5/2', be: 335 },\n  { element: 'Ag', orbital: '3d5/2', be: 367 },\n  { element: 'Cd', orbital: '3d5/2', be: 404 },\n  { element: 'In', orbital: '3d5/2', be: 443 },\n  { element: 'Sn', orbital: '3d5/2', be: 485 },\n  { element: 'Sb', orbital: '3d5/2', be: 528 },\n  { element: 'Te', orbital: '3d5/2', be: 572 },\n  { element: 'I', orbital: '3d5/2', be: 620 },\n  { element: 'Xe', orbital: '3d5/2', be: 672 },\n  { element: 'Cs', orbital: '3d5/2', be: 726 },\n  { element: 'Ba', orbital: '3d5/2', be: 781 },\n  { element: 'La', orbital: '3d5/2', be: 832 },\n  { element: 'Ce', orbital: '3d5/2', be: 884 },\n  { element: 'Pr', orbital: '3d5/2', be: 931 },\n  { element: 'Nd', orbital: '3d5/2', be: 978 },\n  { element: 'Pm', orbital: '3d5/2', be: 1027 },\n  { element: 'Sm', orbital: '3d5/2', be: 1081 },\n  { element: 'Eu', orbital: '3d5/2', be: 1131 },\n  { element: 'Gd', orbital: '3d5/2', be: 1186 },\n  { element: 'Tb', orbital: '3d5/2', be: 1242 },\n  { element: 'Sc', orbital: '3d', be: 7 },\n  { element: 'Ti', orbital: '3d', be: 3 },\n  { element: 'V', orbital: '3d', be: 2 },\n  { element: 'Cr', orbital: '3d', be: 2 },\n  { element: 'Mn', orbital: '3d', be: 4 },\n  { element: 'Fe', orbital: '3d', be: 6 },\n  { element: 'Co', orbital: '3d', be: 3 },\n  { element: 'Ni', orbital: '3d', be: 4 },\n  { element: 'Cu', orbital: '3d', be: 2 },\n  { element: 'Zn', orbital: '3d', be: 9 },\n  { element: 'Ga', orbital: '3d', be: 18 },\n  { element: 'Ge', orbital: '3d', be: 29 },\n  { element: 'As', orbital: '3d', be: 41 },\n  { element: 'Se', orbital: '3d', be: 57 },\n  { element: 'Br', orbital: '3d', be: 69 },\n  { element: 'Kr', orbital: '3d', be: 89 },\n  { element: 'Rb', orbital: '3d', be: 111 },\n  { element: 'Sr', orbital: '3d', be: 133 },\n  { element: 'Y', orbital: '3d', be: 158 },\n  { element: 'Zr', orbital: '3d', be: 180 },\n  { element: 'Nb', orbital: '3d', be: 205 },\n  { element: 'Mo', orbital: '3d', be: 227 },\n  { element: 'Tc', orbital: '3d', be: 253 },\n  { element: 'Ru', orbital: '3d', be: 279 },\n  { element: 'Rh', orbital: '3d', be: 307 },\n  { element: 'Pd', orbital: '3d', be: 335 },\n  { element: 'Ag', orbital: '3d', be: 367 },\n  { element: 'Cd', orbital: '3d', be: 404 },\n  { element: 'In', orbital: '3d', be: 443 },\n  { element: 'Sn', orbital: '3d', be: 485 },\n  { element: 'Sb', orbital: '3d', be: 528 },\n  { element: 'Te', orbital: '3d', be: 572 },\n  { element: 'I', orbital: '3d', be: 620 },\n  { element: 'Xe', orbital: '3d', be: 672 },\n  { element: 'Cs', orbital: '3d', be: 726 },\n  { element: 'Ba', orbital: '3d', be: 781 },\n  { element: 'La', orbital: '3d', be: 832 },\n  { element: 'Ce', orbital: '3d', be: 884 },\n  { element: 'Pr', orbital: '3d', be: 931 },\n  { element: 'Nd', orbital: '3d', be: 978 },\n  { element: 'Pm', orbital: '3d', be: 1027 },\n  { element: 'Sm', orbital: '3d', be: 1081 },\n  { element: 'Eu', orbital: '3d', be: 1131 },\n  { element: 'Gd', orbital: '3d', be: 1186 },\n  { element: 'Tb', orbital: '3d', be: 1242 },\n  { element: 'Br', orbital: '4s', be: 27 },\n  { element: 'Kr', orbital: '4s', be: 24 },\n  { element: 'Rb', orbital: '4s', be: 30 },\n  { element: 'Sr', orbital: '4s', be: 38 },\n  { element: 'Y', orbital: '4s', be: 46 },\n  { element: 'Zr', orbital: '4s', be: 52 },\n  { element: 'Nb', orbital: '4s', be: 58 },\n  { element: 'Mo', orbital: '4s', be: 62 },\n  { element: 'Tc', orbital: '4s', be: 68 },\n  { element: 'Ru', orbital: '4s', be: 75 },\n  { element: 'Rh', orbital: '4s', be: 81 },\n  { element: 'Pd', orbital: '4s', be: 86 },\n  { element: 'Ag', orbital: '4s', be: 95 },\n  { element: 'Cd', orbital: '4s', be: 108 },\n  { element: 'In', orbital: '4s', be: 122 },\n  { element: 'Sn', orbital: '4s', be: 137 },\n  { element: 'Sb', orbital: '4s', be: 152 },\n  { element: 'Te', orbital: '4s', be: 168 },\n  { element: 'I', orbital: '4s', be: 186 },\n  { element: 'Xe', orbital: '4s', be: 208 },\n  { element: 'Cs', orbital: '4s', be: 231 },\n  { element: 'Ba', orbital: '4s', be: 253 },\n  { element: 'La', orbital: '4s', be: 271 },\n  { element: 'Ce', orbital: '4s', be: 290 },\n  { element: 'Pr', orbital: '4s', be: 305 },\n  { element: 'Nd', orbital: '4s', be: 316 },\n  { element: 'Pm', orbital: '4s', be: 331 },\n  { element: 'Sm', orbital: '4s', be: 347 },\n  { element: 'Eu', orbital: '4s', be: 360 },\n  { element: 'Gd', orbital: '4s', be: 376 },\n  { element: 'Tb', orbital: '4s', be: 398 },\n  { element: 'Dy', orbital: '4s', be: 416 },\n  { element: 'Ho', orbital: '4s', be: 436 },\n  { element: 'Er', orbital: '4s', be: 449 },\n  { element: 'Tm', orbital: '4s', be: 472 },\n  { element: 'Yb', orbital: '4s', be: 487 },\n  { element: 'Lu', orbital: '4s', be: 506 },\n  { element: 'Hf', orbital: '4s', be: 538 },\n  { element: 'Ta', orbital: '4s', be: 566 },\n  { element: 'W', orbital: '4s', be: 595 },\n  { element: 'Re', orbital: '4s', be: 625 },\n  { element: 'Os', orbital: '4s', be: 655 },\n  { element: 'Ir', orbital: '4s', be: 690 },\n  { element: 'Pt', orbital: '4s', be: 724 },\n  { element: 'Au', orbital: '4s', be: 759 },\n  { element: 'Hg', orbital: '4s', be: 800 },\n  { element: 'Tl', orbital: '4s', be: 846 },\n  { element: 'Pb', orbital: '4s', be: 894 },\n  { element: 'Bi', orbital: '4s', be: 939 },\n  { element: 'Po', orbital: '4s', be: 995 },\n  { element: 'At', orbital: '4s', be: 1042 },\n  { element: 'Rn', orbital: '4s', be: 1097 },\n  { element: 'Fr', orbital: '4s', be: 1153 },\n  { element: 'Ra', orbital: '4s', be: 1208 },\n  { element: 'Ga', orbital: '4p1/2', be: 1 },\n  { element: 'Ge', orbital: '4p1/2', be: 3 },\n  { element: 'As', orbital: '4p1/2', be: 3 },\n  { element: 'Se', orbital: '4p1/2', be: 6 },\n  { element: 'Br', orbital: '4p1/2', be: 5 },\n  { element: 'Kr', orbital: '4p1/2', be: 11 },\n  { element: 'Rb', orbital: '4p1/2', be: 15 },\n  { element: 'Sr', orbital: '4p1/2', be: 20 },\n  { element: 'Y', orbital: '4p1/2', be: 26 },\n  { element: 'Zr', orbital: '4p1/2', be: 29 },\n  { element: 'Nb', orbital: '4p1/2', be: 34 },\n  { element: 'Mo', orbital: '4p1/2', be: 35 },\n  { element: 'Tc', orbital: '4p1/2', be: 39 },\n  { element: 'Ru', orbital: '4p1/2', be: 43 },\n  { element: 'Rh', orbital: '4p1/2', be: 48 },\n  { element: 'Pd', orbital: '4p1/2', be: 51 },\n  { element: 'Ag', orbital: '4p1/2', be: 62 },\n  { element: 'Cd', orbital: '4p1/2', be: 67 },\n  { element: 'In', orbital: '4p1/2', be: 77 },\n  { element: 'Sn', orbital: '4p1/2', be: 89 },\n  { element: 'Sb', orbital: '4p1/2', be: 99 },\n  { element: 'Te', orbital: '4p1/2', be: 110 },\n  { element: 'I', orbital: '4p1/2', be: 123 },\n  { element: 'Xe', orbital: '4p1/2', be: 147 },\n  { element: 'Cs', orbital: '4p1/2', be: 172 },\n  { element: 'Ba', orbital: '4p1/2', be: 192 },\n  { element: 'La', orbital: '4p1/2', be: 206 },\n  { element: 'Ce', orbital: '4p1/2', be: 224 },\n  { element: 'Pr', orbital: '4p1/2', be: 237 },\n  { element: 'Nd', orbital: '4p1/2', be: 244 },\n  { element: 'Pm', orbital: '4p1/2', be: 255 },\n  { element: 'Sm', orbital: '4p1/2', be: 267 },\n  { element: 'Eu', orbital: '4p1/2', be: 284 },\n  { element: 'Gd', orbital: '4p1/2', be: 289 },\n  { element: 'Tb', orbital: '4p1/2', be: 311 },\n  { element: 'Dy', orbital: '4p1/2', be: 332 },\n  { element: 'Ho', orbital: '4p1/2', be: 343 },\n  { element: 'Er', orbital: '4p1/2', be: 366 },\n  { element: 'Tm', orbital: '4p1/2', be: 386 },\n  { element: 'Yb', orbital: '4p1/2', be: 396 },\n  { element: 'Lu', orbital: '4p1/2', be: 410 },\n  { element: 'Hf', orbital: '4p1/2', be: 437 },\n  { element: 'Ta', orbital: '4p1/2', be: 465 },\n  { element: 'W', orbital: '4p1/2', be: 492 },\n  { element: 'Re', orbital: '4p1/2', be: 518 },\n  { element: 'Os', orbital: '4p1/2', be: 547 },\n  { element: 'Ir', orbital: '4p1/2', be: 577 },\n  { element: 'Pt', orbital: '4p1/2', be: 608 },\n  { element: 'Au', orbital: '4p1/2', be: 644 },\n  { element: 'Hg', orbital: '4p1/2', be: 677 },\n  { element: 'Tl', orbital: '4p1/2', be: 722 },\n  { element: 'Pb', orbital: '4p1/2', be: 764 },\n  { element: 'Bi', orbital: '4p1/2', be: 806 },\n  { element: 'Po', orbital: '4p1/2', be: 851 },\n  { element: 'At', orbital: '4p1/2', be: 886 },\n  { element: 'Rn', orbital: '4p1/2', be: 929 },\n  { element: 'Fr', orbital: '4p1/2', be: 980 },\n  { element: 'Ra', orbital: '4p1/2', be: 1058 },\n  { element: 'Ac', orbital: '4p1/2', be: 1080 },\n  { element: 'Th', orbital: '4p1/2', be: 1168 },\n  { element: 'Ga', orbital: '4p3/2', be: 1 },\n  { element: 'Ge', orbital: '4p3/2', be: 3 },\n  { element: 'As', orbital: '4p3/2', be: 3 },\n  { element: 'Se', orbital: '4p3/2', be: 6 },\n  { element: 'Br', orbital: '4p3/2', be: 5 },\n  { element: 'Kr', orbital: '4p3/2', be: 11 },\n  { element: 'Rb', orbital: '4p3/2', be: 14 },\n  { element: 'Sr', orbital: '4p3/2', be: 20 },\n  { element: 'Y', orbital: '4p3/2', be: 26 },\n  { element: 'Zr', orbital: '4p3/2', be: 29 },\n  { element: 'Nb', orbital: '4p3/2', be: 34 },\n  { element: 'Mo', orbital: '4p3/2', be: 35 },\n  { element: 'Tc', orbital: '4p3/2', be: 39 },\n  { element: 'Ru', orbital: '4p3/2', be: 43 },\n  { element: 'Rh', orbital: '4p3/2', be: 48 },\n  { element: 'Pd', orbital: '4p3/2', be: 56 },\n  { element: 'Ag', orbital: '4p3/2', be: 56 },\n  { element: 'Cd', orbital: '4p3/2', be: 67 },\n  { element: 'In', orbital: '4p3/2', be: 77 },\n  { element: 'Sn', orbital: '4p3/2', be: 89 },\n  { element: 'Sb', orbital: '4p3/2', be: 99 },\n  { element: 'Te', orbital: '4p3/2', be: 110 },\n  { element: 'I', orbital: '4p3/2', be: 123 },\n  { element: 'Xe', orbital: '4p3/2', be: 147 },\n  { element: 'Cs', orbital: '4p3/2', be: 162 },\n  { element: 'Ba', orbital: '4p3/2', be: 180 },\n  { element: 'La', orbital: '4p3/2', be: 192 },\n  { element: 'Ce', orbital: '4p3/2', be: 208 },\n  { element: 'Pr', orbital: '4p3/2', be: 218 },\n  { element: 'Nd', orbital: '4p3/2', be: 225 },\n  { element: 'Pm', orbital: '4p3/2', be: 237 },\n  { element: 'Sm', orbital: '4p3/2', be: 249 },\n  { element: 'Eu', orbital: '4p3/2', be: 257 },\n  { element: 'Gd', orbital: '4p3/2', be: 271 },\n  { element: 'Tb', orbital: '4p3/2', be: 286 },\n  { element: 'Dy', orbital: '4p3/2', be: 293 },\n  { element: 'Ho', orbital: '4p3/2', be: 306 },\n  { element: 'Er', orbital: '4p3/2', be: 320 },\n  { element: 'Tm', orbital: '4p3/2', be: 337 },\n  { element: 'Yb', orbital: '4p3/2', be: 343 },\n  { element: 'Lu', orbital: '4p3/2', be: 359 },\n  { element: 'Hf', orbital: '4p3/2', be: 380 },\n  { element: 'Ta', orbital: '4p3/2', be: 405 },\n  { element: 'W', orbital: '4p3/2', be: 426 },\n  { element: 'Re', orbital: '4p3/2', be: 445 },\n  { element: 'Os', orbital: '4p3/2', be: 469 },\n  { element: 'Ir', orbital: '4p3/2', be: 495 },\n  { element: 'Pt', orbital: '4p3/2', be: 519 },\n  { element: 'Au', orbital: '4p3/2', be: 546 },\n  { element: 'Hg', orbital: '4p3/2', be: 571 },\n  { element: 'Tl', orbital: '4p3/2', be: 609 },\n  { element: 'Pb', orbital: '4p3/2', be: 645 },\n  { element: 'Bi', orbital: '4p3/2', be: 679 },\n  { element: 'Po', orbital: '4p3/2', be: 705 },\n  { element: 'At', orbital: '4p3/2', be: 740 },\n  { element: 'Rn', orbital: '4p3/2', be: 768 },\n  { element: 'Fr', orbital: '4p3/2', be: 810 },\n  { element: 'Ra', orbital: '4p3/2', be: 879 },\n  { element: 'Ac', orbital: '4p3/2', be: 890 },\n  { element: 'Th', orbital: '4p3/2', be: 968 },\n  { element: 'Ga', orbital: '4p', be: 1 },\n  { element: 'Ge', orbital: '4p', be: 3 },\n  { element: 'As', orbital: '4p', be: 3 },\n  { element: 'Se', orbital: '4p', be: 6 },\n  { element: 'Br', orbital: '4p', be: 5 },\n  { element: 'Kr', orbital: '4p', be: 11 },\n  { element: 'Rb', orbital: '4p', be: 14 },\n  { element: 'Sr', orbital: '4p', be: 20 },\n  { element: 'Y', orbital: '4p', be: 26 },\n  { element: 'Zr', orbital: '4p', be: 29 },\n  { element: 'Nb', orbital: '4p', be: 34 },\n  { element: 'Mo', orbital: '4p', be: 35 },\n  { element: 'Tc', orbital: '4p', be: 39 },\n  { element: 'Ru', orbital: '4p', be: 43 },\n  { element: 'Rh', orbital: '4p', be: 48 },\n  { element: 'Pd', orbital: '4p', be: 56 },\n  { element: 'Ag', orbital: '4p', be: 56 },\n  { element: 'Cd', orbital: '4p', be: 67 },\n  { element: 'In', orbital: '4p', be: 77 },\n  { element: 'Sn', orbital: '4p', be: 89 },\n  { element: 'Sb', orbital: '4p', be: 99 },\n  { element: 'Te', orbital: '4p', be: 110 },\n  { element: 'I', orbital: '4p', be: 123 },\n  { element: 'Xe', orbital: '4p', be: 147 },\n  { element: 'Cs', orbital: '4p', be: 162 },\n  { element: 'Ba', orbital: '4p', be: 180 },\n  { element: 'La', orbital: '4p', be: 192 },\n  { element: 'Ce', orbital: '4p', be: 208 },\n  { element: 'Pr', orbital: '4p', be: 218 },\n  { element: 'Nd', orbital: '4p', be: 225 },\n  { element: 'Pm', orbital: '4p', be: 237 },\n  { element: 'Sm', orbital: '4p', be: 249 },\n  { element: 'Eu', orbital: '4p', be: 257 },\n  { element: 'Gd', orbital: '4p', be: 271 },\n  { element: 'Tb', orbital: '4p', be: 286 },\n  { element: 'Dy', orbital: '4p', be: 293 },\n  { element: 'Ho', orbital: '4p', be: 306 },\n  { element: 'Er', orbital: '4p', be: 320 },\n  { element: 'Tm', orbital: '4p', be: 337 },\n  { element: 'Yb', orbital: '4p', be: 343 },\n  { element: 'Lu', orbital: '4p', be: 359 },\n  { element: 'Hf', orbital: '4p', be: 380 },\n  { element: 'Ta', orbital: '4p', be: 405 },\n  { element: 'W', orbital: '4p', be: 426 },\n  { element: 'Re', orbital: '4p', be: 445 },\n  { element: 'Os', orbital: '4p', be: 469 },\n  { element: 'Ir', orbital: '4p', be: 495 },\n  { element: 'Pt', orbital: '4p', be: 519 },\n  { element: 'Au', orbital: '4p', be: 546 },\n  { element: 'Hg', orbital: '4p', be: 571 },\n  { element: 'Tl', orbital: '4p', be: 609 },\n  { element: 'Pb', orbital: '4p', be: 645 },\n  { element: 'Bi', orbital: '4p', be: 679 },\n  { element: 'Po', orbital: '4p', be: 705 },\n  { element: 'At', orbital: '4p', be: 740 },\n  { element: 'Rn', orbital: '4p', be: 768 },\n  { element: 'Fr', orbital: '4p', be: 810 },\n  { element: 'Ra', orbital: '4p', be: 879 },\n  { element: 'Ac', orbital: '4p', be: 890 },\n  { element: 'Th', orbital: '4p', be: 968 },\n  { element: 'Y', orbital: '4d3/2', be: 3 },\n  { element: 'Zr', orbital: '4d3/2', be: 3 },\n  { element: 'Nb', orbital: '4d3/2', be: 4 },\n  { element: 'Mo', orbital: '4d3/2', be: 2 },\n  { element: 'Tc', orbital: '4d3/2', be: 2 },\n  { element: 'Ru', orbital: '4d3/2', be: 2 },\n  { element: 'Rh', orbital: '4d3/2', be: 3 },\n  { element: 'Pd', orbital: '4d3/2', be: 1 },\n  { element: 'Ag', orbital: '4d3/2', be: 3 },\n  { element: 'Cd', orbital: '4d3/2', be: 9 },\n  { element: 'In', orbital: '4d3/2', be: 16 },\n  { element: 'Sn', orbital: '4d3/2', be: 24 },\n  { element: 'Sb', orbital: '4d3/2', be: 32 },\n  { element: 'Te', orbital: '4d3/2', be: 40 },\n  { element: 'I', orbital: '4d3/2', be: 50 },\n  { element: 'Xe', orbital: '4d3/2', be: 63 },\n  { element: 'Cs', orbital: '4d3/2', be: 79 },\n  { element: 'Ba', orbital: '4d3/2', be: 93 },\n  { element: 'La', orbital: '4d3/2', be: 99 },\n  { element: 'Ce', orbital: '4d3/2', be: 111 },\n  { element: 'Pr', orbital: '4d3/2', be: 114 },\n  { element: 'Nd', orbital: '4d3/2', be: 118 },\n  { element: 'Pm', orbital: '4d3/2', be: 121 },\n  { element: 'Sm', orbital: '4d3/2', be: 130 },\n  { element: 'Eu', orbital: '4d3/2', be: 134 },\n  { element: 'Gd', orbital: '4d3/2', be: 141 },\n  { element: 'Tb', orbital: '4d3/2', be: 148 },\n  { element: 'Dy', orbital: '4d3/2', be: 154 },\n  { element: 'Ho', orbital: '4d3/2', be: 161 },\n  { element: 'Er', orbital: '4d3/2', be: 177 },\n  { element: 'Tm', orbital: '4d3/2', be: 180 },\n  { element: 'Yb', orbital: '4d3/2', be: 197 },\n  { element: 'Lu', orbital: '4d3/2', be: 205 },\n  { element: 'Hf', orbital: '4d3/2', be: 224 },\n  { element: 'Ta', orbital: '4d3/2', be: 242 },\n  { element: 'W', orbital: '4d3/2', be: 259 },\n  { element: 'Re', orbital: '4d3/2', be: 274 },\n  { element: 'Os', orbital: '4d3/2', be: 290 },\n  { element: 'Ir', orbital: '4d3/2', be: 312 },\n  { element: 'Pt', orbital: '4d3/2', be: 331 },\n  { element: 'Au', orbital: '4d3/2', be: 352 },\n  { element: 'Hg', orbital: '4d3/2', be: 379 },\n  { element: 'Tl', orbital: '4d3/2', be: 407 },\n  { element: 'Pb', orbital: '4d3/2', be: 435 },\n  { element: 'Bi', orbital: '4d3/2', be: 464 },\n  { element: 'Po', orbital: '4d3/2', be: 500 },\n  { element: 'At', orbital: '4d3/2', be: 533 },\n  { element: 'Rn', orbital: '4d3/2', be: 567 },\n  { element: 'Fr', orbital: '4d3/2', be: 603 },\n  { element: 'Ra', orbital: '4d3/2', be: 636 },\n  { element: 'Ac', orbital: '4d3/2', be: 675 },\n  { element: 'Th', orbital: '4d3/2', be: 714 },\n  { element: 'U', orbital: '4d3/2', be: 781 },\n  { element: 'Y', orbital: '4d5/2', be: 3 },\n  { element: 'Zr', orbital: '4d5/2', be: 3 },\n  { element: 'Nb', orbital: '4d5/2', be: 4 },\n  { element: 'Mo', orbital: '4d5/2', be: 2 },\n  { element: 'Tc', orbital: '4d5/2', be: 2 },\n  { element: 'Ru', orbital: '4d5/2', be: 2 },\n  { element: 'Rh', orbital: '4d5/2', be: 3 },\n  { element: 'Pd', orbital: '4d5/2', be: 1 },\n  { element: 'Ag', orbital: '4d5/2', be: 3 },\n  { element: 'Cd', orbital: '4d5/2', be: 9 },\n  { element: 'In', orbital: '4d5/2', be: 16 },\n  { element: 'Sn', orbital: '4d5/2', be: 24 },\n  { element: 'Sb', orbital: '4d5/2', be: 32 },\n  { element: 'Te', orbital: '4d5/2', be: 40 },\n  { element: 'I', orbital: '4d5/2', be: 50 },\n  { element: 'Xe', orbital: '4d5/2', be: 63 },\n  { element: 'Cs', orbital: '4d5/2', be: 77 },\n  { element: 'Ba', orbital: '4d5/2', be: 90 },\n  { element: 'La', orbital: '4d5/2', be: 99 },\n  { element: 'Ce', orbital: '4d5/2', be: 111 },\n  { element: 'Pr', orbital: '4d5/2', be: 114 },\n  { element: 'Nd', orbital: '4d5/2', be: 118 },\n  { element: 'Pm', orbital: '4d5/2', be: 121 },\n  { element: 'Sm', orbital: '4d5/2', be: 130 },\n  { element: 'Eu', orbital: '4d5/2', be: 134 },\n  { element: 'Gd', orbital: '4d5/2', be: 141 },\n  { element: 'Tb', orbital: '4d5/2', be: 148 },\n  { element: 'Dy', orbital: '4d5/2', be: 154 },\n  { element: 'Ho', orbital: '4d5/2', be: 161 },\n  { element: 'Er', orbital: '4d5/2', be: 168 },\n  { element: 'Tm', orbital: '4d5/2', be: 180 },\n  { element: 'Yb', orbital: '4d5/2', be: 184 },\n  { element: 'Lu', orbital: '4d5/2', be: 195 },\n  { element: 'Hf', orbital: '4d5/2', be: 214 },\n  { element: 'Ta', orbital: '4d5/2', be: 230 },\n  { element: 'W', orbital: '4d5/2', be: 246 },\n  { element: 'Re', orbital: '4d5/2', be: 260 },\n  { element: 'Os', orbital: '4d5/2', be: 273 },\n  { element: 'Ir', orbital: '4d5/2', be: 295 },\n  { element: 'Pt', orbital: '4d5/2', be: 314 },\n  { element: 'Au', orbital: '4d5/2', be: 334 },\n  { element: 'Hg', orbital: '4d5/2', be: 360 },\n  { element: 'Tl', orbital: '4d5/2', be: 386 },\n  { element: 'Pb', orbital: '4d5/2', be: 413 },\n  { element: 'Bi', orbital: '4d5/2', be: 440 },\n  { element: 'Po', orbital: '4d5/2', be: 473 },\n  { element: 'At', orbital: '4d5/2', be: 507 },\n  { element: 'Rn', orbital: '4d5/2', be: 541 },\n  { element: 'Fr', orbital: '4d5/2', be: 577 },\n  { element: 'Ra', orbital: '4d5/2', be: 603 },\n  { element: 'Ac', orbital: '4d5/2', be: 639 },\n  { element: 'Th', orbital: '4d5/2', be: 677 },\n  { element: 'U', orbital: '4d5/2', be: 739 },\n  { element: 'Y', orbital: '4d', be: 3 },\n  { element: 'Zr', orbital: '4d', be: 3 },\n  { element: 'Nb', orbital: '4d', be: 4 },\n  { element: 'Mo', orbital: '4d', be: 2 },\n  { element: 'Tc', orbital: '4d', be: 2 },\n  { element: 'Ru', orbital: '4d', be: 2 },\n  { element: 'Rh', orbital: '4d', be: 3 },\n  { element: 'Pd', orbital: '4d', be: 1 },\n  { element: 'Ag', orbital: '4d', be: 3 },\n  { element: 'Cd', orbital: '4d', be: 9 },\n  { element: 'In', orbital: '4d', be: 16 },\n  { element: 'Sn', orbital: '4d', be: 24 },\n  { element: 'Sb', orbital: '4d', be: 32 },\n  { element: 'Te', orbital: '4d', be: 40 },\n  { element: 'I', orbital: '4d', be: 50 },\n  { element: 'Xe', orbital: '4d', be: 63 },\n  { element: 'Cs', orbital: '4d', be: 77 },\n  { element: 'Ba', orbital: '4d', be: 90 },\n  { element: 'La', orbital: '4d', be: 99 },\n  { element: 'Ce', orbital: '4d', be: 111 },\n  { element: 'Pr', orbital: '4d', be: 114 },\n  { element: 'Nd', orbital: '4d', be: 118 },\n  { element: 'Pm', orbital: '4d', be: 121 },\n  { element: 'Sm', orbital: '4d', be: 130 },\n  { element: 'Eu', orbital: '4d', be: 134 },\n  { element: 'Gd', orbital: '4d', be: 141 },\n  { element: 'Tb', orbital: '4d', be: 148 },\n  { element: 'Dy', orbital: '4d', be: 154 },\n  { element: 'Ho', orbital: '4d', be: 161 },\n  { element: 'Er', orbital: '4d', be: 168 },\n  { element: 'Tm', orbital: '4d', be: 180 },\n  { element: 'Yb', orbital: '4d', be: 184 },\n  { element: 'Lu', orbital: '4d', be: 195 },\n  { element: 'Hf', orbital: '4d', be: 214 },\n  { element: 'Ta', orbital: '4d', be: 230 },\n  { element: 'W', orbital: '4d', be: 246 },\n  { element: 'Re', orbital: '4d', be: 260 },\n  { element: 'Os', orbital: '4d', be: 273 },\n  { element: 'Ir', orbital: '4d', be: 295 },\n  { element: 'Pt', orbital: '4d', be: 314 },\n  { element: 'Au', orbital: '4d', be: 334 },\n  { element: 'Hg', orbital: '4d', be: 360 },\n  { element: 'Tl', orbital: '4d', be: 386 },\n  { element: 'Pb', orbital: '4d', be: 413 },\n  { element: 'Bi', orbital: '4d', be: 440 },\n  { element: 'Po', orbital: '4d', be: 473 },\n  { element: 'At', orbital: '4d', be: 507 },\n  { element: 'Rn', orbital: '4d', be: 541 },\n  { element: 'Fr', orbital: '4d', be: 577 },\n  { element: 'Ra', orbital: '4d', be: 603 },\n  { element: 'Ac', orbital: '4d', be: 639 },\n  { element: 'Th', orbital: '4d', be: 677 },\n  { element: 'U', orbital: '4d', be: 739 },\n  { element: 'Ce', orbital: '4f5/2', be: 1 },\n  { element: 'Pr', orbital: '4f5/2', be: 2 },\n  { element: 'Nd', orbital: '4f5/2', be: 2 },\n  { element: 'Pm', orbital: '4f5/2', be: 4 },\n  { element: 'Sm', orbital: '4f5/2', be: 7 },\n  { element: 'Tb', orbital: '4f5/2', be: 3 },\n  { element: 'Dy', orbital: '4f5/2', be: 4 },\n  { element: 'Ho', orbital: '4f5/2', be: 4 },\n  { element: 'Er', orbital: '4f5/2', be: 4 },\n  { element: 'Tm', orbital: '4f5/2', be: 5 },\n  { element: 'Yb', orbital: '4f5/2', be: 6 },\n  { element: 'Lu', orbital: '4f5/2', be: 7 },\n  { element: 'Hf', orbital: '4f5/2', be: 19 },\n  { element: 'Ta', orbital: '4f5/2', be: 27 },\n  { element: 'W', orbital: '4f5/2', be: 37 },\n  { element: 'Re', orbital: '4f5/2', be: 47 },\n  { element: 'Os', orbital: '4f5/2', be: 52 },\n  { element: 'Ir', orbital: '4f5/2', be: 63 },\n  { element: 'Pt', orbital: '4f5/2', be: 74 },\n  { element: 'Au', orbital: '4f5/2', be: 87 },\n  { element: 'Hg', orbital: '4f5/2', be: 103 },\n  { element: 'Tl', orbital: '4f5/2', be: 122 },\n  { element: 'Pb', orbital: '4f5/2', be: 143 },\n  { element: 'Bi', orbital: '4f5/2', be: 163 },\n  { element: 'Po', orbital: '4f5/2', be: 184 },\n  { element: 'At', orbital: '4f5/2', be: 210 },\n  { element: 'Rn', orbital: '4f5/2', be: 238 },\n  { element: 'Fr', orbital: '4f5/2', be: 268 },\n  { element: 'Ra', orbital: '4f5/2', be: 299 },\n  { element: 'Ac', orbital: '4f5/2', be: 319 },\n  { element: 'Th', orbital: '4f5/2', be: 344 },\n  { element: 'U', orbital: '4f5/2', be: 391 },\n  { element: 'Ce', orbital: '4f7/2', be: 1 },\n  { element: 'Pr', orbital: '4f7/2', be: 2 },\n  { element: 'Nd', orbital: '4f7/2', be: 2 },\n  { element: 'Pm', orbital: '4f7/2', be: 4 },\n  { element: 'Sm', orbital: '4f7/2', be: 7 },\n  { element: 'Tb', orbital: '4f7/2', be: 3 },\n  { element: 'Dy', orbital: '4f7/2', be: 4 },\n  { element: 'Ho', orbital: '4f7/2', be: 4 },\n  { element: 'Er', orbital: '4f7/2', be: 4 },\n  { element: 'Tm', orbital: '4f7/2', be: 5 },\n  { element: 'Yb', orbital: '4f7/2', be: 6 },\n  { element: 'Lu', orbital: '4f7/2', be: 7 },\n  { element: 'Hf', orbital: '4f7/2', be: 18 },\n  { element: 'Ta', orbital: '4f7/2', be: 25 },\n  { element: 'W', orbital: '4f7/2', be: 34 },\n  { element: 'Re', orbital: '4f7/2', be: 45 },\n  { element: 'Os', orbital: '4f7/2', be: 50 },\n  { element: 'Ir', orbital: '4f7/2', be: 60 },\n  { element: 'Pt', orbital: '4f7/2', be: 70 },\n  { element: 'Au', orbital: '4f7/2', be: 83 },\n  { element: 'Hg', orbital: '4f7/2', be: 99 },\n  { element: 'Tl', orbital: '4f7/2', be: 118 },\n  { element: 'Pb', orbital: '4f7/2', be: 138 },\n  { element: 'Bi', orbital: '4f7/2', be: 158 },\n  { element: 'Po', orbital: '4f7/2', be: 184 },\n  { element: 'At', orbital: '4f7/2', be: 210 },\n  { element: 'Rn', orbital: '4f7/2', be: 238 },\n  { element: 'Fr', orbital: '4f7/2', be: 268 },\n  { element: 'Ra', orbital: '4f7/2', be: 299 },\n  { element: 'Ac', orbital: '4f7/2', be: 319 },\n  { element: 'Th', orbital: '4f7/2', be: 335 },\n  { element: 'U', orbital: '4f7/2', be: 380 },\n  { element: 'Ce', orbital: '4f', be: 1 },\n  { element: 'Pr', orbital: '4f', be: 2 },\n  { element: 'Nd', orbital: '4f', be: 2 },\n  { element: 'Pm', orbital: '4f', be: 4 },\n  { element: 'Sm', orbital: '4f', be: 7 },\n  { element: 'Tb', orbital: '4f', be: 3 },\n  { element: 'Dy', orbital: '4f', be: 4 },\n  { element: 'Ho', orbital: '4f', be: 4 },\n  { element: 'Er', orbital: '4f', be: 4 },\n  { element: 'Tm', orbital: '4f', be: 5 },\n  { element: 'Yb', orbital: '4f', be: 6 },\n  { element: 'Lu', orbital: '4f', be: 7 },\n  { element: 'Hf', orbital: '4f', be: 18 },\n  { element: 'Ta', orbital: '4f', be: 25 },\n  { element: 'W', orbital: '4f', be: 34 },\n  { element: 'Re', orbital: '4f', be: 45 },\n  { element: 'Os', orbital: '4f', be: 50 },\n  { element: 'Ir', orbital: '4f', be: 60 },\n  { element: 'Pt', orbital: '4f', be: 70 },\n  { element: 'Au', orbital: '4f', be: 83 },\n  { element: 'Hg', orbital: '4f', be: 99 },\n  { element: 'Tl', orbital: '4f', be: 118 },\n  { element: 'Pb', orbital: '4f', be: 138 },\n  { element: 'Bi', orbital: '4f', be: 158 },\n  { element: 'Po', orbital: '4f', be: 184 },\n  { element: 'At', orbital: '4f', be: 210 },\n  { element: 'Rn', orbital: '4f', be: 238 },\n  { element: 'Fr', orbital: '4f', be: 268 },\n  { element: 'Ra', orbital: '4f', be: 299 },\n  { element: 'Ac', orbital: '4f', be: 319 },\n  { element: 'Th', orbital: '4f', be: 335 },\n  { element: 'U', orbital: '4f', be: 380 },\n  { element: 'Sn', orbital: '5s', be: 1 },\n  { element: 'Sb', orbital: '5s', be: 7 },\n  { element: 'Te', orbital: '5s', be: 12 },\n  { element: 'I', orbital: '5s', be: 14 },\n  { element: 'Xe', orbital: '5s', be: 18 },\n  { element: 'Cs', orbital: '5s', be: 23 },\n  { element: 'Ba', orbital: '5s', be: 40 },\n  { element: 'La', orbital: '5s', be: 33 },\n  { element: 'Ce', orbital: '5s', be: 38 },\n  { element: 'Pr', orbital: '5s', be: 38 },\n  { element: 'Nd', orbital: '5s', be: 38 },\n  { element: 'Pm', orbital: '5s', be: 38 },\n  { element: 'Sm', orbital: '5s', be: 39 },\n  { element: 'Eu', orbital: '5s', be: 32 },\n  { element: 'Gd', orbital: '5s', be: 36 },\n  { element: 'Tb', orbital: '5s', be: 40 },\n  { element: 'Dy', orbital: '5s', be: 63 },\n  { element: 'Ho', orbital: '5s', be: 51 },\n  { element: 'Er', orbital: '5s', be: 60 },\n  { element: 'Tm', orbital: '5s', be: 53 },\n  { element: 'Yb', orbital: '5s', be: 53 },\n  { element: 'Lu', orbital: '5s', be: 57 },\n  { element: 'Hf', orbital: '5s', be: 65 },\n  { element: 'Ta', orbital: '5s', be: 71 },\n  { element: 'W', orbital: '5s', be: 77 },\n  { element: 'Re', orbital: '5s', be: 83 },\n  { element: 'Os', orbital: '5s', be: 84 },\n  { element: 'Ir', orbital: '5s', be: 96 },\n  { element: 'Pt', orbital: '5s', be: 102 },\n  { element: 'Au', orbital: '5s', be: 108 },\n  { element: 'Hg', orbital: '5s', be: 120 },\n  { element: 'Tl', orbital: '5s', be: 137 },\n  { element: 'Pb', orbital: '5s', be: 148 },\n  { element: 'Bi', orbital: '5s', be: 160 },\n  { element: 'Po', orbital: '5s', be: 177 },\n  { element: 'At', orbital: '5s', be: 195 },\n  { element: 'Rn', orbital: '5s', be: 214 },\n  { element: 'Fr', orbital: '5s', be: 234 },\n  { element: 'Ra', orbital: '5s', be: 254 },\n  { element: 'Ac', orbital: '5s', be: 272 },\n  { element: 'Th', orbital: '5s', be: 290 },\n  { element: 'In', orbital: '5p1/2', be: 1 },\n  { element: 'Sn', orbital: '5p1/2', be: 1 },\n  { element: 'Sb', orbital: '5p1/2', be: 2 },\n  { element: 'Te', orbital: '5p1/2', be: 2 },\n  { element: 'I', orbital: '5p1/2', be: 3 },\n  { element: 'Xe', orbital: '5p1/2', be: 7 },\n  { element: 'Cs', orbital: '5p1/2', be: 13 },\n  { element: 'Ba', orbital: '5p1/2', be: 17 },\n  { element: 'La', orbital: '5p1/2', be: 15 },\n  { element: 'Ce', orbital: '5p1/2', be: 20 },\n  { element: 'Pr', orbital: '5p1/2', be: 23 },\n  { element: 'Nd', orbital: '5p1/2', be: 22 },\n  { element: 'Pm', orbital: '5p1/2', be: 22 },\n  { element: 'Sm', orbital: '5p1/2', be: 22 },\n  { element: 'Eu', orbital: '5p1/2', be: 22 },\n  { element: 'Gd', orbital: '5p1/2', be: 21 },\n  { element: 'Tb', orbital: '5p1/2', be: 26 },\n  { element: 'Dy', orbital: '5p1/2', be: 26 },\n  { element: 'Ho', orbital: '5p1/2', be: 20 },\n  { element: 'Er', orbital: '5p1/2', be: 29 },\n  { element: 'Tm', orbital: '5p1/2', be: 32 },\n  { element: 'Yb', orbital: '5p1/2', be: 23 },\n  { element: 'Lu', orbital: '5p1/2', be: 28 },\n  { element: 'Hf', orbital: '5p1/2', be: 38 },\n  { element: 'Ta', orbital: '5p1/2', be: 45 },\n  { element: 'W', orbital: '5p1/2', be: 47 },\n  { element: 'Re', orbital: '5p1/2', be: 46 },\n  { element: 'Os', orbital: '5p1/2', be: 58 },\n  { element: 'Ir', orbital: '5p1/2', be: 63 },\n  { element: 'Pt', orbital: '5p1/2', be: 66 },\n  { element: 'Au', orbital: '5p1/2', be: 72 },\n  { element: 'Hg', orbital: '5p1/2', be: 81 },\n  { element: 'Tl', orbital: '5p1/2', be: 100 },\n  { element: 'Pb', orbital: '5p1/2', be: 105 },\n  { element: 'Bi', orbital: '5p1/2', be: 117 },\n  { element: 'Po', orbital: '5p1/2', be: 132 },\n  { element: 'At', orbital: '5p1/2', be: 148 },\n  { element: 'Rn', orbital: '5p1/2', be: 164 },\n  { element: 'Fr', orbital: '5p1/2', be: 182 },\n  { element: 'Ra', orbital: '5p1/2', be: 200 },\n  { element: 'Ac', orbital: '5p1/2', be: 215 },\n  { element: 'Th', orbital: '5p1/2', be: 229 },\n  { element: 'In', orbital: '5p3/2', be: 1 },\n  { element: 'Sn', orbital: '5p3/2', be: 1 },\n  { element: 'Sb', orbital: '5p3/2', be: 2 },\n  { element: 'Te', orbital: '5p3/2', be: 2 },\n  { element: 'I', orbital: '5p3/2', be: 3 },\n  { element: 'Xe', orbital: '5p3/2', be: 7 },\n  { element: 'Cs', orbital: '5p3/2', be: 12 },\n  { element: 'Ba', orbital: '5p3/2', be: 15 },\n  { element: 'La', orbital: '5p3/2', be: 15 },\n  { element: 'Ce', orbital: '5p3/2', be: 20 },\n  { element: 'Pr', orbital: '5p3/2', be: 23 },\n  { element: 'Nd', orbital: '5p3/2', be: 22 },\n  { element: 'Pm', orbital: '5p3/2', be: 22 },\n  { element: 'Sm', orbital: '5p3/2', be: 22 },\n  { element: 'Eu', orbital: '5p3/2', be: 22 },\n  { element: 'Gd', orbital: '5p3/2', be: 21 },\n  { element: 'Tb', orbital: '5p3/2', be: 26 },\n  { element: 'Dy', orbital: '5p3/2', be: 26 },\n  { element: 'Ho', orbital: '5p3/2', be: 20 },\n  { element: 'Er', orbital: '5p3/2', be: 29 },\n  { element: 'Tm', orbital: '5p3/2', be: 32 },\n  { element: 'Yb', orbital: '5p3/2', be: 23 },\n  { element: 'Lu', orbital: '5p3/2', be: 28 },\n  { element: 'Hf', orbital: '5p3/2', be: 31 },\n  { element: 'Ta', orbital: '5p3/2', be: 37 },\n  { element: 'W', orbital: '5p3/2', be: 37 },\n  { element: 'Re', orbital: '5p3/2', be: 35 },\n  { element: 'Os', orbital: '5p3/2', be: 46 },\n  { element: 'Ir', orbital: '5p3/2', be: 51 },\n  { element: 'Pt', orbital: '5p3/2', be: 51 },\n  { element: 'Au', orbital: '5p3/2', be: 54 },\n  { element: 'Hg', orbital: '5p3/2', be: 58 },\n  { element: 'Tl', orbital: '5p3/2', be: 76 },\n  { element: 'Pb', orbital: '5p3/2', be: 86 },\n  { element: 'Bi', orbital: '5p3/2', be: 93 },\n  { element: 'Po', orbital: '5p3/2', be: 104 },\n  { element: 'At', orbital: '5p3/2', be: 115 },\n  { element: 'Rn', orbital: '5p3/2', be: 127 },\n  { element: 'Fr', orbital: '5p3/2', be: 140 },\n  { element: 'Ra', orbital: '5p3/2', be: 153 },\n  { element: 'Ac', orbital: '5p3/2', be: 167 },\n  { element: 'Th', orbital: '5p3/2', be: 182 },\n  { element: 'In', orbital: '5p', be: 1 },\n  { element: 'Sn', orbital: '5p', be: 1 },\n  { element: 'Sb', orbital: '5p', be: 2 },\n  { element: 'Te', orbital: '5p', be: 2 },\n  { element: 'I', orbital: '5p', be: 3 },\n  { element: 'Xe', orbital: '5p', be: 7 },\n  { element: 'Cs', orbital: '5p', be: 12 },\n  { element: 'Ba', orbital: '5p', be: 15 },\n  { element: 'La', orbital: '5p', be: 15 },\n  { element: 'Ce', orbital: '5p', be: 20 },\n  { element: 'Pr', orbital: '5p', be: 23 },\n  { element: 'Nd', orbital: '5p', be: 22 },\n  { element: 'Pm', orbital: '5p', be: 22 },\n  { element: 'Sm', orbital: '5p', be: 22 },\n  { element: 'Eu', orbital: '5p', be: 22 },\n  { element: 'Gd', orbital: '5p', be: 21 },\n  { element: 'Tb', orbital: '5p', be: 26 },\n  { element: 'Dy', orbital: '5p', be: 26 },\n  { element: 'Ho', orbital: '5p', be: 20 },\n  { element: 'Er', orbital: '5p', be: 29 },\n  { element: 'Tm', orbital: '5p', be: 32 },\n  { element: 'Yb', orbital: '5p', be: 23 },\n  { element: 'Lu', orbital: '5p', be: 28 },\n  { element: 'Hf', orbital: '5p', be: 31 },\n  { element: 'Ta', orbital: '5p', be: 37 },\n  { element: 'W', orbital: '5p', be: 37 },\n  { element: 'Re', orbital: '5p', be: 35 },\n  { element: 'Os', orbital: '5p', be: 46 },\n  { element: 'Ir', orbital: '5p', be: 51 },\n  { element: 'Pt', orbital: '5p', be: 51 },\n  { element: 'Au', orbital: '5p', be: 54 },\n  { element: 'Hg', orbital: '5p', be: 58 },\n  { element: 'Tl', orbital: '5p', be: 76 },\n  { element: 'Pb', orbital: '5p', be: 86 },\n  { element: 'Bi', orbital: '5p', be: 93 },\n  { element: 'Po', orbital: '5p', be: 104 },\n  { element: 'At', orbital: '5p', be: 115 },\n  { element: 'Rn', orbital: '5p', be: 127 },\n  { element: 'Fr', orbital: '5p', be: 140 },\n  { element: 'Ra', orbital: '5p', be: 153 },\n  { element: 'Ac', orbital: '5p', be: 167 },\n  { element: 'Th', orbital: '5p', be: 182 },\n  { element: 'Lu', orbital: '5d3/2', be: 5 },\n  { element: 'Hf', orbital: '5d3/2', be: 7 },\n  { element: 'Ta', orbital: '5d3/2', be: 6 },\n  { element: 'W', orbital: '5d3/2', be: 6 },\n  { element: 'Re', orbital: '5d3/2', be: 4 },\n  { element: 'Ir', orbital: '5d3/2', be: 4 },\n  { element: 'Pt', orbital: '5d3/2', be: 2 },\n  { element: 'Au', orbital: '5d3/2', be: 3 },\n  { element: 'Hg', orbital: '5d3/2', be: 7 },\n  { element: 'Tl', orbital: '5d3/2', be: 16 },\n  { element: 'Pb', orbital: '5d3/2', be: 22 },\n  { element: 'Bi', orbital: '5d3/2', be: 27 },\n  { element: 'Po', orbital: '5d3/2', be: 31 },\n  { element: 'At', orbital: '5d3/2', be: 40 },\n  { element: 'Rn', orbital: '5d3/2', be: 48 },\n  { element: 'Fr', orbital: '5d3/2', be: 58 },\n  { element: 'Ra', orbital: '5d3/2', be: 68 },\n  { element: 'Ac', orbital: '5d3/2', be: 80 },\n  { element: 'Th', orbital: '5d3/2', be: 95 },\n  { element: 'U', orbital: '5d3/2', be: 104 },\n  { element: 'Lu', orbital: '5d5/2', be: 5 },\n  { element: 'Hf', orbital: '5d5/2', be: 7 },\n  { element: 'Ta', orbital: '5d5/2', be: 6 },\n  { element: 'W', orbital: '5d5/2', be: 6 },\n  { element: 'Re', orbital: '5d5/2', be: 4 },\n  { element: 'Ir', orbital: '5d5/2', be: 4 },\n  { element: 'Pt', orbital: '5d5/2', be: 2 },\n  { element: 'Au', orbital: '5d5/2', be: 3 },\n  { element: 'Hg', orbital: '5d5/2', be: 7 },\n  { element: 'Tl', orbital: '5d5/2', be: 13 },\n  { element: 'Pb', orbital: '5d5/2', be: 20 },\n  { element: 'Bi', orbital: '5d5/2', be: 25 },\n  { element: 'Po', orbital: '5d5/2', be: 31 },\n  { element: 'At', orbital: '5d5/2', be: 40 },\n  { element: 'Rn', orbital: '5d5/2', be: 48 },\n  { element: 'Fr', orbital: '5d5/2', be: 58 },\n  { element: 'Ra', orbital: '5d5/2', be: 68 },\n  { element: 'Ac', orbital: '5d5/2', be: 80 },\n  { element: 'Th', orbital: '5d5/2', be: 88 },\n  { element: 'U', orbital: '5d5/2', be: 96 },\n  { element: 'Lu', orbital: '5d', be: 5 },\n  { element: 'Hf', orbital: '5d', be: 7 },\n  { element: 'Ta', orbital: '5d', be: 6 },\n  { element: 'W', orbital: '5d', be: 6 },\n  { element: 'Re', orbital: '5d', be: 4 },\n  { element: 'Ir', orbital: '5d', be: 4 },\n  { element: 'Pt', orbital: '5d', be: 2 },\n  { element: 'Au', orbital: '5d', be: 3 },\n  { element: 'Hg', orbital: '5d', be: 7 },\n  { element: 'Tl', orbital: '5d', be: 13 },\n  { element: 'Pb', orbital: '5d', be: 20 },\n  { element: 'Bi', orbital: '5d', be: 25 },\n  { element: 'Po', orbital: '5d', be: 31 },\n  { element: 'At', orbital: '5d', be: 40 },\n  { element: 'Rn', orbital: '5d', be: 48 },\n  { element: 'Fr', orbital: '5d', be: 58 },\n  { element: 'Ra', orbital: '5d', be: 68 },\n  { element: 'Ac', orbital: '5d', be: 80 },\n  { element: 'Th', orbital: '5d', be: 88 },\n  { element: 'U', orbital: '5d', be: 96 },\n  { element: 'Pb', orbital: '6s', be: 3 },\n  { element: 'Bi', orbital: '6s', be: 8 },\n  { element: 'Po', orbital: '6s', be: 12 },\n  { element: 'At', orbital: '6s', be: 18 },\n  { element: 'Rn', orbital: '6s', be: 26 },\n  { element: 'Fr', orbital: '6s', be: 34 },\n  { element: 'Ra', orbital: '6s', be: 44 },\n  { element: 'Th', orbital: '6s', be: 60 },\n  { element: 'Pb', orbital: '6p1/2', be: 1 },\n  { element: 'Bi', orbital: '6p1/2', be: 3 },\n  { element: 'Po', orbital: '6p1/2', be: 5 },\n  { element: 'At', orbital: '6p1/2', be: 8 },\n  { element: 'Rn', orbital: '6p1/2', be: 11 },\n  { element: 'Fr', orbital: '6p1/2', be: 15 },\n  { element: 'Ra', orbital: '6p1/2', be: 19 },\n  { element: 'Th', orbital: '6p1/2', be: 49 },\n  { element: 'U', orbital: '6p1/2', be: 28.9 },\n  { element: 'Pb', orbital: '6p3/2', be: 1 },\n  { element: 'Bi', orbital: '6p3/2', be: 3 },\n  { element: 'Po', orbital: '6p3/2', be: 5 },\n  { element: 'At', orbital: '6p3/2', be: 8 },\n  { element: 'Rn', orbital: '6p3/2', be: 11 },\n  { element: 'Fr', orbital: '6p3/2', be: 15 },\n  { element: 'Ra', orbital: '6p3/2', be: 19 },\n  { element: 'Th', orbital: '6p3/2', be: 43 },\n  { element: 'U', orbital: '6p3/2', be: 19 },\n  { element: 'Pb', orbital: '6p', be: 1 },\n  { element: 'Bi', orbital: '6p', be: 3 },\n  { element: 'Po', orbital: '6p', be: 5 },\n  { element: 'At', orbital: '6p', be: 8 },\n  { element: 'Rn', orbital: '6p', be: 11 },\n  { element: 'Fr', orbital: '6p', be: 15 },\n  { element: 'Ra', orbital: '6p', be: 19 },\n  { element: 'Th', orbital: '6p', be: 43 },\n  { element: 'U', orbital: '6p', be: 19 },\n];\n"],"names":["AnalysesManager","constructor","analyses","addAnalysis","analysis","index","getAnalysisIndex","id","undefined","push","getAnalyses","options","ids","includes","removeAllAnalyses","splice","removeAnalysis","i","length","isNaN","toString","Object","prototype","isAnyArray","object","call","endsWith","max","input","isArray","TypeError","maxValue","min","minValue","a","d","e","f","g","h","j","c","b","_ref","module","exports","window","median","quickSelectMedian","slice","xAdd","array1","array2","isConstant","constant","Array","Error","Number","array3","xMultiply","Float64Array","xDivide","xIsMonotone","array","global","factory","this","ascending","NaN","bisector","compare","ascendingComparator","left","x","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","variance","n","m","s","deviation","v","Math","sqrt","extent","identity","range","start","stop","step","arguments","ceil","e10","e5","e2","ticks","count","tickStep","floor","step0","abs","step1","pow","log","LN10","error","sturges","values","LN2","number","histogram","value","domain","threshold","data","xz","x0","x1","tz","shift","pop","bins","bin","_","thresholds","map","quantile","p","freedmanDiaconis","sort","scott","mean","numbers","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","t","random","sum","transpose","matrix","row","zip","version","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","xSubtract","sumValue","norm","_options$algorithm","algorithm","_options$sumValue","_options$maxValue","output","toLowerCase","absoluteSumValue","absoluteSum","currentMaxValue","factor","_i","sumFactor","_i2","concat","rescale","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","_typeof","obj","Symbol","iterator","sequentialFill","_options","_options$from","from","_options$to","to","_options$size","size","normalize","zones","NEGATIVE_INFINITY","POSITIVE_INFINITY","JSON","parse","stringify","zone","forEach","filter","currentZone","result","invert","exclusions","exclusion","nextExclusion","zonesWithPoints","numberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","round","integral","slope","intercept","equallySpacedSmooth","y","xLength","halfStep","initialOriginalStep","lastOriginalStep","previousX","MIN_VALUE","previousY","nextX","nextY","currentValue","sumAtMin","sumAtMax","getSlope","y0","y1","add","main","equallySpacedSlot","lastStep","MAX_VALUE","frontOutsideSpectra","backOutsideSpectra","currentPoints","equallySpaced","arrayXY","reverse","variant","xResult","yResult","zoneResult","processZone","getZones","currentFrom","filterX","points","currentZoneIndex","newX","newY","position","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","name","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","clz32","cos","cosh","exp","expm1","fround","log1p","log10","log2","sign","sin","sinh","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","checkRowIndices","column","checkColumnIndices","rowOut","some","r","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","cols","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","fill","rand","randInt","isInteger","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","maxRow","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","standardDeviation","center","for","randomInt","diagonal","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","addRow","removeColumn","newRow","addColumn","BaseView","MatrixTransposeView","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","LUcolj","kmax","LU","isSingular","col","solve","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","ks","cs","sn","sp","spm1","epm1","sk","ek","Y","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","defaultOptions","arrayCase","len","cond","matrixCase","padArray","assign","factorial","windowSize","derivative","polynomial","pad","padValue","savitzkyGolay","C","ans","J","inic","Jtranspose","Jinv","det","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","B","baselineCorrectionRegression","maxIterations","Regression","regressionOptions","tolerance","baseline","fitting","oldFitting","iteration","delta","regression","corrected","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","weights","weightedStandardDeviation","weightedVariance","z","w","inPlace","standardize","standardDev","getNormalizedSpectrum","spectrum","variables","newSpectrum","units","label","title","dataType","meta","filters","processing","replace","filterOptions","Stat","std","normed","baselineCorrection","process","kind","isMonotone","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","properties","keys","key","mulSafe","decimals","arg","getFractional","divSafe","den","invDen","val","QtyError","err","create","message","stack","throwIncompatibleUnits","UNITS","PI","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","numerator","denominator","unit","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","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","top","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","match","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","src","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","convertUnit","fromUnit","toUnit","getConvertedVariable","variable","newUnits","getXYSpectrum","spectra","selector","xUnits","yUnits","split","variableNames","converted","Analysis","substring","cache","pushSpectrum","standardizeData","normalization","getXLabel","getYLabel","xVariable","yVariable","GC_MS_FIELDS","complexChromatogram","chromatogram","series","ms","dimension","existingGCMSFields","convertMSFieldToLabel","pageValue","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentData","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","minX","maxX","minY","maxY","noise","getMedian","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","FFT","release","date","_n","_bitrev","_cstb","core","init","_initArray","_makeBitReversalTable","_makeCosSinTable","fft1d","re","im","fft","ifft1d","bt1d","fft2d","tre","tim","x2","ifft2d","inv","ik","wr","wi","xr","n4","Uint32Array","_paddingZero","n2","n8","n2p4","dc","ds","apis","bt","ifft","gyromagneticRatio","postProcessingNMR","entriesFlat","observeFrequency","shiftOffsetVal","entry","ntuples","symbol","toUpperCase","nucleus","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","nbPoints","varname","prepareSpectrum","ntuplesSeparator","Spectrum","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","dataLabel","dataValue","infos","datatable","parentEntry","info","dataClass","xType","shiftOffsetNum","vartype","varform","yType","page","sampleDescription","startsWith","parsedValue","flatten","fromJcamp","addJcamp","currentSpectrum","addStyle","serie","color","opacity","lineWidth","style","width","dash","COLORS","getJSGraph","colors","opacities","linesWidth","xLabel","yLabel","axes","unitWrapperBefore","unitWrapperAfter","flipped","display","getNormalizationAnnotations","boundary","annotations","ignore","annotation","strokeWidth","fillColor","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","creatorNtuples","owner","origin","varName","varType","varDim","minFct","maxFct","header","point","fromJSON","fromVariables","forceNtuples","jcampOptions","toJcamps","jcamps","getJcamp","toJcamp","text","pointer","parsed","blocks","parseHeader","nbBlocks","parseBlock","nbComments","comments","nbExperimentVariables","experimentVariables","nbEntriesInclusionExclusion","blockParametersincludes","nbFutureUpgradeExperimentEntries","futureUpgradeExperimentEntries","firstBlock","block","month","hours","minutes","seconds","blockComment","technique","nbCorrespondingVariables","correspondingVariables","nbAdditionalNumericalParameters","additionalNumericalParameters","nbOrdinateValues","correspondingVariable","minimumOrdinateValue","maximumOrdinateValue","fromVamas","sourceEnergy","yValues","xStart","xIncrement","xValues","references","element","orbital","be"],"mappings":"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"}