{"version":3,"file":"mzdata.umd.js","sources":["../node_modules/dynamic-typing/lib-esm/parseString.js","../node_modules/arraybuffer-xml-parser/lib/traversable/defaultOptions.js","../node_modules/arraybuffer-xml-parser/lib/XMLNode.js","../node_modules/arraybuffer-xml-parser/lib/bufferUtils/arrayIndexOf.js","../node_modules/arraybuffer-xml-parser/lib/bufferUtils/arrayTrim.js","../node_modules/arraybuffer-xml-parser/lib/traversable/utils/utf8Decoder.js","../node_modules/arraybuffer-xml-parser/lib/traversable/closingIndexForOpeningTag.js","../node_modules/arraybuffer-xml-parser/lib/traversable/findClosingIndex.js","../node_modules/arraybuffer-xml-parser/lib/util.js","../node_modules/arraybuffer-xml-parser/lib/traversable/parseAttributesString.js","../node_modules/arraybuffer-xml-parser/lib/traversable/utils/removeNameSpaceIfNeeded.js","../node_modules/arraybuffer-xml-parser/lib/traversable/getTraversable.js","../node_modules/arraybuffer-xml-parser/lib/traversableToJSON.js","../node_modules/arraybuffer-xml-parser/lib/parse.js","../node_modules/ml-spectra-processing/lib/utils/recursiveResolve.js","../node_modules/uint8-base64/lib-esm/decode.js","../node_modules/uint8-base64/lib-esm/base64codes.js","../node_modules/uint8-base64/lib-esm/encodeFast.js","../src/util/inflate.js","../src/util/decodeData.js","../src/mzdata/parseCvParam.js","../src/mzdata/processMetaData.js","../src/mzdata/processSpectrumList.js","../src/mzdata/parseMzData.js","../src/mzml/parseCvParam.js","../src/mzml/processSpectrumList.js","../src/mzml/parseMzML.js","../src/mzxml/processSpectrumList.js","../src/mzxml/parseMzXML.js","../src/index.js"],"sourcesContent":["export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","import { parseString } from 'dynamic-typing';\nconst utf8Decoder = new TextDecoder();\nexport const decoder = {\n    decode: (array) => {\n        return utf8Decoder.decode(array);\n    },\n};\nexport const defaultOptions = {\n    trimValues: true,\n    attributesNodeName: '',\n    ignoreAttributes: false,\n    ignoreNameSpace: false,\n    allowBooleanAttributes: false,\n    parseAttributesString: true,\n    textNodeName: '#text',\n    arrayMode: false,\n    cdataTagName: false,\n    tagNameProcessor: (name) => name,\n    attributeNameProcessor: (name) => `$${name}`,\n    tagValueProcessor: (value) => {\n        const string = decoder.decode(value).replaceAll('\\r', '');\n        return parseString(string);\n    },\n    attributeValueProcessor: (value) => parseString(value),\n    stopNodes: [],\n};\nexport const defaultStreamOptions = {\n    ...defaultOptions,\n    maxEntrySize: 1e7,\n    maxBufferSize: 2e8,\n};\n//# sourceMappingURL=defaultOptions.js.map","export class XMLNode {\n    tagName;\n    parent;\n    children;\n    attributes;\n    bytes;\n    startIndex;\n    tagValueProcessor;\n    cachedValue;\n    constructor(tagName, parent, bytes, tagValueProcessor) {\n        this.tagName = tagName;\n        this.parent = parent;\n        this.children = Object.create(null); //child tags\n        this.attributes = Object.create(null); //attributes map\n        this.bytes = bytes; //text only\n        this.tagValueProcessor = tagValueProcessor;\n        this.startIndex = -1;\n    }\n    append(toAppend) {\n        if (this.bytes.length === 0) {\n            this.bytes = toAppend;\n            return;\n        }\n        const arrayConcat = new Uint8Array(this.bytes.length + toAppend.length);\n        arrayConcat.set(this.bytes);\n        arrayConcat.set(toAppend, this.bytes.length);\n        this.bytes = arrayConcat;\n    }\n    get value() {\n        if (this.cachedValue === undefined) {\n            const value = this.tagValueProcessor(this.bytes, this);\n            this.cachedValue = value;\n        }\n        return this.cachedValue;\n    }\n    addChild(child) {\n        if (Array.isArray(this.children[child.tagName])) {\n            //already presents\n            this.children[child.tagName].push(child);\n        }\n        else {\n            this.children[child.tagName] = [child];\n        }\n    }\n}\n//# sourceMappingURL=XMLNode.js.map","export function arrayIndexOf(array, referenceArray, index = 0) {\n    let found = 0;\n    let foundIndex = -1;\n    for (let i = index; i < array.length && found < referenceArray.length; i++) {\n        if (array[i] === referenceArray[found]) {\n            if (!found) {\n                foundIndex = i;\n            }\n            found++;\n        }\n        else if (found > 0) {\n            let j = 0;\n            for (; j <= found && array[foundIndex + j] === array[foundIndex + found]; j++)\n                ;\n            if (j < found + 1) {\n                foundIndex = -1;\n                found = 0;\n            }\n            else {\n                foundIndex++;\n            }\n        }\n        else {\n            found = 0;\n            foundIndex = -1;\n        }\n    }\n    if (found !== referenceArray.length) {\n        foundIndex = -1;\n    }\n    return foundIndex;\n}\n//# sourceMappingURL=arrayIndexOf.js.map","/* eslint-disable @typescript-eslint/no-unused-vars */\nexport function arrayTrim(array, arg) {\n    let i = 0;\n    let j = array.length - 1;\n    for (; i < array.length && array[i] <= 0x20; i++)\n        ;\n    for (; j >= i && array[j] <= 0x20; j--)\n        ;\n    if (i === 0 && j === array.length - 1)\n        return array;\n    return array.subarray(i, j + 1);\n}\n//# sourceMappingURL=arrayTrim.js.map","const utf8Decoder = new TextDecoder();\nexport const decoder = {\n    decode: (array) => {\n        return utf8Decoder.decode(array);\n    },\n};\n//# sourceMappingURL=utf8Decoder.js.map","import { decoder } from './utils/utf8Decoder.js';\n/**\n * Search for the corresponding closing tag '>'\n * @param data\n * @param i\n * @returns\n */\nexport function closingIndexForOpeningTag(data, i) {\n    let attrBoundary;\n    let endIndex = 0;\n    for (let index = i; index < data.length; index++) {\n        let byte = data[index];\n        if (attrBoundary) {\n            if (byte === attrBoundary)\n                attrBoundary = 0; //reset\n        }\n        else if (byte === 0x22 || byte === 0x27) {\n            attrBoundary = byte;\n        }\n        else if (byte === 0x3e) {\n            return {\n                data: decoder.decode(data.subarray(i, i + endIndex)),\n                index,\n            };\n        }\n        else if (byte === 0x09) {\n            byte = 0x20;\n        }\n        endIndex++;\n    }\n    throw new Error('Could not find closing tag');\n}\n//# sourceMappingURL=closingIndexForOpeningTag.js.map","import { arrayIndexOf } from '../bufferUtils/arrayIndexOf.js';\nexport function findClosingIndex(xmlData, str, i, errMsg) {\n    const closingIndex = arrayIndexOf(xmlData, str, i);\n    if (closingIndex === -1) {\n        throw new Error(errMsg);\n    }\n    else {\n        return closingIndex + str.length - 1;\n    }\n}\n//# sourceMappingURL=findClosingIndex.js.map","const nameStartChar = String.raw `:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD`;\nconst nameChar = String.raw `${nameStartChar}\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;\nconst nameRegexp = `[${nameStartChar}][${nameChar}]*`;\n// eslint-disable-next-line no-misleading-character-class\nconst regexName = new RegExp(`^${nameRegexp}$`);\nexport function getAllMatches(string, regex) {\n    return Array.from(string.matchAll(regex));\n}\nexport function isName(string) {\n    return regexName.exec(string) !== null;\n}\nexport function isEmptySimpleObject(object) {\n    // fastest implementation: https://jsbench.me/qfkqv692c8/1\n    // eslint-disable-next-line no-unreachable-loop\n    for (const key in object) {\n        return false;\n    }\n    return true;\n}\nexport function isEmptyObject(object) {\n    // fastest implementation: https://jsbench.me/qfkqv692c8/1\n    // eslint-disable-next-line no-unreachable-loop\n    for (const key in object) {\n        return false;\n    }\n    return true;\n}\n/**\n * Copy all the properties of a into b.\n * @param target\n * @param source\n * @param arrayMode\n */\nexport function merge(target, source, arrayMode) {\n    if (!source)\n        return;\n    for (const key in source) {\n        if (arrayMode === 'strict') {\n            target[key] = [source[key]];\n        }\n        else {\n            target[key] = source[key];\n        }\n    }\n}\n/**\n * Check if a tag name should be treated as array\n * @param tagName - the node tagName\n * @param arrayMode - the array mode option\n * @param parentTagName - the parent tag name\n * @returns true if node should be parsed as array\n */\nexport function isTagNameInArrayMode(tagName, arrayMode, parentTagName) {\n    if (arrayMode === false) {\n        return false;\n    }\n    else if (arrayMode instanceof RegExp) {\n        return arrayMode.test(tagName);\n    }\n    else if (typeof arrayMode === 'function') {\n        return arrayMode(tagName, parentTagName);\n    }\n    return arrayMode === 'strict';\n}\n//# sourceMappingURL=util.js.map","import { getAllMatches, isEmptySimpleObject } from '../util.js';\nconst newLocal = String.raw `([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?`;\nconst attrsRegx = new RegExp(newLocal, 'g');\n//Attributes are strings so no point in using arrayBuffers here\nexport function parseAttributesString(string, options) {\n    const { ignoreAttributes } = options;\n    if (ignoreAttributes) {\n        return;\n    }\n    string = string.replaceAll(/\\r?\\n/g, ' ');\n    const matches = getAllMatches(string, attrsRegx);\n    // argument 1 is the key, argument 4 is the value\n    const attributes = {};\n    for (const match of matches) {\n        const attributeName = resolveNameSpace(match[1], options);\n        if (attributeName.length > 0) {\n            if (match[4] !== undefined) {\n                if (options.trimValues) {\n                    match[4] = match[4].trim();\n                }\n                if (options.attributeValueProcessor) {\n                    attributes[attributeName] = options.attributeValueProcessor(match[4], attributeName);\n                }\n            }\n            else if (options.allowBooleanAttributes) {\n                attributes[attributeName] = true;\n            }\n        }\n    }\n    if (isEmptySimpleObject(attributes))\n        return;\n    return attributes;\n}\nfunction resolveNameSpace(tagName, options) {\n    if (options.ignoreNameSpace) {\n        const tags = tagName.split(':');\n        const prefix = tagName.startsWith('/') ? '/' : '';\n        if (tags[0] === 'xmlns') {\n            return '';\n        }\n        if (tags.length === 2) {\n            tagName = prefix + tags[1];\n        }\n    }\n    return tagName;\n}\n//# sourceMappingURL=parseAttributesString.js.map","export function removeNameSpaceIfNeeded(tagName, options) {\n    if (!options.ignoreNameSpace) {\n        return tagName;\n    }\n    const colonIndex = tagName.indexOf(':');\n    if (colonIndex !== -1) {\n        tagName = tagName.slice(colonIndex + 1);\n    }\n    return tagName;\n}\n//# sourceMappingURL=removeNameSpaceIfNeeded.js.map","import { XMLNode } from '../XMLNode.js';\nimport { arrayIndexOf } from '../bufferUtils/arrayIndexOf.js';\nimport { arrayTrim } from '../bufferUtils/arrayTrim.js';\nimport { closingIndexForOpeningTag } from './closingIndexForOpeningTag.js';\nimport { findClosingIndex } from './findClosingIndex.js';\nimport { parseAttributesString } from './parseAttributesString.js';\nimport { removeNameSpaceIfNeeded } from './utils/removeNameSpaceIfNeeded.js';\nimport { decoder } from './utils/utf8Decoder.js';\nexport function getTraversable(xmlData, options) {\n    const { tagValueProcessor } = options;\n    const traversable = new XMLNode('!xml', undefined, new Uint8Array(0), tagValueProcessor);\n    let currentNode = traversable;\n    let dataSize = 0;\n    let dataIndex = 0;\n    for (let i = 0; i < xmlData.length; i++) {\n        if (xmlData[i] === 0x3c) {\n            // <\n            const xmlData1 = xmlData[i + 1];\n            const xmlData2 = xmlData[i + 2];\n            if (xmlData1 === 0x2f) {\n                // </ Closing Tag\n                const closeIndex = findClosingIndex(xmlData, [0x3e], //>\n                i, 'Closing Tag is not closed.');\n                let tagName = decoder.decode(arrayTrim(xmlData.subarray(i + 2, closeIndex), {}));\n                tagName = removeNameSpaceIfNeeded(tagName, options);\n                if (currentNode) {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize));\n                }\n                if (options.stopNodes?.length &&\n                    options.stopNodes.includes(currentNode.tagName)) {\n                    currentNode.children = {};\n                    if (currentNode.attributes === undefined) {\n                        currentNode.attributes = {};\n                    }\n                    currentNode.bytes = xmlData.subarray(currentNode.startIndex + 1, i);\n                }\n                currentNode = currentNode.parent;\n                i = closeIndex;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n            else if (xmlData1 === 0x3f) {\n                // <? PI, processing instruction\n                i = findClosingIndex(xmlData, [0x3f, 0x3e], i, 'Pi Tag is not closed.');\n            }\n            else if (\n            //!-- comment\n            xmlData1 === 0x21 &&\n                xmlData2 === 0x2d &&\n                xmlData[i + 3] === 0x2d) {\n                i = findClosingIndex(xmlData, [0x2d, 0x2d, 0x3e], //-->\n                i, 'Comment is not closed.');\n                if (currentNode && dataSize !== 0 && currentNode.tagName !== '!xml') {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataSize + dataIndex))\n                        : xmlData.subarray(dataIndex, dataSize + dataIndex));\n                }\n                dataSize = 0;\n                dataIndex = i + 1;\n                //!D\n            }\n            else if (xmlData1 === 0x21 && xmlData2 === 0x44) {\n                // <!D\n                const closeIndex = findClosingIndex(xmlData, [0x3e], //>\n                i, 'DOCTYPE is not closed.');\n                const tagExp = xmlData.subarray(i, closeIndex);\n                if (arrayIndexOf(tagExp, [0x5b]) >= 0) {\n                    i = arrayIndexOf(xmlData, [0x5d, 0x3e], i) + 1;\n                }\n                else {\n                    i = closeIndex;\n                } //![\n            }\n            else if (xmlData1 === 0x21 && xmlData2 === 0x5b) {\n                // <![CDATA[some stuff]]>\n                const closeIndex = findClosingIndex(xmlData, [0x5d, 0x5d, 0x3e], //]]>\n                i, 'CDATA is not closed.') - 2;\n                const tagExp = xmlData.subarray(i + 9, closeIndex);\n                //considerations\n                //1. CDATA will always have parent node\n                //2. A tag with CDATA is not a leaf node so it's value would be string type.\n                if (dataSize !== 0) {\n                    const value = options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize);\n                    currentNode.append(value);\n                }\n                if (options.cdataTagName) {\n                    //add cdata node\n                    const childNode = new XMLNode(options.cdataTagName, currentNode, tagExp, tagValueProcessor);\n                    currentNode.addChild(childNode);\n                    //add rest value to parent node\n                    if (tagExp) {\n                        childNode.bytes = tagExp;\n                    }\n                }\n                else {\n                    currentNode.append(tagExp);\n                }\n                i = closeIndex + 2;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n            else {\n                //Opening a normal tag\n                const parsedOpeningTag = closingIndexForOpeningTag(xmlData, i + 1);\n                const tagData = parsedOpeningTag.data.replaceAll(/\\r?\\n|\\t/g, ' ');\n                const closeIndex = parsedOpeningTag.index;\n                const separatorIndex = tagData.indexOf(' ');\n                let shouldBuildAttributesMap = true;\n                let tagName = separatorIndex !== -1\n                    ? tagData.slice(0, Math.max(0, separatorIndex)).replace(/\\s+$/, '')\n                    : tagData;\n                let tagAttributes = separatorIndex !== -1 ? tagData.slice(separatorIndex + 1) : '';\n                if (options.ignoreNameSpace) {\n                    const colonIndex = tagName.indexOf(':');\n                    if (colonIndex !== -1) {\n                        tagName = tagName.slice(colonIndex + 1);\n                        shouldBuildAttributesMap =\n                            tagName !== parsedOpeningTag.data.slice(colonIndex + 1);\n                    }\n                }\n                //save text to parent node\n                if (currentNode && dataSize !== 0 && currentNode.tagName !== '!xml') {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize));\n                }\n                if (tagData.length > 0 && tagData.endsWith('/')) {\n                    //selfClosing tag\n                    if (tagAttributes) {\n                        // <abc def=\"123\"/>\n                        tagAttributes = tagAttributes.slice(0, Math.max(0, tagAttributes.length - 1));\n                    }\n                    else {\n                        // <abc/>\n                        tagName = tagName.slice(0, Math.max(0, tagName.length - 1));\n                    }\n                    const childNode = new XMLNode(tagName, currentNode, new Uint8Array(0), tagValueProcessor);\n                    if (tagAttributes) {\n                        childNode.attributes = parseAttributesString(tagAttributes, options);\n                    }\n                    currentNode.addChild(childNode);\n                }\n                else {\n                    //opening tag\n                    const childNode = new XMLNode(tagName, currentNode, new Uint8Array(0), tagValueProcessor);\n                    if (options.stopNodes?.length &&\n                        options.stopNodes.includes(childNode.tagName)) {\n                        childNode.startIndex = closeIndex;\n                    }\n                    if (tagAttributes && shouldBuildAttributesMap) {\n                        childNode.attributes = parseAttributesString(tagAttributes, options);\n                    }\n                    currentNode.addChild(childNode);\n                    currentNode = childNode;\n                }\n                i = closeIndex;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n        }\n        else {\n            dataSize++;\n        }\n    }\n    return traversable;\n}\n//# sourceMappingURL=getTraversable.js.map","import { isEmptyObject, isEmptySimpleObject, isTagNameInArrayMode, merge, } from './util.js';\n/**\n *\n * @param node\n * @param options\n * @param parentTagName\n * @returns\n */\nexport function traversableToJSON(node, options, parentTagName) {\n    const { arrayMode, tagNameProcessor, attributeNameProcessor, textNodeName } = options;\n    const result = {};\n    // when no child node or attr is present\n    if ((!node.children || isEmptyObject(node.children)) &&\n        (!node.attributes || isEmptySimpleObject(node.attributes))) {\n        return node.value;\n    }\n    // otherwise create a textnode if node has some text\n    if (node.bytes.length > 0) {\n        const asArray = isTagNameInArrayMode(node.tagName, arrayMode, parentTagName);\n        result[textNodeName] = asArray ? [node.value] : node.value;\n    }\n    if (node.attributes && !isEmptySimpleObject(node.attributes)) {\n        let attributes = options.parseAttributesString ? {} : node.attributes;\n        if (attributeNameProcessor) {\n            // need to rename the attributes\n            const renamedAttributes = {};\n            for (const attributeName in node.attributes) {\n                const newAttributeName = attributeNameProcessor(attributeName);\n                renamedAttributes[newAttributeName] = node.attributes[attributeName];\n            }\n            attributes = renamedAttributes;\n        }\n        if (options.attributesNodeName) {\n            const encapsulatedAttributes = {\n                [options.attributesNodeName]: attributes,\n            };\n            attributes = encapsulatedAttributes;\n        }\n        merge(result, attributes, arrayMode);\n    }\n    for (const tagName in node.children) {\n        const nodes = node.children[tagName];\n        const newTagName = tagNameProcessor\n            ? tagNameProcessor(tagName, nodes)\n            : tagName;\n        if (nodes?.length > 1) {\n            result[tagName] = [];\n            for (const child of nodes) {\n                result[newTagName].push(traversableToJSON(child, options, tagName));\n            }\n        }\n        else {\n            const subResult = traversableToJSON(nodes[0], options, tagName);\n            const asArray = (arrayMode === true && typeof subResult === 'object') ||\n                isTagNameInArrayMode(tagName, arrayMode, parentTagName);\n            result[newTagName] = asArray ? [subResult] : subResult;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=traversableToJSON.js.map","import { defaultOptions } from './traversable/defaultOptions.js';\nimport { getTraversable } from './traversable/getTraversable.js';\nimport { traversableToJSON } from './traversableToJSON.js';\n/**\n * Parse an ArrayBuffer or Uint8Array representing an XML and return an object\n * @param xmlData\n * @param options\n */\nexport function parse(xmlData, options = {}) {\n    if (typeof xmlData === 'string') {\n        const encoder = new TextEncoder();\n        xmlData = encoder.encode(xmlData);\n    }\n    if (!ArrayBuffer.isView(xmlData)) {\n        xmlData = new Uint8Array(xmlData);\n    }\n    const realOptions = { ...defaultOptions, ...options };\n    const traversable = getTraversable(xmlData, realOptions);\n    return traversableToJSON(traversable, realOptions);\n}\n//# sourceMappingURL=parse.js.map","/**\n * Resolves all promises in an object recursively. The promise with be replaced by the resolved value.\n * The changes are therefore done in-place !\n * @param object\n * @returns\n */\nexport async function recursiveResolve(object) {\n    if (typeof object !== 'object')\n        return object;\n    const promises = [];\n    await appendPromises(object, promises);\n    await Promise.all(promises);\n    return object;\n}\nfunction appendPromises(object, promises) {\n    if (typeof object !== 'object')\n        return object;\n    for (const key in object) {\n        if (typeof object[key].then === 'function') {\n            promises.push(object[key].then((value) => (object[key] = value)));\n        }\n        else if (typeof object[key] === 'object') {\n            appendPromises(object[key], promises);\n        }\n    }\n    return object;\n}\n//# sourceMappingURL=recursiveResolve.js.map","const base64codes = Uint8Array.from([\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255,\n    255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255,\n    255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n    21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32,\n    33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n]);\n/**\n * Convert a Uint8Array containing a base64 encoded bytes to a Uint8Array containing decoded values\n * @param input\n * @returns a Uint8Array containing the decoded bytes\n */\nexport function decode(input) {\n    if (!ArrayBuffer.isView(input)) {\n        input = new Uint8Array(input);\n    }\n    if (input.length % 4 !== 0) {\n        throw new Error('Unable to parse base64 string.');\n    }\n    const output = new Uint8Array(3 * (input.length / 4));\n    if (input.length === 0)\n        return output;\n    const missingOctets = input.at(-2) === 61 ? 2 : input.at(-1) === 61 ? 1 : 0;\n    for (let i = 0, j = 0; i < input.length; i += 4, j += 3) {\n        const buffer = (base64codes[input[i]] << 18) |\n            (base64codes[input[i + 1]] << 12) |\n            (base64codes[input[i + 2]] << 6) |\n            base64codes[input[i + 3]];\n        output[j] = buffer >> 16;\n        output[j + 1] = (buffer >> 8) & 0xff;\n        output[j + 2] = buffer & 0xff;\n    }\n    return output.subarray(0, output.length - missingOctets);\n}\n//# sourceMappingURL=decode.js.map","export const base64codes = Uint8Array.from([\n    65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,\n    84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,\n    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n    122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47,\n]);\n//# sourceMappingURL=base64codes.js.map","import { base64codes } from './base64codes';\n/*\n3 bytes are encoded in 4 bytes of base64\n11111122 22223333 33444444\nWe want to be the fastest possible, so we will use a lookup table to convert 12 bits to 2 bytes of base64\nBut in order still to avoid one operation we will create 2 of those lookup tables.\n- One for 2222 11111122\n- One for 3333 33444444\n*/\n// 2222 11111122\nconst base64codes1 = new Uint32Array(64 * 64);\nfor (let i = 0; i < 64; i++) {\n    for (let j = 0; j < 64; j++) {\n        const index = (i << 2) | ((j & 0x30) >> 4) | ((j & 0x0f) << 8);\n        base64codes1[index] = base64codes[i] | (base64codes[j] << 8);\n    }\n}\n// 3333 33444444 that we store on the bits 16->31 just to allow to make directly the OR with the previous value\nconst base64codes2 = new Uint32Array(64 * 64);\nfor (let i = 0; i < 64; i++) {\n    for (let j = 0; j < 64; j++) {\n        const index = (i << 6) | j;\n        base64codes2[index] = (base64codes[i] << 16) | (base64codes[j] << 24);\n    }\n}\n/**\n * Convert a Uint8Array containing bytes to a Uint8Array containing the base64 encoded values\n * @param input\n * @returns a Uint8Array containing the encoded bytes\n */\nexport function encodeFast(input) {\n    const output32 = new Uint32Array(Math.ceil(input.length / 3));\n    let i, j;\n    for (i = 2, j = 0; i < input.length; i += 3, j++) {\n        output32[j] =\n            base64codes1[input[i - 2] | ((input[i - 1] & 0xf0) << 4)] |\n                base64codes2[input[i] | ((input[i - 1] & 0x0f) << 8)];\n    }\n    if (i === input.length + 1) {\n        // 1 octet yet to write\n        output32[j] =\n            base64codes[input[i - 2] >> 2] |\n                (base64codes[(input[i - 2] & 0x03) << 4] << 8) |\n                (15677 << 16);\n    }\n    if (i === input.length) {\n        // 2 octets yet to write\n        output32[j] =\n            base64codes[input[i - 2] >> 2] |\n                (base64codes[((input[i - 2] & 0x03) << 4) | (input[i - 1] >> 4)] << 8) |\n                (base64codes[(input[i - 1] & 0x0f) << 2] << 16) |\n                (61 << 24);\n    }\n    const output8 = new Uint8Array(output32.buffer);\n    return output8;\n}\n//# sourceMappingURL=encodeFast.js.map","export async function inflate(zlibCompressedData) {\n  const inputStream = new ReadableStream({\n    start(controller) {\n      controller.enqueue(zlibCompressedData);\n      controller.close();\n    },\n  });\n\n  const decompressedStream = inputStream.pipeThrough(\n    new DecompressionStream('deflate'),\n  );\n\n  const reader = decompressedStream.getReader();\n  const chunks = [];\n  let totalLength = 0;\n\n  while (true) {\n    // eslint-disable-next-line no-await-in-loop\n    const { value, done } = await reader.read();\n    if (done) break;\n    chunks.push(value);\n    totalLength += value.length;\n  }\n\n  // Combine chunks into a single Uint8Array\n  const decompressedData = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const chunk of chunks) {\n    decompressedData.set(chunk, offset);\n    offset += chunk.length;\n  }\n\n  return decompressedData;\n}\n","import { decode } from 'uint8-base64';\n\nimport { inflate } from './inflate.js';\n\nexport async function decodeData(data, options = {}) {\n  if (!(data instanceof Uint8Array)) {\n    throw new TypeError('data should be an Uint8Array');\n  }\n  let {\n    endian = 'little',\n    precision,\n    float = true,\n    compression = '',\n    base64 = true,\n    ontologies = {},\n  } = options;\n\n  if ('MS:1000519' in ontologies) {\n    precision = 32;\n    float = false;\n  }\n  if ('MS:1000520' in ontologies) precision = 16;\n  if ('MS:1000521' in ontologies) precision = 32;\n  if ('MS:1000522' in ontologies) {\n    float = false;\n    precision = 64;\n  }\n  if ('MS:1000523' in ontologies) precision = 64;\n  if ('MS:1000574' in ontologies) compression = 'zlib';\n\n  if (base64) {\n    data = decode(data);\n  }\n\n  switch (compression.toLowerCase()) {\n    case 'zlib':\n      data = await inflate(data);\n      break;\n    case '':\n    case 'none':\n      break;\n    default:\n      throw new Error(`Unknown compression algorithm: ${compression}`);\n  }\n\n  switch (endian.toLowerCase()) {\n    case 'little':\n      break;\n    case 'network':\n    case 'big':\n      {\n        // we will invert in place the data\n        let step;\n        switch (precision) {\n          case 32:\n            step = 4;\n            break;\n          case 64:\n            step = 8;\n            break;\n          default:\n            throw new Error('Can not process bigendian file');\n        }\n        for (let i = 0; i < data.length - (data.length % step); i += step) {\n          for (let j = 0; j < step / 2; j++) {\n            const temp = data[i + j];\n            data[i + j] = data[i + step - 1 - j];\n            data[i + step - 1 - j] = temp;\n          }\n        }\n      }\n      break;\n    default:\n      throw new TypeError(`Attributes endian not correct: ${endian}`);\n  }\n\n  /*\n       We should take care that the length of the Uint8Array is correct but the buffer\n       may be a little bit bigger because when decoding base 64 it may end with = or ==\n       and we plan the size in the buffer.\n      */\n\n  if (float) {\n    switch (precision) {\n      case 32:\n        return new Float32Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Float32Array.BYTES_PER_ELEMENT,\n        );\n      case 64:\n        return new Float64Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Float64Array.BYTES_PER_ELEMENT,\n        );\n\n      default:\n        throw new TypeError(`Incorrect precision: ${precision}`);\n    }\n  } else {\n    switch (precision) {\n      case 32:\n        return new Int32Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Int32Array.BYTES_PER_ELEMENT,\n        );\n      case 64:\n        return new BigInt64Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / BigInt64Array.BYTES_PER_ELEMENT,\n        );\n      default:\n        throw new TypeError(`Incorrect precision: ${precision}`);\n    }\n  }\n}\n","export function parseCvParam(cvParam) {\n  let result = {};\n  if (!cvParam) return result;\n  let cvParams;\n  if (Array.isArray(cvParam)) {\n    cvParams = cvParam;\n  } else {\n    cvParams = [cvParam];\n  }\n  for (let param of cvParams) {\n    let attributes = param.attributes;\n    if (attributes.name) {\n      result[attributes.name.toLowerCase()] = {\n        accession: attributes.accession,\n        cvLabel: attributes.cvLabel,\n        value: attributes.value,\n        name: attributes.name,\n      };\n    }\n  }\n  return result;\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processMetadata(parsed, metadata) {\n  if (!parsed || !parsed.description) return;\n  let description = parsed.description;\n  if (description.dataProcessing) {\n    let dataProcessing = description.dataProcessing;\n    if (dataProcessing.software && dataProcessing.software.name) {\n      metadata.software = dataProcessing.software.name;\n    }\n  }\n  if (description.instrument) {\n    let instrument = description.instrument;\n    if (instrument.analyzerList && instrument.analyzerList.analyzer) {\n      let analyzer = instrument.analyzerList.analyzer;\n      let cvParam = parseCvParam(analyzer.cvParam);\n      if (cvParam.analyzertype) {\n        metadata.analyzer = cvParam.analyzertype.value;\n      }\n    }\n    if (instrument.detector) {\n      let detector = instrument.detector;\n      let cvParam = parseCvParam(detector.cvParam);\n      if (cvParam.detectortype) {\n        metadata.detector = cvParam.detectortype.value;\n      }\n    }\n  }\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processSpectrumList(parsed, times, msData) {\n  if (!parsed || !parsed.spectrumList || !parsed.spectrumList.spectrum) return;\n  let spectrumList = parsed.spectrumList.spectrum;\n  for (let spectrum of spectrumList) {\n    let info = parseCvParam(\n      spectrum.spectrumDesc.spectrumSettings.spectrumInstrument.cvParam,\n    );\n\n    times.push(info.timeinminutes.value);\n\n    let mzArray = spectrum.mzArrayBinary.data['#text'] || [];\n    let intensity = spectrum.intenArrayBinary.data['#text'] || [];\n    msData.push([mzArray, intensity]);\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processMetadata } from './processMetaData.js';\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n/**\n *\n * @param {*} arrayBuffer\n * @param {import('../Options.js').Options} [options={}]\n * @returns\n */\nexport async function parseMzData(arrayBuffer, options = {}) {\n  const { logger = console } = options;\n  const result = {\n    metadata: {},\n    times: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n\n  let parsed = parse(arrayBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'data') return decoder.decode(value);\n      const promise = decodeData(node.bytes, node.attributes);\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  await recursiveResolve(parsed);\n  processMetadata(parsed.mzData, result.metadata);\n  processSpectrumList(parsed.mzData, result.times, result.series.ms.data);\n\n  return result;\n}\n","export function parseCvParam(cvParam) {\n  let result = {};\n  if (!cvParam) return result;\n  let cvParams;\n  if (Array.isArray(cvParam)) {\n    cvParams = cvParam;\n  } else {\n    cvParams = [cvParam];\n  }\n  for (let parameter of cvParams) {\n    let attributes = parameter.attributes;\n    if (attributes.name) {\n      result[attributes.accession] = attributes;\n    }\n  }\n  return result;\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processSpectrumList(parsed, times, msData) {\n  if (\n    !parsed ||\n    !parsed.run ||\n    !parsed.run.spectrumList ||\n    !parsed.run.spectrumList.spectrum\n  ) {\n    return;\n  }\n  let spectrumList = parsed.run.spectrumList.spectrum;\n\n  for (let spectrum of spectrumList) {\n    if (!spectrum.binaryDataArrayList) continue;\n    let scanList = spectrum.scanList;\n    if (Array.isArray(scanList)) throw new Error('Unsupported scanList');\n\n    let scan = scanList.scan;\n\n    if (typeof scan !== 'object') continue;\n    if (Array.isArray(scan)) {\n      throw new Error('processSpectrumList: scan may not be an array');\n    }\n    const cvParam = parseCvParam(scan.cvParam);\n    times.push(cvParam['MS:1000016'].value);\n\n    const dataArrayList = spectrum.binaryDataArrayList.binaryDataArray;\n    if (dataArrayList.length !== 2) {\n      throw new Error('Can not decodeData because length !== 2');\n    }\n\n    const first = dataArrayList[0];\n    const firstCVParams = parseCvParam(first.cvParam);\n    const second = dataArrayList[1];\n    const secondCVParams = parseCvParam(second.cvParam);\n\n    // MS:1000514 - m/z array\n    // MS:1000515 - intensity array\n    if (firstCVParams['MS:1000514'] && secondCVParams['MS:1000515']) {\n      msData.push([first.binary, second.binary]);\n    }\n    if (firstCVParams['MS:1000515'] && secondCVParams['MS:1000514']) {\n      msData.push([second.binary, first.binary]);\n    }\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n// https://www.psidev.info/mzml\n// CV = Controlled vocabulary\nexport async function parseMzML(mzmlBuffer, options = {}) {\n  const { logger = console, rawData } = options;\n\n  if (!(mzmlBuffer instanceof ArrayBuffer)) {\n    throw new TypeError('mzmlBuffer should be an ArrayBuffer');\n  }\n\n  if (rawData && !(rawData instanceof ArrayBuffer)) {\n    throw new TypeError('rawData should be an ArrayBuffer');\n  }\n\n  const rawDataUint8Array = rawData && new Uint8Array(rawData);\n\n  const result = {\n    metadata: {},\n    times: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n\n  const referenceableParamGroups = {};\n\n  let parsed = parse(mzmlBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagNameProcessor: (name, nodes) => {\n      switch (name) {\n        case 'referenceableParamGroupList':\n          {\n            const children = nodes[0]?.children?.referenceableParamGroup;\n            for (const group of children) {\n              const id = group.attributes?.id;\n              referenceableParamGroups[id] = group.children;\n            }\n          }\n          break;\n        case 'referenceableParamGroupRef':\n          for (const node of nodes) {\n            // need to append the references children to the parent\n            const ref = node.attributes.ref;\n            if (referenceableParamGroups[ref]) {\n              const parent = node.parent;\n              parent.children = parent.children || {};\n              for (const key in referenceableParamGroups[ref]) {\n                parent.children[key] = parent.children[key] || [];\n                parent.children[key].push(\n                  ...referenceableParamGroups[ref][key],\n                );\n              }\n            }\n          }\n          break;\n        case 'cvParam':\n          break;\n        default:\n      }\n      return name;\n    },\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'binary') return decoder.decode(value);\n      const referenceableParamGroupRefs =\n        node.parent?.children?.referenceableParamGroupRef?.map(\n          (ref) => ref.attributes.ref,\n        ) || [];\n      const ontologies = {};\n      referenceableParamGroupRefs.forEach((ref) => {\n        if (referenceableParamGroups[ref]) {\n          Object.assign(ontologies, referenceableParamGroups[ref]);\n        }\n      });\n      node.parent.children.cvParam.forEach((cv) => {\n        ontologies[cv.attributes.accession] = cv.attributes.value;\n      });\n\n      let promise;\n      if ('IMS:1000102' in ontologies) {\n        // external data offset\n        const offset = parseInt(ontologies['IMS:1000102'], 10);\n        const encodedLength = parseInt(ontologies['IMS:1000104'], 10);\n\n        promise = decodeData(\n          rawDataUint8Array.subarray(offset, offset + encodedLength),\n          {\n            ontologies,\n            base64: false,\n          },\n        );\n      } else {\n        promise = decodeData(node.bytes, { ontologies, base64: true });\n      }\n\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  // parsed file still contains promises\n  await recursiveResolve(parsed);\n\n  const mzML = parsed.mzML || parsed.indexedmzML.mzML;\n\n  processSpectrumList(mzML, result.times, result.series.ms.data);\n\n  return result;\n}\n","export function processSpectrumList(parsed, times, msData) {\n  if (!parsed.msRun.scan) return;\n  let scanList = parsed.msRun.scan;\n  if (Array.isArray(scanList) === false) scanList = [scanList];\n  if (scanList[0].attributes) msData.info = [];\n  for (let scan of scanList) {\n    if (typeof scan !== 'object') continue;\n    if (Array.isArray(scan)) {\n      throw new Error('processSpectrumList: scan may not be an array');\n    }\n    const dataArray = scan.peaks['#text'];\n    let length = dataArray.length / 2;\n    let first = new Float64Array(length);\n    let second = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n      first[i] = dataArray[i * 2];\n      second[i] = dataArray[i * 2 + 1];\n    }\n    msData.data.push([first, second]);\n    msData.info.push(scan.attributes);\n    times.push(\n      parseFloat(\n        scan.attributes.retentionTime.replace(/(?:P*)(?:T*)(?:S*)/gi, ''),\n      ),\n    );\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n/**\n *\n * @param {*} arrayBuffer\n * @param {import('../Options.js').Options} [options]\n * @returns\n */\nexport async function parseMzXML(arrayBuffer, options = {}) {\n  const { logger = console } = options;\n  const result = {\n    metadata: {},\n    times: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n  let parsed = parse(arrayBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'peaks') return decoder.decode(value);\n\n      const promise = decodeData(node.bytes, {\n        precision: node.attributes.precision,\n        endian: node.attributes.byteOrder,\n        compression: node.attributes.compressionType,\n      });\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  await recursiveResolve(parsed);\n\n  processSpectrumList(parsed.mzXML, result.times, result.series.ms);\n\n  return result;\n}\n","import { parseMzData } from './mzdata/parseMzData.js';\nimport { parseMzML } from './mzml/parseMzML.js';\nimport { parseMzXML } from './mzxml/parseMzXML.js';\n\nconst decoder = new TextDecoder();\n\n/**\n * Reads a mzData v1.05 file\n * @param {ArrayBuffer|string} xml - ArrayBuffer or String or any Typed Array (including Node.js' Buffer from v4) with the data\n * @param {import('./Options.js').Options} [options={}]\n * @return Promise<{{times: Array<number>, series: { ms: { data:Array<Array<number>>}}}}>\n */\nexport async function parseMZ(xml, options = {}) {\n  if (typeof xml === 'string') {\n    const encoder = new TextEncoder();\n    xml = encoder.encode(xml);\n  }\n\n  if (!ArrayBuffer.isView(xml)) {\n    xml = new Uint8Array(xml);\n  }\n\n  const header = xml.subarray\n    ? decoder.decode(xml.subarray(0, 200))\n    : xml.substring(0, 200);\n\n  if (header.includes('mzData')) {\n    return parseMzData(xml, options);\n  } else if (header.includes('mzML')) {\n    return parseMzML(xml, options);\n  } else if (header.includes('mzXML')) {\n    return parseMzXML(xml, options);\n  } else {\n    throw new Error(`MZ parser: unknown format`);\n  }\n}\n"],"names":["parseString","value","length","lowercase","toLowerCase","number","Number","includes","isNaN","utf8Decoder","TextDecoder","decoder","decode","array","defaultOptions","trimValues","attributesNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseAttributesString","textNodeName","arrayMode","cdataTagName","tagNameProcessor","name","attributeNameProcessor","tagValueProcessor","string","replaceAll","attributeValueProcessor","stopNodes","XMLNode","tagName","parent","children","attributes","bytes","startIndex","cachedValue","constructor","Object","create","append","toAppend","arrayConcat","Uint8Array","set","undefined","addChild","child","Array","isArray","push","arrayIndexOf","referenceArray","index","found","foundIndex","i","j","arrayTrim","arg","subarray","closingIndexForOpeningTag","data","attrBoundary","endIndex","byte","Error","findClosingIndex","xmlData","str","errMsg","closingIndex","getAllMatches","regex","from","matchAll","isEmptySimpleObject","object","key","isEmptyObject","merge","target","source","isTagNameInArrayMode","parentTagName","RegExp","test","newLocal","String","raw","attrsRegx","options","matches","match","attributeName","resolveNameSpace","trim","tags","split","prefix","startsWith","removeNameSpaceIfNeeded","colonIndex","indexOf","slice","getTraversable","traversable","currentNode","dataSize","dataIndex","xmlData1","xmlData2","closeIndex","tagExp","childNode","parsedOpeningTag","tagData","separatorIndex","shouldBuildAttributesMap","Math","max","replace","tagAttributes","endsWith","traversableToJSON","node","result","asArray","renamedAttributes","newAttributeName","encapsulatedAttributes","nodes","newTagName","subResult","parse","encoder","TextEncoder","encode","ArrayBuffer","isView","realOptions","recursiveResolve","promises","appendPromises","Promise","all","then","base64codes","input","output","missingOctets","at","buffer","base64codes1","Uint32Array","base64codes2","inflate","zlibCompressedData","inputStream","ReadableStream","start","controller","enqueue","close","decompressedStream","pipeThrough","DecompressionStream","reader","getReader","chunks","totalLength","done","read","decompressedData","offset","chunk","decodeData","TypeError","endian","precision","float","compression","base64","ontologies","step","temp","Float32Array","byteOffset","byteLength","BYTES_PER_ELEMENT","Float64Array","Int32Array","BigInt64Array","parseCvParam","cvParam","cvParams","param","accession","cvLabel","processMetadata","parsed","metadata","description","dataProcessing","software","instrument","analyzerList","analyzer","analyzertype","detector","detectortype","processSpectrumList","times","msData","spectrumList","spectrum","info","spectrumDesc","spectrumSettings","spectrumInstrument","timeinminutes","mzArray","mzArrayBinary","intensity","intenArrayBinary","parseMzData","arrayBuffer","logger","console","series","ms","promise","catch","error","mzData","parameter","run","binaryDataArrayList","scanList","scan","dataArrayList","binaryDataArray","first","firstCVParams","second","secondCVParams","binary","parseMzML","mzmlBuffer","rawData","rawDataUint8Array","referenceableParamGroups","referenceableParamGroup","group","id","ref","referenceableParamGroupRefs","referenceableParamGroupRef","map","forEach","assign","cv","parseInt","encodedLength","mzML","indexedmzML","msRun","dataArray","peaks","parseFloat","retentionTime","parseMzXML","byteOrder","compressionType","mzXML","parseMZ","xml","header","substring"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]}