{"version":3,"file":"openchemlib-utils.js","sources":["../src/util/tagAtom.js","../src/diastereotopic/addDiastereotopicMissingChirality.js","../src/util/makeRacemic.js","../src/diastereotopic/getDiastereotopicAtomIDs.js","../src/diastereotopic/getDiastereotopicAtomIDsAndH.js","../src/diastereotopic/toDiastereotopicSVG.js","../src/diastereotopic/getGroupedDiastereotopicAtomIDs.js","../src/util/isCsp3.js","../src/hose/getHoseCodesForAtoms.js","../src/hose/getHoseCodesForAtom.js","../src/hose/getHoseCodesFromDiastereotopicID.js","../src/hose/getHoseCodesAndDiastereotopicIDs.js","../src/hose/getHoseCodesForPath.js","../src/util/combineSmiles.js","../src/util/getAtomsInfo.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-floyd-warshall/src/index.js","../src/util/getConnectivityMatrix.js","../node_modules/atom-sorter/src/index.js","../src/util/getMF.js","../src/util/nbOH.js","../src/util/nbCOOH.js","../src/util/nbCHO.js","../src/util/nbNH2.js","../src/util/nbCN.js","../src/path/getPathAndTorsion.js","../src/path/getPathsInfo.js","../src/path/getShortestPaths.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/papaparse/papaparse.min.js","../src/db/utils/getMoleculeCreators.js","../src/db/utils/appendCSV.js","../src/db/utils/appendColor.js","../node_modules/sdf-parser/src/getEntriesBoundaries.js","../node_modules/sdf-parser/src/parse.js","../src/db/utils/appendSDF.js","../src/db/utils/appendSmilesList.js","../src/db/utils/pushEntry.js","../src/db/utils/pushMoleculeInfo.js","../src/db/utils/search.js","../src/db/MoleculesDB.js","../src/features/getAtomFeatures.js","../src/misc/toVisualizerMolfile.js","../src/fragment/fragmentAcyclicSingleBonds.js"],"sourcesContent":["let xAtomicNumber = 0;\n\n/**\n * Tag an atom to be able to visualize it\n * @param {OCL.Molecule} molecule\n * @param {number} iAtom\n */\nexport function tagAtom(molecule, iAtom) {\n  let customLabel = `${molecule.getAtomLabel(iAtom)}*`;\n  molecule.setAtomCustomLabel(iAtom, customLabel);\n  if (molecule.getAtomicNo(iAtom) === 1) {\n    molecule.setAtomicNo(iAtom, getXAtomicNumber(molecule));\n  } else {\n    // we can not use X because we would have problems with valencies if it is\n    // expanded hydrogens or not\n    // we can not only use a custom label because it does not count for the canonisation\n    molecule.setAtomMass(iAtom, molecule.getAtomMass(iAtom) + 5);\n  }\n  return customLabel;\n}\n\nfunction getXAtomicNumber(molecule) {\n  if (!xAtomicNumber) {\n    const OCL = molecule.getOCL();\n    xAtomicNumber = OCL.Molecule.getAtomicNoFromLabel('X');\n  }\n  return xAtomicNumber;\n}\n","import { tagAtom } from '../util/tagAtom';\n\n/**\n * Add either missing chirality of diastereotopic missing chirality\n * The problem is that sometimes we need to add chiral bond that was not planned because it is the same group\n * This is the case for example for the valine where the 2 C of the methyl groups are diastereotopic\n * @param {OCL.Molecule} molecule\n * @param {object} [options={}]\n * @param {number} [options.esrType=cESRTypeAnd]\n */\nexport function addDiastereotopicMissingChirality(molecule, options = {}) {\n  const { Molecule } = molecule.getOCL();\n  const { esrType = Molecule.cESRTypeAnd } = options;\n\n  for (let iAtom = 0; iAtom < molecule.getAllAtoms(); iAtom++) {\n    let tempMolecule = molecule.getCompactCopy();\n    tagAtom(tempMolecule, iAtom);\n    // After copy, helpers must be recalculated\n    tempMolecule.ensureHelperArrays(Molecule.cHelperBitsStereo);\n    // We need to have >0 and not >1 because there could be unspecified chirality in racemate\n\n    for (let i = 0; i < tempMolecule.getAtoms(); i++) {\n      // changed from from handling below; TLS 9.Nov.2015\n      if (\n        tempMolecule.isAtomStereoCenter(i) &&\n        tempMolecule.getStereoBond(i) === -1\n      ) {\n        let stereoBond = tempMolecule.getAtomPreferredStereoBond(i);\n        if (stereoBond !== -1) {\n          molecule.setBondType(stereoBond, Molecule.cBondTypeUp);\n          if (molecule.getBondAtom(1, stereoBond) === i) {\n            let connAtom = molecule.getBondAtom(0, stereoBond);\n            molecule.setBondAtom(0, stereoBond, i);\n            molecule.setBondAtom(1, stereoBond, connAtom);\n          }\n          // To me it seems that we have to add all stereo centers into AND group 0. TLS 9.Nov.2015\n          molecule.setAtomESR(i, esrType, 0);\n        }\n      }\n    }\n  }\n}\n","/**\n *\n * @param {OCL.Molecule} [molecule] An instance of a molecule\n * @param {object} [options={}]\n * @param {object} [options.OCL] openchemlib library\n */\nexport function makeRacemic(molecule) {\n  const { Molecule } = molecule.getOCL();\n\n  // if we don't calculate this we have 2 epimers\n  molecule.ensureHelperArrays(Molecule.cHelperCIP);\n\n  // we need to make one group \"AND\" for chiral (to force to racemic, this means diastereotopic and not enantiotopic)\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomParity(i) !== Molecule.cAtomParityNone) {\n      molecule.setAtomESR(i, Molecule.cESRTypeAnd, 0); // changed to group 0; TLS 9.Nov.2015\n    }\n  }\n}\n","import { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nimport { addDiastereotopicMissingChirality } from './addDiastereotopicMissingChirality';\n\n/**\n * Returns an array of diastereotopic ID (as oclCode)\n * @param {OCL.Molecule} molecule\n */\nexport function getDiastereotopicAtomIDs(molecule) {\n  const OCL = molecule.getOCL();\n  addDiastereotopicMissingChirality(molecule);\n\n  let numberAtoms = molecule.getAllAtoms();\n  let ids = [];\n  for (let iAtom = 0; iAtom < numberAtoms; iAtom++) {\n    let tempMolecule = molecule.getCompactCopy();\n    tagAtom(tempMolecule, iAtom);\n    makeRacemic(tempMolecule);\n    // We need to ensure the helper array in order to get correctly the result of racemisation\n    ids[iAtom] = tempMolecule.getCanonizedIDCode(\n      OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n    );\n  }\n  return ids;\n}\n","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\n// Previously getExtendedDiastereotopicAtomIDs\n\n/**\n *\n * @param {OCL.Molecule} molecule\n */\nexport function getDiastereotopicAtomIDsAndH(molecule) {\n  const OCL = molecule.getOCL();\n  molecule = molecule.getCompactCopy();\n  molecule.addImplicitHydrogens();\n  // TODO Temporary code ???\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n\n  const diaIDs = getDiastereotopicAtomIDs(molecule);\n  const newDiaIDs = [];\n\n  for (let i = 0; i < diaIDs.length; i++) {\n    const diaID = diaIDs[i];\n    const newDiaID = {\n      oclID: diaID,\n      hydrogenOCLIDs: [],\n      nbHydrogens: 0,\n    };\n    if (molecule.getAtomicNo(i) === 1) {\n      const atom = molecule.getConnAtom(i, 0);\n      newDiaID.heavyAtom = diaIDs[atom];\n    }\n    for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n      const atom = molecule.getConnAtom(i, j);\n      if (molecule.getAtomicNo(atom) === 1) {\n        newDiaID.nbHydrogens++;\n        if (newDiaID.hydrogenOCLIDs.indexOf(diaIDs[atom]) === -1) {\n          newDiaID.hydrogenOCLIDs.push(diaIDs[atom]);\n        }\n      }\n    }\n\n    newDiaIDs.push(newDiaID);\n  }\n\n  return newDiaIDs;\n}\n","import { getDiastereotopicAtomIDsAndH } from './getDiastereotopicAtomIDsAndH';\n\n/**\n * Returns a SVG\n * @param {*} molecule\n * @param {*} [options={}]\n */\nexport function toDiastereotopicSVG(molecule, options = {}) {\n  let {\n    width = 300,\n    height = 200,\n    prefix = 'ocl',\n    heavyAtomHydrogen = false,\n  } = options;\n  let svg = options.svg;\n  let diaIDs = [];\n\n  let hydrogenInfo = {};\n  getDiastereotopicAtomIDsAndH(molecule).forEach((line) => {\n    hydrogenInfo[line.oclID] = line;\n  });\n\n  if (heavyAtomHydrogen) {\n    for (let i = 0; i < molecule.getAtoms(); i++) {\n      diaIDs.push([]);\n    }\n    let groupedDiaIDs = molecule.getGroupedDiastereotopicAtomIDs();\n    groupedDiaIDs.forEach((diaID) => {\n      if (\n        hydrogenInfo[diaID.oclID] &&\n        hydrogenInfo[diaID.oclID].nbHydrogens > 0\n      ) {\n        diaID.atoms.forEach((atom) => {\n          hydrogenInfo[diaID.oclID].hydrogenOCLIDs.forEach((id) => {\n            if (!diaIDs[atom * 1].includes(id)) diaIDs[atom].push(id);\n          });\n        });\n      }\n    });\n  } else {\n    diaIDs = molecule.getDiastereotopicAtomIDs().map((a) => [a]);\n  }\n\n  if (!svg) svg = molecule.toSVG(width, height, prefix);\n\n  svg = svg.replace(/Atom:[0-9]+\"/g, (value) => {\n    let atom = value.replace(/[^0-9]/g, '');\n    return `${value} data-diaid=\"${diaIDs[atom].join(',')}\"`;\n  });\n\n  return svg;\n}\n","import { getDiastereotopicAtomIDs } from './getDiastereotopicAtomIDs';\n/**\n * This function groups the diasterotopic atomIds of the molecule based on equivalence of atoms. The output object contains\n * a set of chemically equivalent atoms(element.atoms) and the groups of magnetically equivalent atoms (element.magneticGroups)\n * @param {OCL.Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.atomLabel] Select atoms of the given atomLabel. By default it returns all the explicit atoms in the molecule\n * @returns {Array}\n */\n\nexport function getGroupedDiastereotopicAtomIDs(molecule, options = {}) {\n  const { atomLabel } = options;\n  let diaIDs = getDiastereotopicAtomIDs(molecule, options);\n  let diaIDsObject = {};\n  for (let i = 0; i < diaIDs.length; i++) {\n    if (!atomLabel || molecule.getAtomLabel(i) === atomLabel) {\n      let diaID = diaIDs[i];\n      if (!diaIDsObject[diaID]) {\n        diaIDsObject[diaID] = {\n          counter: 0,\n          atoms: [],\n          oclID: diaID,\n          atomLabel: molecule.getAtomLabel(i),\n        };\n      }\n      diaIDsObject[diaID].counter++;\n      diaIDsObject[diaID].atoms.push(i);\n    }\n  }\n\n  return Object.values(diaIDsObject);\n}\n","/**\n * Check if a specific atom is a sp3 carbon\n * @param {OCL.Molecule} molecule\n * @param {number} atomID\n */\n\nexport function isCsp3(molecule, atomID) {\n  if (molecule.getAtomicNo(atomID) !== 6) return false;\n  if (molecule.getAtomCharge(atomID) !== 0) return false;\n  if (\n    molecule.getImplicitHydrogens(atomID) + molecule.getConnAtoms(atomID) !==\n    4\n  ) {\n    return false;\n  }\n  return true;\n}\n","import { isCsp3 } from '../util/isCsp3';\nimport { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nexport const FULL_HOSE_CODE = 1;\nexport const HOSE_CODE_CUT_C_SP3_SP3 = 2;\n\n/**\n * Returns the hose code for a specific atom number\n * @param {OCL.Molecule} originalMolecule\n * @param {array<number>} rootAtoms\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] Specify is the atoms are already tagged\n * @param {number} [options.minSphereSize=0] Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtoms(\n  originalMolecule,\n  rootAtoms = [],\n  options = {},\n) {\n  const OCL = originalMolecule.getOCL();\n  const {\n    minSphereSize = 0,\n    maxSphereSize = 4,\n    kind = FULL_HOSE_CODE,\n    isTagged = false,\n  } = options;\n\n  const molecule = originalMolecule.getCompactCopy();\n\n  if (!isTagged) {\n    const tags = [];\n    for (let i = 0; i < rootAtoms.length; i++) {\n      let rootAtom = rootAtoms[i];\n      tags.push(tagAtom(molecule, rootAtom));\n      molecule.addImplicitHydrogens();\n      molecule.addMissingChirality();\n      molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n      // because ensuring helper reorder atoms we need to look again for it\n    }\n    rootAtoms.length = 0;\n    for (let j = 0; j < molecule.getAllAtoms(); j++) {\n      if (tags.includes(molecule.getAtomCustomLabel(j))) {\n        rootAtoms.push(j);\n      }\n    }\n  }\n\n  let fragment = new OCL.Molecule(0, 0);\n  let results = [];\n  let min = 0;\n  let max = 0;\n  let atomMask = new Array(molecule.getAllAtoms());\n  let atomList = new Array(molecule.getAllAtoms());\n\n  for (let sphere = 0; sphere <= maxSphereSize; sphere++) {\n    if (max === 0) {\n      for (let rootAtom of rootAtoms) {\n        atomList[max] = rootAtom;\n        atomMask[rootAtom] = true;\n        max++;\n      }\n    } else {\n      let newMax = max;\n      for (let i = min; i < max; i++) {\n        let atom = atomList[i];\n        for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n          let connAtom = molecule.getConnAtom(atom, j);\n          if (!atomMask[connAtom]) {\n            switch (kind) {\n              case FULL_HOSE_CODE:\n                atomMask[connAtom] = true;\n                atomList[newMax++] = connAtom;\n                break;\n              case HOSE_CODE_CUT_C_SP3_SP3:\n                if (!(isCsp3(molecule, atom) && isCsp3(molecule, connAtom))) {\n                  atomMask[connAtom] = true;\n                  atomList[newMax++] = connAtom;\n                }\n                break;\n              default:\n                throw new Error('getHoseCoesForAtom unknown kind');\n            }\n          }\n        }\n      }\n      min = max;\n      max = newMax;\n    }\n    molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n    if (sphere >= minSphereSize) {\n      makeRacemic(fragment);\n      results.push(\n        fragment.getCanonizedIDCode(\n          OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n        ),\n      );\n    }\n  }\n  return results;\n}\n","import { getHoseCodesForAtoms } from './getHoseCodesForAtoms.js';\n\n/**\n * Returns the hose code for a specific atom number\n * @param {OCL.Molecule} originalMolecule\n * @param {number} rootAtom\n * @param {object} [options={}]\n * @param {boolean} [options.isTagged] Specify is the atom is already tagged\n * @param {number} [options.minSphereSize=0] Smallest hose code sphere\n * @param {number} [options.maxSphereSize=4] Largest hose code sphere\n * @param {number} [options.kind=FULL_HOSE_CODE] Kind of hose code, default usual sphere\n */\nexport function getHoseCodesForAtom(originalMolecule, rootAtom, options = {}) {\n  return getHoseCodesForAtoms(originalMolecule, [rootAtom], options);\n}\n","import { getHoseCodesForAtom } from './getHoseCodesForAtom';\n/**\n * Returns the hose code for a specific marked atom\n * @param {OCL.Molecule} diastereotopicID\n * @param {object} options\n */\n\nexport function getHoseCodesFromDiastereotopicID(molecule, options = {}) {\n  molecule.addImplicitHydrogens();\n  molecule.addMissingChirality();\n\n  // One of the atom has to be marked !\n  let atomID = -1;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    // we need to find the marked atom\n    const atomCustomLabel = molecule.getAtomCustomLabel(i);\n    if (atomCustomLabel != null && atomCustomLabel.endsWith('*')) {\n      atomID = i;\n      break;\n    }\n  }\n  if (atomID >= 0) {\n    options.isTagged = true;\n    return getHoseCodesForAtom(molecule, atomID, options);\n  }\n  return undefined;\n}\n","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs';\n\nimport { getHoseCodesFromDiastereotopicID } from './getHoseCodesFromDiastereotopicID';\n/**\n * Returns an array containing one entry per atom containing\n * diaID and hose code\n * @param {OCL.Molecule} molecule\n * @param {object} options\n */\n\nexport function getHoseCodesAndDiastereotopicIDs(molecule, options) {\n  const diaIDs = getDiastereotopicAtomIDs(molecule).map((oclID) => ({\n    oclID,\n  }));\n  const OCL = molecule.getOCL();\n  // TODO: seems like a very slow approach\n  diaIDs.forEach((diaID) => {\n    const hoses = getHoseCodesFromDiastereotopicID(\n      OCL.Molecule.fromIDCode(diaID.oclID),\n      options,\n    );\n    diaID.hoses = [];\n    let sphere = 0;\n    for (const hose of hoses) {\n      diaID.hoses.push({\n        sphere: sphere++,\n        oclID: hose,\n      });\n    }\n  });\n  return diaIDs;\n}\n","import { makeRacemic } from '../util/makeRacemic';\nimport { tagAtom } from '../util/tagAtom';\n\nlet fragment;\n\n/**\n * Returns the hose code for a specific atom number\n * @param {OCL.Molecule} molecule\n */\nexport function getHoseCodesForPath(molecule, from, to, maxLength) {\n  const OCL = molecule.getOCL();\n  const originalFrom = from;\n  const originalTo = to;\n  molecule = molecule.getCompactCopy();\n\n  let originalAtoms = []; // path before renumbering\n  molecule.getPath(originalAtoms, from, to, maxLength + 1);\n  let torsion;\n  if (originalAtoms.length === 4) {\n    torsion = molecule.calculateTorsion(originalAtoms);\n  }\n\n  const tag1 = tagAtom(molecule, from);\n  const tag2 = tagAtom(molecule, to);\n\n  molecule.addImplicitHydrogens();\n  molecule.addMissingChirality();\n\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n\n  from = -1;\n  to = -1;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (tag1 === tag2) {\n      if (molecule.getAtomCustomLabel(i) === tag1) {\n        if (from === -1) {\n          from = i;\n        } else {\n          to = i;\n        }\n      }\n    } else {\n      if (tag1 === molecule.getAtomCustomLabel(i)) {\n        from = i;\n      }\n      if (tag2 === molecule.getAtomCustomLabel(i)) {\n        to = i;\n      }\n    }\n  }\n\n  if (!fragment) fragment = new OCL.Molecule(0, 0);\n\n  let atoms = [];\n  molecule.getPath(atoms, from, to, maxLength + 1);\n\n  let min = 0;\n  let max = 0;\n  let atomMask = new Array(molecule.getAllAtoms()).fill(false);\n  let atomList = new Array(molecule.getAllAtoms()).fill(-1);\n  let hoses = [];\n\n  for (let sphere = 0; sphere <= 2; sphere++) {\n    if (max === 0) {\n      for (let atom of atoms) {\n        atomMask[atom] = true;\n        atomList[max++] = atom;\n      }\n    } else {\n      let newMax = max;\n      for (let i = min; i < max; i++) {\n        let atom = atomList[i];\n        for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n          let connAtom = molecule.getConnAtom(atom, j);\n          if (!atomMask[connAtom]) {\n            atomMask[connAtom] = true;\n            atomList[newMax++] = connAtom;\n          }\n        }\n      }\n      min = max;\n      max = newMax;\n    }\n    let atomMap = [];\n\n    molecule.copyMoleculeByAtoms(fragment, atomMask, true, atomMap);\n    makeRacemic(fragment);\n    let oclID = fragment.getCanonizedIDCode(\n      OCL.Molecule.CANONIZER_ENCODE_ATOM_CUSTOM_LABELS,\n    );\n\n    hoses.push({\n      sphere,\n      oclID,\n    });\n  }\n\n  return {\n    atoms: originalAtoms,\n    from: originalFrom,\n    to: originalTo,\n    torsion,\n    hoses,\n    length: originalAtoms.length - 1,\n  };\n}\n","const MAX_R = 10;\n\n/**\n * Generate molecules and calcule predicted properties form a list of smiles and fragments\n * @param {string} [coreSmiles]\n * @param {array} [fragments] Array of {smiles,R1,R2,...}\n * @param {OCL} [OCL] The openchemlib library\n * @param {object} [options={}]\n * @param {function} [options.onStep] method to execute each new molecules\n * @param {boolean} [options.complexity] returns only the number of molecules to evaluate\n * @return {Promise} promise that resolves to molecules or complexity as a number\n */\nexport async function combineSmiles(coreSmiles, fragments, OCL, options = {}) {\n  const { complexity = false } = options;\n  const core = getCore(coreSmiles);\n  const rGroups = getRGroups(core, fragments);\n  if (complexity) {\n    return getComplexity(rGroups);\n  }\n  return generate(core, rGroups, OCL, options);\n}\n\nfunction getComplexity(rGroups) {\n  let complexity = 1;\n  for (let rGroup of rGroups) {\n    complexity *= rGroup.smiles.length;\n  }\n  return complexity;\n}\n\nasync function generate(core, rGroups, OCL, options = {}) {\n  const { onStep } = options;\n  const molecules = {};\n  const sizes = new Array(rGroups.length);\n  const currents = new Array(rGroups.length);\n  for (let i = 0; i < rGroups.length; i++) {\n    sizes[i] = rGroups[i].smiles.length - 1;\n    currents[i] = 0;\n  }\n  let position = 0;\n  let counter = 0;\n\n  while (true) {\n    counter++;\n    while (position < currents.length) {\n      if (currents[position] < sizes[position]) {\n        if (onStep) {\n          await onStep(counter);\n        }\n        appendMolecule(molecules, core, rGroups, currents, OCL);\n        currents[position]++;\n        for (let i = 0; i < position; i++) {\n          currents[i] = 0;\n        }\n        position = 0;\n      } else {\n        position++;\n      }\n    }\n    if ((position = currents.length)) {\n      if (onStep) {\n        await onStep(counter);\n      }\n      appendMolecule(molecules, core, rGroups, currents, OCL);\n      break;\n    }\n  }\n  return Object.keys(molecules)\n    .map((key) => molecules[key])\n    .sort((m1, m2) => m1.mw - m2.mw);\n}\n\nfunction appendMolecule(molecules, core, rGroups, currents, OCL) {\n  let newSmiles = core.smiles;\n  for (let i = 0; i < currents.length; i++) {\n    newSmiles += `.${rGroups[i].smiles[currents[i]]}`;\n  }\n\n  const currentMol = OCL.Molecule.fromSmiles(newSmiles);\n  const idCode = currentMol.getIDCode();\n\n  if (!molecules[idCode]) {\n    let molecule = {};\n    molecules[idCode] = molecule;\n    molecule.smiles = currentMol.toSmiles();\n    molecule.combinedSmiles = newSmiles;\n    molecule.idCode = idCode;\n    molecule.molfile = currentMol.toMolfile();\n\n    const props = new OCL.MoleculeProperties(currentMol);\n    molecule.nbHAcceptor = props.acceptorCount;\n    molecule.nbHDonor = props.donorCount;\n    molecule.logP = props.logP;\n    molecule.logS = props.logS;\n    molecule.PSA = props.polarSurfaceArea;\n    molecule.nbRottable = props.rotatableBondCount;\n    molecule.nbStereoCenter = props.stereoCenterCount;\n    let mf = currentMol.getMolecularFormula();\n    molecule.mf = mf.formula;\n    molecule.mw = mf.relativeWeight;\n  }\n}\n\nfunction getCore(coreSmiles) {\n  let core = {\n    originalSmiles: coreSmiles,\n    smiles: coreSmiles.replace(/\\[R(?<group>[1-4])\\]/g, '%5$<group>'),\n  };\n\n  for (let i = 0; i < MAX_R; i++) {\n    if (core.originalSmiles.indexOf(`[R${i}]`) > -1) core[`R${i}`] = true;\n  }\n  return core;\n}\n\nfunction getRGroups(core, fragments) {\n  let rGroups = {};\n  for (const fragment of fragments) {\n    if (fragment.smiles) {\n      const smiles = updateRPosition(fragment.smiles);\n      for (let i = 0; i < MAX_R; i++) {\n        if (core[`R${i}`]) {\n          // we only consider the R that are in the core\n          if (fragment[`R${i}`]) {\n            if (!rGroups[`R${i}`]) {\n              rGroups[`R${i}`] = {\n                group: `R${i}`,\n                smiles: [],\n              };\n            }\n            rGroups[`R${i}`].smiles.push(smiles.replace(/\\[R\\]/, `(%5${i})`));\n          }\n        }\n      }\n    }\n  }\n  return Object.keys(rGroups).map((key) => rGroups[key]);\n}\n\nfunction updateRPosition(smiles) {\n  // R group should not be at the beginning\n  if (smiles.indexOf('[R]') !== 0) return smiles;\n  if (smiles.length === 3) return '[H][R]';\n  // we are in trouble ... we need to move the R\n  let newSmiles = smiles.replace('[R]', '');\n  // we need to check where we should put the R group\n  let level = 0;\n  for (let j = 0; j < newSmiles.length; j++) {\n    let currentChar = newSmiles.charAt(j);\n    let currentSubstring = newSmiles.substr(j);\n    if (currentChar === '(') {\n      level++;\n    } else if (currentChar === ')') {\n      level--;\n    } else if (level === 0) {\n      if (currentSubstring.match(/^[a-z]/)) {\n        return `${newSmiles.substr(0, j + 1)}([R])${newSmiles.substr(j + 1)}`;\n      } else if (currentSubstring.match(/^[A-Z][a-z]/)) {\n        return `${newSmiles.substr(0, j + 2)}([R])${newSmiles.substr(j + 2)}`;\n      } else if (currentSubstring.match(/^[A-Z]/)) {\n        return `${newSmiles.substr(0, j + 1)}([R])${newSmiles.substr(j + 1)}`;\n      }\n    }\n  }\n  return smiles;\n}\n","import { getDiastereotopicAtomIDs } from '../diastereotopic/getDiastereotopicAtomIDs';\n\n/**\n * Returns various information about atoms in the molecule\n * @param {OCL.Molecule} [molecule]\n */\nexport function getAtomsInfo(molecule) {\n  const OCL = molecule.getOCL();\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperRings);\n\n  let diaIDs = getDiastereotopicAtomIDs(molecule);\n\n  let results = [];\n  for (let i = 0; i < diaIDs.length; i++) {\n    let result = {\n      oclID: diaIDs[i],\n      extra: {\n        singleBonds: 0,\n        doubleBonds: 0,\n        tripleBonds: 0,\n        aromaticBonds: 0,\n        cnoHybridation: 0, // should be 1 (sp), 2 (sp2) or 3 (sp3)\n      },\n    };\n    let extra = result.extra;\n    results.push(result);\n    result.abnormalValence = molecule.getAtomAbnormalValence(i); // -1 is normal otherwise specified\n    result.charge = molecule.getAtomCharge(i);\n    result.cipParity = molecule.getAtomCIPParity(i);\n    result.color = molecule.getAtomColor(i);\n    result.customLabel = molecule.getAtomCustomLabel(i);\n    //        result.esrGroup=molecule.getAtomESRGroup(i);\n    //        result.esrType=molecule.getAtomESRType(i);\n    result.atomicNo = molecule.getAtomicNo(i);\n    result.label = molecule.getAtomLabel(i);\n    //        result.list=molecule.getAtomList(i);\n    //        result.listString=molecule.getAtomListString(i);\n    //        result.mapNo=molecule.getAtomMapNo(i);\n    result.mass = molecule.getAtomMass(i);\n    //        result.parity=molecule.getAtomParity(i);\n    //        result.pi=molecule.getAtomPi(i);\n    //        result.preferredStereoBond=molecule.getAtomPreferredStereoBond(i);\n    //        result.queryFeatures=molecule.getAtomQueryFeatures(i);\n    result.radical = molecule.getAtomRadical(i);\n    result.ringBondCount = molecule.getAtomRingBondCount(i);\n    //        result.ringCount=molecule.getAtomRingCount(i);\n    result.ringSize = molecule.getAtomRingSize(i);\n    result.x = molecule.getAtomX(i);\n    result.y = molecule.getAtomY(i);\n    result.z = molecule.getAtomZ(i);\n    result.allHydrogens = molecule.getAllHydrogens(i);\n    result.connAtoms = molecule.getConnAtoms(i);\n    result.allConnAtoms = molecule.getAllConnAtoms(i);\n\n    result.implicitHydrogens =\n      result.allHydrogens + result.connAtoms - result.allConnAtoms;\n\n    result.isAromatic = molecule.isAromaticAtom(i);\n    result.isAllylic = molecule.isAllylicAtom(i);\n    result.isStereoCenter = molecule.isAtomStereoCenter(i);\n    result.isRing = molecule.isRingAtom(i);\n    result.isSmallRing = molecule.isSmallRingAtom(i);\n    result.isStabilized = molecule.isStabilizedAtom(i);\n\n    // todo HACK to circumvent bug in OCL that consider than an hydrogen is connected to itself\n    result.extra.singleBonds =\n      result.atomicNo === 1 ? 0 : result.implicitHydrogens;\n    for (let j = 0; j < molecule.getAllConnAtoms(i); j++) {\n      let bond = molecule.getConnBond(i, j);\n      let bondOrder = molecule.getBondOrder(bond);\n      if (molecule.isAromaticBond(bond)) {\n        extra.aromaticBonds++;\n      } else if (bondOrder === 1) {\n        // not an hydrogen\n        extra.singleBonds++;\n      } else if (bondOrder === 2) {\n        extra.doubleBonds++;\n      } else if (bondOrder === 3) {\n        extra.tripleBonds++;\n      }\n    }\n    result.extra.totalBonds =\n      result.extra.singleBonds +\n      result.extra.doubleBonds +\n      result.extra.tripleBonds +\n      result.extra.aromaticBonds;\n\n    if (result.atomicNo === 6) {\n      result.extra.cnoHybridation = result.extra.totalBonds - 1;\n    } else if (result.atomicNo === 7) {\n      result.extra.cnoHybridation = result.extra.totalBonds;\n    } else if (result.atomicNo === 8) {\n      result.extra.cnoHybridation = result.extra.totalBonds + 1;\n    } else if (result.atomicNo === 1) {\n      let connectedAtom =\n        molecule.getAllConnAtoms(i) === 0\n          ? 0\n          : molecule.getAtomicNo(molecule.getConnAtom(i, 0));\n      result.extra.hydrogenOnAtomicNo = connectedAtom;\n      if (connectedAtom === 7 || connectedAtom === 8) {\n        result.extra.labileHydrogen = true;\n      }\n    }\n  }\n  return results;\n}\n","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min() {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, 0);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n        }\n      }\n    }\n    return v;\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { Matrix } from 'ml-matrix';\n\n/**\n * Algorithm that finds the shortest distance from one node to the other\n * @param {Matrix} adjMatrix - A squared adjacency matrix\n * @return {Matrix} - Distance from a node to the other, -1 if the node is unreachable\n */\nexport default function floydWarshall(adjMatrix) {\n  if (Matrix.isMatrix(adjMatrix) && adjMatrix.columns !== adjMatrix.rows) {\n    throw new TypeError('The adjacency matrix should be squared');\n  }\n  const numVertices = adjMatrix.columns;\n  let distMatrix = new Matrix(numVertices, numVertices);\n  distMatrix.apply((row, column) => {\n    // principal diagonal is 0\n    if (row === column) {\n      distMatrix.set(row, column, 0);\n    } else {\n      let val = adjMatrix.get(row, column);\n\n      if (val || Object.is(val, -0)) {\n        // edges values remain the same\n        distMatrix.set(row, column, val);\n      } else {\n        // 0 values become infinity\n        distMatrix.set(row, column, Number.POSITIVE_INFINITY);\n      }\n    }\n  });\n\n  for (let k = 0; k < numVertices; ++k) {\n    for (let i = 0; i < numVertices; ++i) {\n      for (let j = 0; j < numVertices; ++j) {\n        let dist = distMatrix.get(i, k) + distMatrix.get(k, j);\n        if (distMatrix.get(i, j) > dist) {\n          distMatrix.set(i, j, dist);\n        }\n      }\n    }\n  }\n\n  // When there's no connection the value is -1\n  distMatrix.apply((row, column) => {\n    if (distMatrix.get(row, column) === Number.POSITIVE_INFINITY) {\n      distMatrix.set(row, column, -1);\n    }\n  });\n  return distMatrix;\n}\n","import floydWarshall from 'ml-floyd-warshall';\nimport { Matrix } from 'ml-matrix';\n\n/**\n * Returns a connectivity matrix\n * @param {OCL.Molecule} molecule\n * @param {object} [options={}]\n * @param {boolean} [options.pathLength=false] get the path length between atoms\n * @param {boolean} [options.mass=false] set the nominal mass of the atoms on diagonal\n * @param {boolean} [options.atomicNo=false] set the atomic number of the atom on diagonal\n * @param {boolean} [options.negativeAtomicNo=false] set the atomic number * -1 of the atom on diagonal\n * @param {boolean} [options.sdt=false] set 1, 2 or 3 depending if single, double or triple bond\n * @param {boolean} [options.sdta=false] set 1, 2, 3 or 4 depending if single, double, triple or aromatic  bond\n */\nexport function getConnectivityMatrix(molecule, options = {}) {\n  const OCL = molecule.getOCL();\n  molecule.ensureHelperArrays(OCL.Molecule.cHelperNeighbours);\n  let nbAtoms = molecule.getAllAtoms();\n\n  let result = new Array(nbAtoms).fill();\n  result = result.map(() => new Array(nbAtoms).fill(0));\n\n  if (!options.pathLength) {\n    if (options.atomicNo) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = molecule.getAtomicNo(i);\n      }\n    } else if (options.negativeAtomicNo) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = -molecule.getAtomicNo(i);\n      }\n    } else if (options.mass) {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = OCL.Molecule.cRoundedMass[molecule.getAtomicNo(i)];\n      }\n    } else {\n      for (let i = 0; i < nbAtoms; i++) {\n        result[i][i] = 1;\n      }\n    }\n  }\n\n  if (options.sdt) {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(i, j);\n      }\n    }\n  } else if (options.sdta) {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        let bondNumber = molecule.getConnBond(i, j);\n        if (molecule.isAromaticBond(bondNumber)) {\n          result[i][molecule.getConnAtom(i, j)] = 4;\n        } else {\n          result[i][molecule.getConnAtom(i, j)] = molecule.getConnBondOrder(\n            i,\n            j,\n          );\n        }\n      }\n    }\n  } else {\n    for (let i = 0; i < nbAtoms; i++) {\n      let l = molecule.getAllConnAtoms(i);\n      for (let j = 0; j < l; j++) {\n        result[i][molecule.getConnAtom(i, j)] = 1;\n      }\n    }\n  }\n\n  if (options.pathLength) {\n    result = floydWarshall(new Matrix(result)).to2DArray();\n  }\n  return result;\n}\n","'use strict';\n\nfunction atomSorter(a, b) {\n  if (a === b) return 0;\n  if (a === 'C') return -1;\n  if (b === 'C') return 1;\n  if (a === 'H') return -1;\n  if (b === 'H') return 1;\n  if (a < b) return -1;\n  return 1;\n}\n\nmodule.exports = atomSorter;\n","import atomSorter from 'atom-sorter';\n\n/**\n * Calculate the molecular formula in 'chemcalc' notation taking into account fragments, isotopes and charges\n * {OCL.Molecule} [molecule] an instance of OCL.Molecule\n * @returns {object}\n */\n\nexport function getMF(molecule) {\n  let entries = molecule.getFragments();\n  let result = {};\n  let parts = [];\n  let allAtoms = [];\n\n  entries.forEach((entry) => {\n    let mf = getFragmentMF(entry, allAtoms);\n    parts.push(mf);\n  });\n\n  let counts = {};\n  for (let part of parts) {\n    if (!counts[part]) counts[part] = 0;\n    counts[part]++;\n  }\n  parts = [];\n  for (let key of Object.keys(counts).sort()) {\n    if (counts[key] > 1) {\n      parts.push(counts[key] + key);\n    } else {\n      parts.push(key);\n    }\n  }\n\n  result.parts = parts;\n  result.mf = toMFString(allAtoms);\n  return result;\n}\n\nfunction getFragmentMF(molecule, allAtoms) {\n  let atoms = [];\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    let atom = {};\n    atom.charge = molecule.getAtomCharge(i);\n    atom.label = molecule.getAtomLabel(i);\n    atom.mass = molecule.getAtomMass(i);\n    atom.implicitHydrogens = molecule.getImplicitHydrogens(i);\n    atoms.push(atom);\n    allAtoms.push(atom);\n  }\n  return toMFString(atoms);\n}\n\nfunction toMFString(atoms) {\n  let charge = 0;\n  let mfs = {};\n  for (let atom of atoms) {\n    let label = atom.label;\n    charge += atom.charge;\n    if (atom.mass) {\n      label = `[${atom.mass}${label}]`;\n    }\n    let mfAtom = mfs[label];\n    if (!mfAtom) {\n      mfs[label] = 0;\n    }\n    mfs[label] += 1;\n    if (atom.implicitHydrogens) {\n      if (!mfs.H) mfs.H = 0;\n      mfs.H += atom.implicitHydrogens;\n    }\n  }\n\n  let mf = '';\n  let keys = Object.keys(mfs).sort(atomSorter);\n  for (let key of keys) {\n    mf += key;\n    if (mfs[key] > 1) mf += mfs[key];\n  }\n\n  if (charge > 0) {\n    mf += `(+${charge > 1 ? charge : ''})`;\n  } else if (charge < 0) {\n    mf += `(${charge < -1 ? charge : '-'})`;\n  }\n  return mf;\n}\n","/**\n * Return the number of Hydroxyl groups in a molecule or fragment\n * @param {OCL.Molecule} molecule\n * @returns {number} 'Number of Hydroxyl groups'\n */\n\nexport function nbOH(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let carbonyl = false;\n      let hydroxyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (\n            molecule.getBondOrder(neighbourBond) === 1 &&\n            molecule.getAllHydrogens(neighbourAtom) > 0\n          ) {\n            // If there is more than a Hydroxyl in the same carbon atome they are not couted as Hydroxyl groups\n            if (hydroxyl) {\n              hydroxyl = false;\n              break;\n            }\n            hydroxyl = true;\n          } else if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is Carbonyl group on the same carbon atom it is not couted as Hydroxyl group\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Hydroxyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl === false && hydroxyl && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Carboxyl groups in a molecule or fragment\n * @param {OCL.Molecule} molecule\n * @returns {number} 'Number of Carboxyl groups'\n */\n\nexport function nbCOOH(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let carbonyl = false;\n      let hydroxyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (\n            molecule.getBondOrder(neighbourBond) === 1 &&\n            molecule.getAllHydrogens(neighbourAtom) > 0\n          ) {\n            // If there is more than a Hydroxyl in the same carbon atom it is not couted as Carboxyl group\n            if (hydroxyl) {\n              hydroxyl = false;\n              break;\n            }\n            hydroxyl = true;\n          } else if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is more than one carbonyl in the same carbon atom it is not count as Carboxyl group\n            if (carbonyl) {\n              carbonyl = false;\n              break;\n            }\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carboxyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl && hydroxyl && carbonOrHydrogen) counter++;\n    }\n  }\n  return counter;\n}\n","/**\n * Return the number of Carbonyl groups in a molecule or fragment\n * @param {OCL.Molecule} molecule\n * @returns {number} 'Number of Carbonyl groups'\n */\n\nexport function nbCHO(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    // if there is not at least one hydrogen in the carbon atom there can not be a carbonyl group\n    if (molecule.getAtomicNo(i) === 6 && molecule.getAllHydrogens(i) > 0) {\n      let carbonyl = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n        if (molecule.getAtomicNo(neighbourAtom) === 8) {\n          if (molecule.getBondOrder(neighbourBond) === 2) {\n            // If there is more than one carbonyl group on the same carbon atom they are not counted as carbonyl groups\n            if (carbonyl) {\n              carbonyl = false;\n              break;\n            }\n            carbonyl = true;\n          }\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Carbonyl group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (carbonyl && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Primary amine groups in a molecule or fragment\n * @param {OCL.Molecule} molecule\n * @returns {number} 'Number of Primary amine groups'\n */\n\nexport function nbNH2(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let amine = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n\n        if (\n          molecule.getAtomicNo(neighbourAtom) === 7 &&\n          molecule.getBondOrder(neighbourBond) === 1 &&\n          molecule.getAllHydrogens(neighbourAtom) > 1\n        ) {\n          // If there is more than a Primary amine in the same carbon atom they are not couted as Primary amines groups\n          if (amine) {\n            amine = false;\n            break;\n          }\n          amine = true;\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Primary amine group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n      if (amine && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Return the number of Nitrile groups in a molecule or fragment\n * @param {OCL.Molecule} molecule\n * @returns {number} 'Number of Nitrile groups'\n */\n\nexport function nbCN(molecule) {\n  let counter = 0;\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    if (molecule.getAtomicNo(i) === 6) {\n      let cn = false;\n      let carbonOrHydrogen = true;\n      for (\n        let neighbour = 0;\n        neighbour < molecule.getConnAtoms(i);\n        neighbour++\n      ) {\n        const neighbourAtom = molecule.getConnAtom(i, neighbour);\n\n        const neighbourBond = molecule.getConnBond(i, neighbour);\n\n        if (\n          molecule.getAtomicNo(neighbourAtom) === 7 &&\n          molecule.getBondOrder(neighbourBond) === 3\n        ) {\n          // If there is more than one Nitrile group in the same carbon atome they are not counted as Nitrile groups\n          if (cn) {\n            cn = false;\n            break;\n          }\n          cn = true;\n        } else if (\n          // If there is not at least one carbon or hydrogen as neighbour atom it is not counted as Nitrile group\n          molecule.getAtomicNo(neighbourAtom) !== 6 &&\n          molecule.getAtomicNo(neighbourAtom) !== 1\n        ) {\n          carbonOrHydrogen = false;\n        }\n      }\n\n      if (cn && carbonOrHydrogen) counter++;\n    }\n  }\n\n  return counter;\n}\n","/**\n * Calculates the path between 2 atoms\n * @param {OCL.Molecule} molecule\n * @param {number} from - index of the first atom\n * @param {number} to - index of the end atom\n * @param {number} maxLength - maximal length of the path\n */\nexport function getPathAndTorsion(molecule, from, to, maxLength) {\n  let originalAtoms = []; // path before renumbering\n  molecule.getPath(originalAtoms, from, to, maxLength + 1);\n  let torsion;\n  if (originalAtoms.length === 4) {\n    torsion = molecule.calculateTorsion(originalAtoms);\n  }\n\n  return {\n    atoms: originalAtoms,\n    from,\n    to,\n    torsion,\n    length: originalAtoms.length - 1,\n  };\n}\n","import { getHoseCodesForPath } from '../hose/getHoseCodesForPath';\nimport { getAtomsInfo } from '../util/getAtomsInfo';\nimport { getConnectivityMatrix } from '../util/getConnectivityMatrix';\n\nimport { getPathAndTorsion } from './getPathAndTorsion.js';\n\nlet fragment;\n\n/**\n *\n * @param {OCL.Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [options.fromLabel='H']\n * @param {string} [options.toLabel='H']\n * @param {number} [options.minLength=1]\n * @param {number} [options.maxLength=4]\n * @param {boolean} [options.withHOSES=false]\n\n */\nexport function getPathsInfo(molecule, options = {}) {\n  const {\n    fromLabel = 'H',\n    toLabel = 'H',\n    minLength = 1,\n    maxLength = 4,\n    withHOSES = false,\n  } = options;\n\n  const OCL = molecule.getOCL();\n\n  if (!fragment) {\n    fragment = new OCL.Molecule(0, 0);\n  }\n\n  let fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n  let toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n\n  // we need to find all the atoms 'fromLabel' and 'toLabel'\n  let atomsInfo = getAtomsInfo(molecule);\n\n  let pathLengthMatrix = getConnectivityMatrix(molecule, {\n    pathLength: true,\n  });\n\n  for (let from = 0; from < molecule.getAllAtoms(); from++) {\n    atomsInfo[from].paths = [];\n    for (let to = 0; to < molecule.getAllAtoms(); to++) {\n      if (from !== to) {\n        if (molecule.getAtomicNo(from) === fromAtomicNumber) {\n          if (molecule.getAtomicNo(to) === toAtomicNumber) {\n            let pathLength = pathLengthMatrix[from][to];\n            if (pathLength >= minLength && pathLength <= maxLength) {\n              if (withHOSES) {\n                atomsInfo[from].paths.push(\n                  getHoseCodesForPath(molecule, from, to, pathLength),\n                );\n              } else {\n                atomsInfo[from].paths.push(\n                  getPathAndTorsion(molecule, from, to, pathLength),\n                );\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return atomsInfo;\n}\n","/**\n * Get the shortest path between each pair of atoms in the molecule\n * @param {OCL.Molecule} molecule\n * @param {object} [options={}]\n * @param {string} [opions.fromLabel='H']\n * @param {string} [opions.toLabel='H']\n * @param {string} [opions.maxLength=4]\n * @returns {Array<Array>} A matrix containing on each cell (i,j) the shortest path from atom i to atom j\n */\nexport function getShortestPaths(molecule, options = {}) {\n  const OCL = molecule.getOCL();\n  const { fromLabel = '', toLabel = '', maxLength = 3 } = options;\n\n  let fromAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(fromLabel);\n  let toAtomicNumber = OCL.Molecule.getAtomicNoFromLabel(toLabel);\n\n  const nbAtoms = molecule.getAllAtoms();\n  let allShortestPaths = new Array(nbAtoms);\n  for (let i = 0; i < nbAtoms; i++) {\n    allShortestPaths[i] = new Array(nbAtoms);\n  }\n\n  for (let from = 0; from < nbAtoms; from++) {\n    allShortestPaths[from][from] = [from];\n    for (let to = from + 1; to < nbAtoms; to++) {\n      if (\n        (fromAtomicNumber === 0 ||\n          molecule.getAtomicNo(from) === fromAtomicNumber) &&\n        (toAtomicNumber === 0 || molecule.getAtomicNo(to) === toAtomicNumber)\n      ) {\n        let path = [];\n        molecule.getPath(path, from, to, maxLength);\n        if (path.length) {\n          allShortestPaths[from][to] = path.slice();\n          allShortestPaths[to][from] = path.reverse();\n        } else {\n          allShortestPaths[from][to] = null;\n          allShortestPaths[to][from] = null;\n        }\n      } else {\n        allShortestPaths[from][to] = null;\n        allShortestPaths[to][from] = null;\n      }\n    }\n  }\n\n  return allShortestPaths;\n}\n","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/* @license\nPapa Parse\nv5.3.2\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=n&&/blob:/i.test((f.location||{}).protocol),a={},h=0,b={parse:function(e,t){var i=(t=t||{}).dynamicTyping||!1;M(i)&&(t.dynamicTypingFunction=i,i={});if(t.dynamicTyping=i,t.transform=!!M(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var r=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(i=f.URL||f.webkitURL||null,r=s.toString(),b.BLOB_URL||(b.BLOB_URL=i.createObjectURL(new Blob([\"(\",r,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var i,r;return t.onmessage=_,t.id=h++,a[t.id]=t}();return r.userStep=t.step,r.userChunk=t.chunk,r.userComplete=t.complete,r.userError=t.error,t.step=M(t.step),t.chunk=M(t.chunk),t.complete=M(t.complete),t.error=M(t.error),delete t.worker,void r.postMessage({input:e,config:t,workerId:r.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new l(t):new p(t):!0===e.readable&&M(e.read)&&M(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,i=!1,r=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(i=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");r=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var h=new RegExp(j(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return u(null,e,i);if(\"object\"==typeof e[0])return u(r||Object.keys(e[0]),e,i)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||r),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),u(e.fields||[],e.data||[],i);throw new Error(\"Unable to serialize unrecognized input\");function u(e,t,i){var r=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&_){for(var a=0;a<e.length;a++)0<a&&(r+=m),r+=v(e[a],a);0<t.length&&(r+=y)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(i&&!n&&(u=\"greedy\"===i?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===i&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(r+=m);var g=n&&s?e[p]:p;r+=v(t[o][g],p)}o<t.length-1&&(!i||0<h&&!f)&&(r+=y)}}return r}function v(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var i=!1;o&&\"string\"==typeof e&&o.test(e)&&(e=\"'\"+e,i=!0);var r=e.toString().replace(h,a);return(i=i||!0===n||\"function\"==typeof n&&n(e,t)||Array.isArray(n)&&n[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(r,b.BAD_DELIMITERS)||-1<r.indexOf(m)||\" \"===r.charAt(0)||\" \"===r.charAt(r.length-1))?s+r+s:r}}};if(b.RECORD_SEP=String.fromCharCode(30),b.UNIT_SEP=String.fromCharCode(31),b.BYTE_ORDER_MARK=\"\\ufeff\",b.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',b.BYTE_ORDER_MARK],b.WORKERS_SUPPORTED=!n&&!!f.Worker,b.NODE_STREAM_INPUT=1,b.LocalChunkSize=10485760,b.RemoteChunkSize=5242880,b.DefaultDelimiter=\",\",b.Parser=E,b.ParserHandle=i,b.NetworkStreamer=l,b.FileStreamer=c,b.StringStreamer=p,b.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var i=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},i)})}),e(),this;function e(){if(0!==h.length){var e,t,i,r,n=h[0];if(M(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,i=n.inputElem,r=s.reason,void(M(o.error)&&o.error({name:e},t,i,r));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){M(a)&&a(e,n.file,n.inputElem),u()},b.parse(n.file,n.instanceConfig)}else M(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=w(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new i(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&M(this._config.beforeFirstChunk)){var i=this._config.beforeFirstChunk(e);void 0!==i&&(e=i)}this.isFirstChunk=!1,this._halted=!1;var r=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(r,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=r.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(M(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!M(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){M(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var r;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),u.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(r=new XMLHttpRequest,this._config.withCredentials&&(r.withCredentials=this._config.withCredentials),n||(r.onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)),r.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)r.setRequestHeader(t,e[t])}if(this._config.chunkSize){var i=this._start+this._config.chunkSize-1;r.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+i)}try{r.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===r.status&&this._chunkError()}},this._chunkLoaded=function(){4===r.readyState&&(r.status<200||400<=r.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:r.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(r),this.parseChunk(r.responseText)))},this._chunkError=function(e){var t=r.statusText||e;this._sendError(new Error(t))}}function c(e){var r,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),u.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((r=new FileReader).onload=v(this._chunkLoaded,this),r.onerror=v(this._chunkError,this)):r=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var i=r.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:i}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(r.error)}}function p(e){var i;u.call(this,e=e||{}),this.stream=function(e){return i=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=i.substring(0,t),i=i.substring(t)):(e=i,i=\"\"),this._finished=!i,this.parseChunk(e)}}}function g(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),r=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function i(m){var a,o,h,r=Math.pow(2,53),n=-r,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,u=/^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))$/,t=this,i=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(M(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;i+=e.data.length,m.preview&&i>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&h&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),h=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){M(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t<c.data.length;t++)c.data[t].forEach(e);c.data.splice(0,1)}else c.data.forEach(e)}(),function(){if(!c||!m.header&&!m.dynamicTyping&&!m.transform)return c;function e(e,t){var i,r=m.header?{}:[];for(i=0;i<e.length;i++){var n=i,s=e[i];m.header&&(n=i>=l.length?\"__parsed_extra\":l[i]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(r[n]=r[n]||[],r[n].push(s)):r[n]=s}return m.header&&(i>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+i,f+t):i<l.length&&k(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+l.length+\" fields but parsed \"+i,f+t)),r}var t=1;!c.data.length||Array.isArray(c.data[0])?(c.data=c.data.map(e),t=c.data.length):c.data=e(c.data,0);m.header&&c.meta&&(c.meta.fields=l);return f+=t,c}()}function _(){return m.header&&0===l.length}function v(e,t){return i=e,m.dynamicTypingFunction&&void 0===m.dynamicTyping[i]&&(m.dynamicTyping[i]=m.dynamicTypingFunction(i)),!0===(m.dynamicTyping[i]||m.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(function(e){if(s.test(e)){var t=parseFloat(e);if(n<t&&t<r)return!0}return!1}(t)?parseFloat(t):u.test(t)?new Date(t):\"\"===t?null:t):t;var i}function k(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),c.errors.push(n)}this.parse=function(e,t,i){var r=m.quoteChar||'\"';if(m.newline||(m.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(j(t)+\"([^]*?)\"+j(t),\"gm\"),r=(e=e.replace(i,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return\"\\n\";for(var a=0,o=0;o<r.length;o++)\"\\n\"===r[o][0]&&a++;return a>=r.length/2?\"\\r\\n\":\"\\r\"}(e,r)),h=!1,m.delimiter)M(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,i,r,n){var s,a,o,h;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var u=0;u<n.length;u++){var f=n[u],d=0,l=0,c=0;o=void 0;for(var p=new E({comments:r,delimiter:f,newline:t,preview:10}).parse(e),g=0;g<p.data.length;g++)if(i&&y(p.data[g]))c++;else{var _=p.data[g].length;l+=_,void 0!==o?0<_&&(d+=Math.abs(_-o),o=_):o=_}0<p.data.length&&(l/=p.data.length-c),(void 0===a||d<=a)&&(void 0===h||h<l)&&1.99<l&&(a=d,s=f,h=l)}return{successful:!!(m.delimiter=s),bestDelimiter:s}}(e,m.newline,m.skipEmptyLines,m.comments,m.delimitersToGuess);n.successful?m.delimiter=n.bestDelimiter:(h=!0,m.delimiter=b.DefaultDelimiter),c.meta.delimiter=m.delimiter}var s=w(m);return m.preview&&m.header&&s.preview++,a=e,o=new E(s),c=o.parse(a,t,i),g(),d?{meta:{paused:!0}}:c||{meta:{paused:!1}}},this.paused=function(){return d},this.pause=function(){d=!0,o.abort(),a=M(m.chunk)?\"\":a.substring(o.getCharIndex())},this.resume=function(){t.streamer._halted?(d=!1,t.streamer.parseChunk(a,!0)):setTimeout(t.resume,3)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),c.meta.aborted=!0,M(m.complete)&&m.complete(c),a=\"\"}}function j(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function E(e){var S,O=(e=e||{}).delimiter,x=e.newline,I=e.comments,T=e.step,D=e.preview,A=e.fastMode,L=S=void 0===e.quoteChar||null===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(L=e.escapeChar),(\"string\"!=typeof O||-1<b.BAD_DELIMITERS.indexOf(O))&&(O=\",\"),I===O)throw new Error(\"Comment character same as delimiter\");!0===I?I=\"#\":(\"string\"!=typeof I||-1<b.BAD_DELIMITERS.indexOf(I))&&(I=!1),\"\\n\"!==x&&\"\\r\"!==x&&\"\\r\\n\"!==x&&(x=\"\\n\");var F=0,z=!1;this.parse=function(r,t,i){if(\"string\"!=typeof r)throw new Error(\"Input must be a string\");var n=r.length,e=O.length,s=x.length,a=I.length,o=M(T),h=[],u=[],f=[],d=F=0;if(!r)return C();if(A||!1!==A&&-1===r.indexOf(S)){for(var l=r.split(x),c=0;c<l.length;c++){if(f=l[c],F+=f.length,c!==l.length-1)F+=x.length;else if(i)return C();if(!I||f.substring(0,a)!==I){if(o){if(h=[],k(f.split(O)),R(),z)return C()}else k(f.split(O));if(D&&D<=c)return h=h.slice(0,D),C(!0)}}return C()}for(var p=r.indexOf(O,F),g=r.indexOf(x,F),_=new RegExp(j(L)+j(S),\"g\"),m=r.indexOf(S,F);;)if(r[F]!==S)if(I&&0===f.length&&r.substring(F,F+a)===I){if(-1===g)return C();F=g+s,g=r.indexOf(x,F),p=r.indexOf(O,F)}else if(-1!==p&&(p<g||-1===g))f.push(r.substring(F,p)),F=p+e,p=r.indexOf(O,F);else{if(-1===g)break;if(f.push(r.substring(F,g)),w(g+s),o&&(R(),z))return C();if(D&&h.length>=D)return C(!0)}else for(m=F,F++;;){if(-1===(m=r.indexOf(S,m+1)))return i||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:F}),E();if(m===n-1)return E(r.substring(F,m).replace(_,S));if(S!==L||r[m+1]!==L){if(S===L||0===m||r[m-1]!==L){-1!==p&&p<m+1&&(p=r.indexOf(O,m+1)),-1!==g&&g<m+1&&(g=r.indexOf(x,m+1));var y=b(-1===g?p:Math.min(p,g));if(r.substr(m+1+y,e)===O){f.push(r.substring(F,m).replace(_,S)),r[F=m+1+y+e]!==S&&(m=r.indexOf(S,F)),p=r.indexOf(O,F),g=r.indexOf(x,F);break}var v=b(g);if(r.substring(m+1+v,m+1+v+s)===x){if(f.push(r.substring(F,m).replace(_,S)),w(m+1+v+s),p=r.indexOf(O,F),m=r.indexOf(S,F),o&&(R(),z))return C();if(D&&h.length>=D)return C(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:F}),m++}}else m++}return E();function k(e){h.push(e),d=F}function b(e){var t=0;if(-1!==e){var i=r.substring(m+1,e);i&&\"\"===i.trim()&&(t=i.length)}return t}function E(e){return i||(void 0===e&&(e=r.substring(F)),f.push(e),F=n,k(f),o&&R()),C()}function w(e){F=e,k(f),f=[],g=r.indexOf(x,F)}function C(e){return{data:h,errors:u,meta:{delimiter:O,linebreak:x,aborted:z,truncated:!!e,cursor:d+(t||0)}}}function R(){T(C()),h=[],u=[]}},this.abort=function(){z=!0},this.getCharIndex=function(){return F}}function _(e){var t=e.data,i=a[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(M(i.userStep)){for(var s=0;s<t.results.data.length&&(i.userStep({data:t.results.data[s],errors:t.results.errors,meta:t.results.meta},n),!r);s++);delete t.results}else M(i.userChunk)&&(i.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!r&&m(t.workerId,t.results)}function m(e,t){var i=a[e];M(i.userComplete)&&i.userComplete(t),i.terminate(),delete a[e]}function y(){throw new Error(\"Not implemented.\")}function w(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=w(e[i]);return t}function v(e,t){return function(){e.apply(t,arguments)}}function M(e){return\"function\"==typeof e}return o&&(f.onmessage=function(e){var t=e.data;void 0===b.WORKER_ID&&t&&(b.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:b.WORKER_ID,results:b.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var i=b.parse(t.input,t.config);i&&f.postMessage({workerId:b.WORKER_ID,results:i,finished:!0})}}),(l.prototype=Object.create(u.prototype)).constructor=l,(c.prototype=Object.create(u.prototype)).constructor=c,(p.prototype=Object.create(p.prototype)).constructor=p,(g.prototype=Object.create(u.prototype)).constructor=g,b});","export default function getMoleculeCreators(Molecule) {\n  const fields = new Map();\n\n  fields.set('oclid', Molecule.fromIDCode);\n  fields.set('idcode', Molecule.fromIDCode);\n  fields.set('smiles', Molecule.fromSmiles);\n  fields.set('molfile', Molecule.fromMolfile);\n\n  return fields;\n}\n","import { ensureString } from 'ensure-string';\nimport Papa from 'papaparse';\n\nimport getMoleculeCreators from './getMoleculeCreators';\n\nconst defaultCSVOptions = {\n  header: true,\n  dynamicTyping: true,\n  skipEmptyLines: true,\n};\n\nexport default async function appendCSV(moleculesDB, csv, options = {}) {\n  const { onStep } = options;\n  csv = ensureString(csv);\n  const moleculeCreators = getMoleculeCreators(moleculesDB.OCL.Molecule);\n\n  if (typeof csv !== 'string') {\n    throw new TypeError('csv must be a string');\n  }\n  options = { ...defaultCSVOptions, ...options };\n\n  const parsed = Papa.parse(csv, options);\n  const fields = parsed.meta.fields;\n  const stats = new Array(fields.length);\n  const firstElement = parsed.data[0];\n  let moleculeCreator, moleculeField;\n  for (let i = 0; i < fields.length; i++) {\n    stats[i] = {\n      label: fields[i],\n      isNumeric: typeof firstElement[fields[i]] === 'number',\n    };\n    const lowerField = fields[i].toLowerCase();\n    if (moleculeCreators.has(lowerField)) {\n      moleculeCreator = moleculeCreators.get(lowerField);\n      moleculeField = fields[i];\n    }\n  }\n  if (!moleculeCreator) {\n    throw new Error('this document does not contain any molecule field');\n  }\n  moleculesDB.statistics = stats;\n\n  for (let i = 0; i < parsed.data.length; i++) {\n    moleculesDB.pushEntry(\n      moleculeCreator(parsed.data[i][moleculeField]),\n      parsed.data[i],\n    );\n    if (onStep) {\n      await onStep(i + 1, parsed.data.length);\n    }\n  }\n}\n","export default function appendColor(moleculesDB, options = {}) {\n  const {\n    dataLabel,\n    propertyLabel,\n    minValue,\n    maxValue,\n    minHue = 0,\n    maxHue = 360,\n    saturation = 65,\n    lightness = 65,\n    colorLabel = 'color',\n  } = options;\n\n  const db = moleculesDB.getDB();\n  let values;\n  if (dataLabel) {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({ value: datum[dataLabel], data: datum })),\n      )\n      .flat();\n  } else if (propertyLabel) {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({\n          value: result.properties[propertyLabel],\n          data: datum,\n        })),\n      )\n      .flat();\n  } else {\n    values = db\n      .map((result) =>\n        result.data.map((datum) => ({ value: undefined, data: datum })),\n      )\n      .flat();\n  }\n\n  if (minValue !== undefined) {\n    values = values.forEach((value) => {\n      if (value.value !== undefined && value.value < minValue) {\n        value.value = minValue;\n      }\n    });\n  }\n\n  if (maxValue !== undefined) {\n    values = values.forEach((value) => {\n      if (value.value !== undefined && value.value > maxValue) {\n        value.value = maxValue;\n      }\n    });\n  }\n\n  const definedValues = values.filter((value) => value.value !== undefined);\n  const min = Math.min(...definedValues.map((value) => value.value));\n  const max = Math.max(...definedValues.map((value) => value.value));\n\n  for (let value of values) {\n    if (value.value !== undefined) {\n      value.data[colorLabel] =\n        `hsl(${\n        Math.floor(\n          ((value.value - min) / (max - min)) * (maxHue - minHue) + minHue,\n        )\n        },${\n        saturation\n        }%,${\n        lightness\n        }%)`;\n    } else {\n      value.data.color = 'black';\n    }\n  }\n}\n","export function getEntriesBoundaries(string, substring, eol) {\n  const res = [];\n  let previous = 0;\n  let next = 0;\n  while (next !== -1) {\n    next = string.indexOf(substring, previous);\n    if (next !== -1) {\n      res.push([previous, next]);\n      previous = next =\n        string.indexOf(eol, next + substring.length) + eol.length;\n    } else {\n      res.push([previous, string.length]);\n    }\n  }\n  return res;\n}\n","import { ensureString } from 'ensure-string';\n\nimport { getEntriesBoundaries } from './getEntriesBoundaries';\n/**\n *  Parse a SDF file\n * @param {string|ArrayBuffer|Uint8Array} sdf SDF file to parse\n * @param {any} [options={}]\n * @param {array<string>} [options.include] List of fields to include\n * @param {array<string>} [options.exclude] List of fields to exclude\n * @param {boolean} [options.dynamicTyping] Dynamically type the data\n * @param {object} [options.modifiers] Object containing callbacks to apply on some specific fields\n * @param {boolean} [options.mixedEOL=false] Set to true if you know there is a mixture between \\r\\n and \\n\n */\nexport function parse(sdf, options = {}) {\n  const {\n    include,\n    exclude,\n    filter,\n    modifiers = {},\n    forEach = {},\n    dynamicTyping = true,\n  } = options;\n\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('Parameter \"sdf\" must be a string');\n  }\n\n  let eol = '\\n';\n  if (options.mixedEOL) {\n    sdf = sdf.replace(/\\r\\n/g, '\\n');\n    sdf = sdf.replace(/\\r/g, '\\n');\n  } else {\n    // we will find the delimiter in order to be much faster and not use regular expression\n    let header = sdf.substr(0, 1000);\n    if (header.indexOf('\\r\\n') > -1) {\n      eol = '\\r\\n';\n    } else if (header.indexOf('\\r') > -1) {\n      eol = '\\r';\n    }\n  }\n\n  let entriesBoundaries = getEntriesBoundaries(sdf, `${eol}$$$$`, eol);\n  let molecules = [];\n  let labels = {};\n\n  let start = Date.now();\n\n  for (let i = 0; i < entriesBoundaries.length; i++) {\n    let sdfPart = sdf.substring(...entriesBoundaries[i]);\n    let parts = sdfPart.split(`${eol}>`);\n    if (parts.length > 0 && parts[0].length > 5) {\n      let molecule = {};\n      let currentLabels = [];\n      molecule.molfile = parts[0] + eol;\n      for (let j = 1; j < parts.length; j++) {\n        let lines = parts[j].split(eol);\n        let from = lines[0].indexOf('<');\n        let to = lines[0].indexOf('>');\n        let label = lines[0].substring(from + 1, to);\n        currentLabels.push(label);\n        if (!labels[label]) {\n          labels[label] = {\n            counter: 0,\n            isNumeric: dynamicTyping,\n            keep: false,\n          };\n          if (\n            (!exclude || exclude.indexOf(label) === -1) &&\n            (!include || include.indexOf(label) > -1)\n          ) {\n            labels[label].keep = true;\n            if (modifiers[label]) {\n              labels[label].modifier = modifiers[label];\n            }\n            if (forEach[label]) {\n              labels[label].forEach = forEach[label];\n            }\n          }\n        }\n        if (labels[label].keep) {\n          for (let k = 1; k < lines.length - 1; k++) {\n            if (molecule[label]) {\n              molecule[label] += eol + lines[k];\n            } else {\n              molecule[label] = lines[k];\n            }\n          }\n          if (labels[label].modifier) {\n            let modifiedValue = labels[label].modifier(molecule[label]);\n            if (modifiedValue === undefined || modifiedValue === null) {\n              delete molecule[label];\n            } else {\n              molecule[label] = modifiedValue;\n            }\n          }\n          if (labels[label].isNumeric) {\n            if (\n              !isFinite(molecule[label]) ||\n              molecule[label].match(/^0[0-9]/)\n            ) {\n              labels[label].isNumeric = false;\n            }\n          }\n        }\n      }\n      if (!filter || filter(molecule)) {\n        molecules.push(molecule);\n        // only now we can increase the counter\n        for (let j = 0; j < currentLabels.length; j++) {\n          labels[currentLabels[j]].counter++;\n        }\n      }\n    }\n  }\n\n  // all numeric fields should be converted to numbers\n  for (let label in labels) {\n    let currentLabel = labels[label];\n    if (currentLabel.isNumeric) {\n      currentLabel.minValue = Infinity;\n      currentLabel.maxValue = -Infinity;\n      for (let j = 0; j < molecules.length; j++) {\n        if (molecules[j][label]) {\n          let value = parseFloat(molecules[j][label]);\n          molecules[j][label] = value;\n          if (value > currentLabel.maxValue) {\n            currentLabel.maxValue = value;\n          }\n          if (value < currentLabel.minValue) {\n            currentLabel.minValue = value;\n          }\n        }\n      }\n    }\n  }\n\n  // we check that a label is in all the records\n  for (let key in labels) {\n    if (labels[key].counter === molecules.length) {\n      labels[key].always = true;\n    } else {\n      labels[key].always = false;\n    }\n  }\n\n  let statistics = [];\n  for (let key in labels) {\n    let statistic = labels[key];\n    statistic.label = key;\n    statistics.push(statistic);\n  }\n\n  return {\n    time: Date.now() - start,\n    molecules: molecules,\n    labels: Object.keys(labels),\n    statistics: statistics,\n  };\n}\n","import { ensureString } from 'ensure-string';\nimport { parse } from 'sdf-parser';\n\nexport default async function appendSDF(moleculesDB, sdf, options = {}) {\n  const { onStep } = options;\n  sdf = ensureString(sdf);\n  if (typeof sdf !== 'string') {\n    throw new TypeError('sdf must be a string');\n  }\n  const parsed = parse(sdf);\n  moleculesDB.statistics = parsed.statistics;\n  for (let i = 0; i < parsed.molecules.length; i++) {\n    const molecule = parsed.molecules[i];\n    moleculesDB.pushEntry(\n      moleculesDB.OCL.Molecule.fromMolfile(molecule.molfile),\n      molecule,\n    );\n    if (onStep) {\n      await onStep(i + 1, parsed.molecules.length);\n    }\n  }\n}\n","import { ensureString } from 'ensure-string';\n\nexport default async function appendSmilesList(\n  moleculesDB,\n  text,\n  options = {},\n) {\n  const { onStep } = options;\n  text = ensureString(text);\n  if (typeof text !== 'string') {\n    throw new TypeError('text must be a string');\n  }\n  const smilesArray = text\n    .split(/\\r?\\n/)\n    .map((line) => line.trim())\n    .filter((line) => line);\n  for (let i = 0; i < smilesArray.length; i++) {\n    const oneSmiles = smilesArray[i];\n    moleculesDB.pushEntry(moleculesDB.OCL.Molecule.fromSmiles(oneSmiles));\n    if (onStep) {\n      await onStep(i + 1, smilesArray.length);\n    }\n  }\n}\n","export default function pushEntry(\n  moleculesDB,\n  molecule,\n  data = {},\n  moleculeInfo = {},\n) {\n  // the following line could be the source of problems if the idCode version\n  // changes\n\n  let moleculeIDCode = moleculeInfo.idCode\n    ? moleculeInfo.idCode\n    : molecule.getIDCode();\n  let entry = moleculesDB.db[moleculeIDCode];\n  if (!entry) {\n    // a new molecule\n    entry = { molecule, properties: {}, data: [], idCode: moleculeIDCode };\n    moleculesDB.db[moleculeIDCode] = entry;\n\n    // ensure helper arrays needed for substructure search\n    molecule.ensureHelperArrays(moleculesDB.OCL.Molecule.cHelperRings);\n    if (!moleculeInfo.index) {\n      entry.index = molecule.getIndex();\n    } else {\n      entry.index = moleculeInfo.index;\n    }\n\n    let molecularFormula;\n    if (!moleculeInfo.mw) {\n      molecularFormula = molecule.getMolecularFormula();\n      entry.properties.mw = molecularFormula.relativeWeight;\n    } else {\n      entry.properties.mw = moleculeInfo.mw;\n    }\n\n    if (moleculesDB.computeProperties) {\n      if (!molecularFormula) {\n        molecularFormula = molecule.getMolecularFormula();\n      }\n      const properties = new moleculesDB.OCL.MoleculeProperties(molecule);\n      entry.properties.em = molecularFormula.absoluteWeight;\n      entry.properties.mf = molecularFormula.formula;\n      entry.properties.acceptorCount = properties.acceptorCount;\n      entry.properties.donorCount = properties.donorCount;\n      entry.properties.logP = properties.logP;\n      entry.properties.logS = properties.logS;\n      entry.properties.polarSurfaceArea = properties.polarSurfaceArea;\n      entry.properties.rotatableBondCount = properties.rotatableBondCount;\n      entry.properties.stereoCenterCount = properties.stereoCenterCount;\n    }\n  }\n  entry.data.push(data);\n}\n","export default function pushMoleculeInfo(moleculesDB, moleculeInfo, data = {}) {\n  if (typeof moleculeInfo !== 'object') {\n    throw new Error('pushMoleculeInfo requires an object as first parameter');\n  }\n  const Molecule = moleculesDB.OCL.Molecule;\n  let molecule;\n  if (moleculeInfo.molfile) {\n    molecule = Molecule.fromMolfile(moleculeInfo.molfile);\n  }\n  if (moleculeInfo.smiles) molecule = Molecule.fromSmiles(moleculeInfo.smiles);\n  if (moleculeInfo.idCode) {\n    if (moleculesDB.db[moleculeInfo.idCode]) {\n      molecule = moleculesDB.db[moleculeInfo.idCode].molecule;\n    } else {\n      molecule = Molecule.fromIDCode(\n        moleculeInfo.idCode,\n        moleculeInfo.coordinates || false,\n      );\n    }\n  }\n\n  if (molecule) {\n    moleculesDB.pushEntry(molecule, data, moleculeInfo);\n  }\n}\n","import getMoleculeCreators from './getMoleculeCreators';\n\nexport default function search(moleculesDB, query, options = {}) {\n  const {\n    format = 'idCode',\n    mode = 'substructure',\n    flattenResult = true,\n    keepMolecule = false,\n    limit = Number.MAX_SAFE_INTEGER,\n  } = options;\n\n  if (typeof query === 'string') {\n    const moleculeCreators = getMoleculeCreators(moleculesDB.OCL.Molecule);\n    query = moleculeCreators.get(format.toLowerCase())(query);\n  } else if (!(query instanceof moleculesDB.OCL.Molecule)) {\n    throw new TypeError('toSearch must be a Molecule or string');\n  }\n\n  let result;\n  switch (mode.toLowerCase()) {\n    case 'exact':\n      result = exactSearch(moleculesDB, query, limit);\n      break;\n    case 'substructure':\n      result = subStructureSearch(moleculesDB, query, limit);\n      break;\n    case 'similarity':\n      result = similaritySearch(moleculesDB, query, limit);\n      break;\n    default:\n      throw new Error(`unknown search mode: ${options.mode}`);\n  }\n  return processResult(result, { flattenResult, keepMolecule, limit });\n}\n\nfunction exactSearch(moleculesDB, query) {\n  const queryIDCode = query.getIDCode();\n  let searchResult = moleculesDB.db[queryIDCode]\n    ? [moleculesDB.db[queryIDCode]]\n    : [];\n  return searchResult;\n}\n\nfunction subStructureSearch(moleculesDB, query) {\n  let resetFragment = false;\n  if (!query.isFragment()) {\n    resetFragment = true;\n    query.setFragment(true);\n  }\n\n  const queryMW = getMW(query);\n  const searchResult = [];\n  if (query.getAllAtoms() === 0) {\n    for (let idCode in moleculesDB.db) {\n      searchResult.push(moleculesDB.db[idCode]);\n    }\n  } else {\n    const queryIndex = query.getIndex();\n    const searcher = moleculesDB.searcher;\n\n    searcher.setFragment(query, queryIndex);\n    for (let idCode in moleculesDB.db) {\n      let entry = moleculesDB.db[idCode];\n      searcher.setMolecule(entry.molecule, entry.index);\n      if (searcher.isFragmentInMolecule()) {\n        searchResult.push(entry);\n      }\n    }\n  }\n\n  searchResult.sort((a, b) => {\n    return (\n      Math.abs(queryMW - a.properties.mw) - Math.abs(queryMW - b.properties.mw)\n    );\n  });\n\n  if (resetFragment) {\n    query.setFragment(false);\n  }\n\n  return searchResult;\n}\n\nfunction similaritySearch(moleculesDB, query) {\n  const queryIndex = query.getIndex();\n  const queryMW = getMW(query);\n  const queryIdCode = query.getIDCode();\n\n  const searchResult = [];\n  let similarity;\n  for (let idCode in moleculesDB.db) {\n    let entry = moleculesDB.db[idCode];\n    if (entry.idCode === queryIdCode) {\n      similarity = Number.MAX_SAFE_INTEGER;\n    } else {\n      similarity =\n        moleculesDB.OCL.SSSearcherWithIndex.getSimilarityTanimoto(\n          queryIndex,\n          entry.index,\n        ) *\n          1000000 -\n        Math.abs(queryMW - entry.properties.mw) / 10000;\n    }\n    searchResult.push({ similarity, entry });\n  }\n  searchResult.sort((a, b) => {\n    return b.similarity - a.similarity;\n  });\n  return searchResult.map((entry) => entry.entry);\n}\n\nfunction getMW(query) {\n  let copy = query.getCompactCopy();\n  copy.setFragment(false);\n  return copy.getMolecularFormula().relativeWeight;\n}\n\nfunction processResult(entries, options = {}) {\n  const {\n    flattenResult = true,\n    keepMolecule = false,\n    limit = Number.MAX_SAFE_INTEGER,\n  } = options;\n  let results = [];\n\n  if (flattenResult) {\n    for (let entry of entries) {\n      for (let data of entry.data) {\n        results.push({\n          data,\n          idCode: entry.idCode,\n          properties: entry.properties,\n          molecule: keepMolecule ? entry.molecule : undefined,\n        });\n      }\n    }\n  } else {\n    for (let entry of entries) {\n      results.push({\n        data: entry.data,\n        idCode: entry.idCode,\n        properties: entry.properties,\n        molecule: keepMolecule ? entry.molecule : undefined,\n      });\n    }\n  }\n  if (limit < results.length) results.length = limit;\n  return results;\n}\n","import appendCSV from './utils/appendCSV';\nimport appendColor from './utils/appendColor';\nimport appendSDF from './utils/appendSDF';\nimport appendSmilesList from './utils/appendSmilesList';\nimport pushEntry from './utils/pushEntry';\nimport pushMoleculeInfo from './utils/pushMoleculeInfo';\nimport search from './utils/search';\n/*\n    this.db is an object with properties 'oclID' that has as value\n    an object that contains the following properties:\n    * molecule: an OCL molecule instance\n    * index: OCL index used for substructure searching\n    * properties: all the calculates properties\n    * data: array containing free data associated with this molecule\n  */\n\nexport class MoleculesDB {\n  /**\n   *\n   * @param {OCL} [OCL] The openchemlib library\n   * @param {object} [options={}]\n   * @param {boolean} [options.computeProperties=false]\n   */\n  constructor(OCL, options = {}) {\n    const { computeProperties = false } = options;\n    this.OCL = OCL;\n    this.db = {};\n    this.statistics = null;\n    this.computeProperties = computeProperties;\n    this.searcher = new OCL.SSSearcherWithIndex();\n  }\n\n  /**\n   * append to the current database a CSV file\n   * @param {string|ArrayBuffer} csv - text file containing the comma separated value file\n   * @param {object} [options={}]\n   * @param {boolean} [options.header=true]\n   * @param {boolean} [options.dynamicTyping=true]\n   * @param {boolean} [options.skipEmptyLines=true]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   */\n\n  appendCSV(csv, options) {\n    return appendCSV(this, csv, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Append a SDF to the current database\n   * @param {string|ArrayBuffer} sdf - text file containing the sdf\n   * @param {object} [options={}]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   * @returns {DB}\n   */\n\n  appendSDF(sdf, options) {\n    return appendSDF(this, sdf, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Append a SDF to the current database\n   * @param {string|ArrayBuffer} smiles - text file containing a list of smiles\n   * @param {object} [options={}]\n   * @param {function} [options.onStep] call back to execute after each molecule\n   * @returns {DB}\n   */\n\n  appendSmilesList(text, options) {\n    return appendSmilesList(this, text, {\n      computeProperties: this.computeProperties,\n      ...options,\n    });\n  }\n\n  /**\n   * Add a molecule to the current database\n   * @param {OCL.Molecule} molecule\n   * @param {object} [data={}]\n   * @param {object} [moleculeInfo={}] may contain precalculated index and mw\n   */\n\n  pushEntry(molecule, data, moleculeInfo) {\n    pushEntry(this, molecule, data, moleculeInfo);\n  }\n\n  /**\n   * Add an entry in the database\n   * @param {object} moleculeInfo - a molecule as a JSON that may contain the following properties: molfile, smiles, idCode, mf, index\n   * @param {object} [data={}]\n   */\n\n  pushMoleculeInfo(moleculeInfo, data) {\n    return pushMoleculeInfo(this, moleculeInfo, data);\n  }\n\n  /**\n   * Search in a MoleculesDB\n   * Inside the database all the same molecules are group together\n   * @param {string|OCL.Molecule} [query] smiles, molfile, oclCode or instance of Molecule to look for\n   * @param {object} [options={}]\n   * @param {string} [options.format='idCode'] - query is in the format 'smiles', 'oclid' or 'molfile'\n   * @param {string} [options.mode='substructure'] - search by 'substructure', 'exact' or 'similarity'\n   * @param {boolean} [options.flattenResult=true] - The database group the data for the same product. This allows to flatten the result\n   * @param {boolean} [options.keepMolecule=false] - keep the OCL.Molecule object in the result\n   * @param {number} [options.limit=Number.MAX_SAFE_INTEGER] - maximal number of result\n   * @return {Array} array of object of the type {(molecule), idCode, data, properties}\n   */\n  search(query, options) {\n    return search(this, query, options);\n  }\n\n  /**\n   * Returns an array with the current database\n   * @returns\n   */\n  getDB() {\n    return Object.keys(this.db).map((key) => this.db[key]);\n  }\n\n  /**\n   * Append the property `data.color` to each entry based on a data or property label\n   * {object} [options={}]\n   * {string} [options.dataLabel] name of the property from `data` to use\n   * {string} [options.propertyLabel] name of the property from `properties` to use\n   * {number} [options.colorLabel='color'] name of the property to add in data that will contain the color\n   * {number} [options.minValue]\n   * {number} [options.maxValue]\n   * {number} [options.minHue=0]\n   * {number} [options.maxHue=360]\n   * {number} [options.saturation=65] percent of color saturation\n   * {number} [options.lightness=65] percent of color lightness\n   */\n  appendColor(options) {\n    appendColor(this, options);\n  }\n}\n","import { makeRacemic } from '../util/makeRacemic';\n\nexport function getAtomFeatures(originalMolecule) {\n  const OCL = originalMolecule.getOCL();\n\n  let sphere = 1;\n  let fragment = new OCL.Molecule(0, 0);\n  let results = [];\n\n  for (\n    let rootAtom = 0;\n    rootAtom < originalMolecule.getAllAtoms();\n    rootAtom++\n  ) {\n    let min = 0;\n    let max = 0;\n    let atomMask = new Array(originalMolecule.getAtoms());\n    let atomList = new Array(originalMolecule.getAtoms());\n\n    const molecule = originalMolecule.getCompactCopy();\n    for (let currentSphere = 0; currentSphere <= sphere; currentSphere++) {\n      if (max === 0) {\n        atomList[max] = rootAtom;\n        atomMask[rootAtom] = true;\n        max++;\n      } else {\n        let newMax = max;\n        for (let i = min; i < max; i++) {\n          let atom = atomList[i];\n          for (let j = 0; j < molecule.getAllConnAtoms(atom); j++) {\n            let connAtom = molecule.getConnAtom(atom, j);\n            if (!atomMask[connAtom]) {\n              atomMask[connAtom] = true;\n              atomList[newMax++] = connAtom;\n            }\n          }\n        }\n        min = max;\n        max = newMax;\n      }\n      molecule.copyMoleculeByAtoms(fragment, atomMask, true, null);\n      if (currentSphere === sphere) {\n        makeRacemic(fragment);\n        results.push(fragment.getCanonizedIDCode());\n      }\n    }\n  }\n\n  const atoms = {};\n  for (let result of results) {\n    if (!atoms[result]) {\n      atoms[result] = 1;\n    } else {\n      atoms[result]++;\n    }\n  }\n\n  return atoms;\n}\n","import { getDiastereotopicAtomIDsAndH } from '../diastereotopic/getDiastereotopicAtomIDsAndH';\nimport { getGroupedDiastereotopicAtomIDs } from '../diastereotopic/getGroupedDiastereotopicAtomIDs';\n\nexport function toVisualizerMolfile(molecule, options = {}) {\n  const { diastereotopic, heavyAtomHydrogen } = options;\n\n  let highlight = [];\n  let atoms = {};\n  if (diastereotopic) {\n    let hydrogenInfo = {};\n    let extendedIDs = getDiastereotopicAtomIDsAndH(molecule);\n    for (let line of extendedIDs) {\n      hydrogenInfo[line.oclID] = line;\n    }\n\n    let diaIDs = getGroupedDiastereotopicAtomIDs(molecule);\n    for (const diaID of diaIDs) {\n      atoms[diaID.oclID] = diaID.atoms;\n      highlight.push(diaID.oclID);\n      if (heavyAtomHydrogen) {\n        if (\n          hydrogenInfo[diaID.oclID] &&\n          hydrogenInfo[diaID.oclID].nbHydrogens > 0\n        ) {\n          for (let id of hydrogenInfo[diaID.oclID].hydrogenOCLIDs) {\n            highlight.push(id);\n            atoms[id] = diaID.atoms;\n          }\n        }\n      }\n    }\n  } else {\n    let size = molecule.getAllAtoms();\n    highlight = new Array(size).fill(0).map((a, index) => index);\n    atoms = highlight.map((a) => [a]);\n  }\n\n  let molfile = {\n    type: 'mol2d',\n    value: molecule.toMolfile(),\n    _highlight: highlight,\n    _atoms: atoms,\n  };\n\n  return molfile;\n}\n","import { getMF } from '../util/getMF';\n\nexport function fragmentAcyclicSingleBonds(molecule) {\n  const OCL = molecule.getOCL();\n  let atoms = [];\n  for (let i = 0; i < molecule.getAllAtoms(); i++) {\n    let atom = {};\n    atoms.push(atom);\n    atom.i = i;\n    atom.links = []; // we will store connected atoms of broken bonds\n  }\n\n  let bonds = [];\n  for (let i = 0; i < molecule.getAllBonds(); i++) {\n    let bond = {};\n    bonds.push(bond);\n    bond.i = i;\n    bond.order = molecule.getBondOrder(i);\n    bond.atom1 = molecule.getBondAtom(0, i);\n    bond.atom2 = molecule.getBondAtom(1, i);\n    bond.type = molecule.getBondType(i);\n    bond.isAromatic = molecule.isAromaticBond(i);\n    bond.isRingBond = molecule.isRingBond(i);\n    if (!bond.isAromatic && (bond.type & 0b11) === 1 && !bond.isRingBond) {\n      bond.selected = true;\n      atoms[bond.atom1].links.push(bond.atom2);\n      atoms[bond.atom2].links.push(bond.atom1);\n    }\n  }\n\n  //  console.log(bonds);\n\n  let brokenMolecule = molecule.getCompactCopy();\n  for (let bond of bonds) {\n    if (bond.selected) {\n      brokenMolecule.markBondForDeletion(bond.i);\n    }\n  }\n\n  brokenMolecule.deleteMarkedAtomsAndBonds();\n  let fragmentMap = [];\n  let nbFragments = brokenMolecule.getFragmentNumbers(fragmentMap);\n  let results = [];\n  for (let i = 0; i < nbFragments; i++) {\n    let result = {};\n    result.atomMap = [];\n    let includeAtom = fragmentMap.map((id) => {\n      return id === i;\n    });\n    let fragment = new OCL.Molecule(0, 0);\n    let atomMap = [];\n    brokenMolecule.copyMoleculeByAtoms(fragment, includeAtom, false, atomMap);\n    // we will add some R groups at the level of the broken bonds\n    for (let j = 0; j < atomMap.length; j++) {\n      if (atomMap[j] > -1) {\n        result.atomMap.push(j);\n        if (atoms[j].links.length > 0) {\n          for (let k = 0; k < atoms[j].links.length; k++) {\n            fragment.addBond(atomMap[j], fragment.addAtom(154), 1);\n          }\n        }\n      }\n    }\n    fragment.setFragment(false);\n    result.idCode = fragment.getIDCode();\n    result.mf = getMF(fragment).mf.replace(/R[1-9]?/, '');\n    results.push(result);\n  }\n\n  return results;\n}\n"],"names":["xAtomicNumber","tagAtom","molecule","iAtom","customLabel","getAtomLabel","setAtomCustomLabel","getAtomicNo","setAtomicNo","getXAtomicNumber","setAtomMass","getAtomMass","OCL","getOCL","Molecule","getAtomicNoFromLabel","addDiastereotopicMissingChirality","options","esrType","cESRTypeAnd","getAllAtoms","tempMolecule","getCompactCopy","ensureHelperArrays","cHelperBitsStereo","i","getAtoms","isAtomStereoCenter","getStereoBond","stereoBond","getAtomPreferredStereoBond","setBondType","cBondTypeUp","getBondAtom","connAtom","setBondAtom","setAtomESR","makeRacemic","cHelperCIP","getAtomParity","cAtomParityNone","getDiastereotopicAtomIDs","numberAtoms","ids","getCanonizedIDCode","CANONIZER_ENCODE_ATOM_CUSTOM_LABELS","getDiastereotopicAtomIDsAndH","addImplicitHydrogens","cHelperNeighbours","diaIDs","newDiaIDs","length","diaID","newDiaID","oclID","hydrogenOCLIDs","nbHydrogens","atom","getConnAtom","heavyAtom","j","getAllConnAtoms","indexOf","push","toDiastereotopicSVG","width","height","prefix","heavyAtomHydrogen","svg","hydrogenInfo","forEach","line","groupedDiaIDs","getGroupedDiastereotopicAtomIDs","atoms","id","includes","map","a","toSVG","replace","value","join","atomLabel","diaIDsObject","counter","Object","values","isCsp3","atomID","getAtomCharge","getImplicitHydrogens","getConnAtoms","FULL_HOSE_CODE","HOSE_CODE_CUT_C_SP3_SP3","getHoseCodesForAtoms","originalMolecule","rootAtoms","minSphereSize","maxSphereSize","kind","isTagged","tags","rootAtom","addMissingChirality","getAtomCustomLabel","fragment","results","min","max","atomMask","Array","atomList","sphere","newMax","Error","copyMoleculeByAtoms","getHoseCodesForAtom","getHoseCodesFromDiastereotopicID","atomCustomLabel","endsWith","undefined","getHoseCodesAndDiastereotopicIDs","hoses","fromIDCode","hose","getHoseCodesForPath","from","to","maxLength","originalFrom","originalTo","originalAtoms","getPath","torsion","calculateTorsion","tag1","tag2","fill","atomMap","MAX_R","combineSmiles","coreSmiles","fragments","complexity","core","getCore","rGroups","getRGroups","getComplexity","generate","rGroup","smiles","onStep","molecules","sizes","currents","position","appendMolecule","keys","key","sort","m1","m2","mw","newSmiles","currentMol","fromSmiles","idCode","getIDCode","toSmiles","combinedSmiles","molfile","toMolfile","props","MoleculeProperties","nbHAcceptor","acceptorCount","nbHDonor","donorCount","logP","logS","PSA","polarSurfaceArea","nbRottable","rotatableBondCount","nbStereoCenter","stereoCenterCount","mf","getMolecularFormula","formula","relativeWeight","originalSmiles","updateRPosition","group","level","currentChar","charAt","currentSubstring","substr","match","getAtomsInfo","cHelperRings","result","extra","singleBonds","doubleBonds","tripleBonds","aromaticBonds","cnoHybridation","abnormalValence","getAtomAbnormalValence","charge","cipParity","getAtomCIPParity","color","getAtomColor","atomicNo","label","mass","radical","getAtomRadical","ringBondCount","getAtomRingBondCount","ringSize","getAtomRingSize","x","getAtomX","y","getAtomY","z","getAtomZ","allHydrogens","getAllHydrogens","connAtoms","allConnAtoms","implicitHydrogens","isAromatic","isAromaticAtom","isAllylic","isAllylicAtom","isStereoCenter","isRing","isRingAtom","isSmallRing","isSmallRingAtom","isStabilized","isStabilizedAtom","bond","getConnBond","bondOrder","getBondOrder","isAromaticBond","totalBonds","connectedAtom","hydrogenOnAtomicNo","labileHydrogen","toString","prototype","isAnyArray","call","input","arguments","TypeError","_options$fromIndex","fromIndex","_options$toIndex","toIndex","Number","isInteger","maxValue","minValue","rescale","output","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","constructor","name","inspectData","rows","columns","maxI","Math","maxJ","formatNumber","get","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","e","slice","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","abs","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","exp","expm1","floor","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","index","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","array","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","NaN","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","Float64Array","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","b","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","floydWarshall","adjMatrix","numVertices","distMatrix","val","is","POSITIVE_INFINITY","dist","getConnectivityMatrix","nbAtoms","pathLength","negativeAtomicNo","cRoundedMass","sdt","getConnBondOrder","sdta","bondNumber","atomSorter","src","getMF","entries","getFragments","parts","allAtoms","entry","getFragmentMF","counts","part","toMFString","mfs","mfAtom","H","nbOH","carbonyl","hydroxyl","carbonOrHydrogen","neighbour","neighbourAtom","neighbourBond","nbCOOH","nbCHO","nbNH2","amine","nbCN","cn","getPathAndTorsion","getPathsInfo","fromLabel","toLabel","minLength","withHOSES","fromAtomicNumber","toAtomicNumber","atomsInfo","pathLengthMatrix","paths","getShortestPaths","allShortestPaths","path","reverse","isUtf8","buf","len","ensureString","blob","ArrayBuffer","isView","encoding","guessEncoding","decoder","TextDecoder","decode","uint8","Uint8Array","buffer","byteOffset","byteLength","isutf8","t","module","exports","this","f","self","window","document","postMessage","o","test","location","protocol","parse","dynamicTyping","M","dynamicTypingFunction","transform","worker","WORKERS_SUPPORTED","URL","webkitURL","BLOB_URL","createObjectURL","Blob","Worker","onmessage","_","userStep","step","userChunk","chunk","userComplete","complete","userError","error","config","workerId","NODE_STREAM_INPUT","download","readable","read","on","g","File","stream","unparse","delimiter","BAD_DELIMITERS","filter","quotes","isArray","skipEmptyLines","newline","quoteChar","header","escapeChar","escapeFormulae","RegExp","JSON","u","fields","meta","trim","d","Date","stringify","RECORD_SEP","fromCharCode","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","E","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","fn","each","prop","toUpperCase","attr","toLowerCase","FileReader","files","file","inputElem","instanceConfig","extend","before","action","reason","_handle","_finished","_completed","_halted","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","w","chunkSize","streamer","_config","parseChunk","beforeFirstChunk","paused","aborted","cursor","substring","preview","WORKER_ID","finished","concat","_sendError","_readChunk","_chunkLoaded","XMLHttpRequest","withCredentials","onload","onerror","_chunkError","open","downloadRequestBody","downloadRequestHeaders","setRequestHeader","send","message","status","readyState","responseText","getResponseHeader","lastIndexOf","statusText","webkitSlice","mozSlice","FileReaderSync","readAsText","target","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","shift","_streamCleanUp","removeListener","abort","transformHeader","parseFloat","code","split","comments","successful","bestDelimiter","delimitersToGuess","getCharIndex","setTimeout","S","O","I","T","D","A","fastMode","L","F","C","R","linebreak","truncated","terminate","create","getMoleculeCreators","Map","fromMolfile","defaultCSVOptions","appendCSV","moleculesDB","csv","moleculeCreators","parsed","Papa","stats","firstElement","moleculeCreator","moleculeField","isNumeric","lowerField","has","statistics","pushEntry","appendColor","dataLabel","propertyLabel","minHue","maxHue","saturation","lightness","colorLabel","db","getDB","datum","flat","properties","definedValues","getEntriesBoundaries","string","eol","res","previous","next","sdf","include","exclude","modifiers","mixedEOL","entriesBoundaries","labels","start","now","sdfPart","currentLabels","lines","keep","modifier","modifiedValue","currentLabel","Infinity","always","statistic","time","appendSDF","appendSmilesList","text","smilesArray","oneSmiles","moleculeInfo","moleculeIDCode","getIndex","molecularFormula","computeProperties","em","absoluteWeight","pushMoleculeInfo","coordinates","search","query","format","mode","flattenResult","keepMolecule","limit","MAX_SAFE_INTEGER","exactSearch","subStructureSearch","similaritySearch","processResult","queryIDCode","searchResult","resetFragment","isFragment","setFragment","queryMW","getMW","queryIndex","searcher","setMolecule","isFragmentInMolecule","queryIdCode","similarity","SSSearcherWithIndex","getSimilarityTanimoto","MoleculesDB","getAtomFeatures","currentSphere","toVisualizerMolfile","diastereotopic","highlight","extendedIDs","_highlight","_atoms","fragmentAcyclicSingleBonds","links","bonds","getAllBonds","order","atom1","atom2","getBondType","isRingBond","selected","brokenMolecule","markBondForDeletion","deleteMarkedAtomsAndBonds","fragmentMap","nbFragments","getFragmentNumbers","includeAtom","addBond","addAtom"],"mappings":"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"}