{"version":3,"file":"convert-to-jcamp.umd.js","sources":["../lib/utils/addInfoData.js","../node_modules/is-any-array/lib/index.js","../node_modules/ml-spectra-processing/lib/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib/x/xCheck.js","../node_modules/ml-spectra-processing/lib/x/xDivide.js","../node_modules/ml-spectra-processing/lib/utils/isLittleEndian.js","../node_modules/ml-spectra-processing/lib/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib/x/xMultiply.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib/matrix/matrixMinMaxZ.js","../lib/utils/checkMatrix.js","../lib/utils/checkNumberOrArray.js","../lib/utils/getExtremeValues.js","../lib/creatorNtuples.js","../lib/utils/getFactorNumber.js","../lib/utils/getBestFactor.js","../lib/utils/getNumber.js","../lib/utils/peakTableCreator.js","../lib/utils/rescaleAndEnsureInteger.js","../lib/utils/vectorEncoder.js","../lib/utils/xyDataCreator.js","../lib/fromJSON.js","../lib/fromVariables.js","../lib/getOneIfArray.js","../lib/from1DNMRVariables.js","../lib/utils/getBestFactorMatrix.js","../lib/from2DNMRVariables.js"],"sourcesContent":["export const addInfoData = (data, options = {}) => {\n    const { keys = Object.keys(data), prefix = '##$' } = options;\n    let header = '';\n    for (const key of keys) {\n        header +=\n            typeof data[key] === 'object'\n                ? `${prefix}${key}=${JSON.stringify(data[key])}\\n`\n                : `${prefix}${key}=${data[key]}\\n`;\n    }\n    return header;\n};\n//# sourceMappingURL=addInfoData.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - array to check.\n * @param options - additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength = 1 } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new RangeError('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","const LITTLE_ENDIAN = new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n/**\n * Check whether the host stores multi-byte values least significant byte first.\n * Needed whenever a typed array is reinterpreted through another view, because\n * the position of the words of a value then depends on the platform.\n * @returns true on a little-endian host.\n */\nexport function isLittleEndian() {\n    return LITTLE_ENDIAN;\n}\n//# sourceMappingURL=isLittleEndian.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns object with 2 properties, min and max.\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (let i = 1; i < array.length; i++) {\n        const value = array[i];\n        if (value < min)\n            min = value;\n        else if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('all rows must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","import { matrixCheck } from \"./matrixCheck.js\";\n/**\n * Get min and max Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkMatrix(data) {\n    if (!isAnyArray(data) || !isAnyArray(data[0])) {\n        throw new Error(`2D data should be a matrix`);\n    }\n}\n//# sourceMappingURL=checkMatrix.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkNumberOrArray(data) {\n    if (!isAnyArray(data) || isAnyArray(data[0])) {\n        throw new Error(`x and y data should be an array of numbers`);\n    }\n}\n//# sourceMappingURL=checkNumberOrArray.js.map","import { isAnyArray } from 'is-any-array';\nimport { matrixMinMaxZ } from 'ml-spectra-processing/matrix';\nimport { xMinMaxValues } from 'ml-spectra-processing/x';\nimport { checkMatrix } from \"./checkMatrix.js\";\nimport { checkNumberOrArray } from \"./checkNumberOrArray.js\";\nexport function getExtremeValues(data) {\n    if (isAnyArray(data[0])) {\n        checkMatrix(data);\n        const firstRow = data[0];\n        return {\n            firstLast: {\n                first: firstRow[0],\n                last: data.at(-1)[firstRow.length - 1],\n            },\n            minMax: matrixMinMaxZ(data),\n        };\n    }\n    checkNumberOrArray(data);\n    return {\n        firstLast: {\n            first: data[0],\n            last: data.at(-1),\n        },\n        minMax: xMinMaxValues(data),\n    };\n}\n//# sourceMappingURL=getExtremeValues.js.map","import { addInfoData } from \"./utils/addInfoData.js\";\nimport { getExtremeValues } from \"./utils/getExtremeValues.js\";\n/**\n * Parse from a xyxy data array\n * @param variables - Variables to convert to jcamp\n * @param [options={}] - options that allows to add meta data in the jcamp\n * @returns JCAMP-DX text file corresponding to the variables\n */\nexport default function creatorNtuples(variables, options) {\n    const { meta = {}, info = {} } = options;\n    const { title = '', owner = '', origin = '', dataType = '', ...resultInfo } = info;\n    const symbol = [];\n    const variableName = [];\n    const variableType = [];\n    const variableDim = [];\n    const units = [];\n    const first = [];\n    const last = [];\n    const min = [];\n    const max = [];\n    const keys = Object.keys(variables);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const variable = variables[key];\n        if (!variable)\n            continue;\n        const name = variable?.label.replace(/ *\\[.*/, '');\n        const unit = variable?.label.replace(/.*\\[(?<units>.*)\\].*/, '$<units>');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        symbol.push(variable.symbol || key);\n        variableName.push(name || key);\n        variableDim.push(variable.data.length);\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        if (variable.isDependent !== undefined) {\n            variableType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n        }\n        else {\n            variableType.push(variable.isDependent !== undefined\n                ? !variable.isDependent\n                : i === 0\n                    ? 'INDEPENDENT'\n                    : 'DEPENDENT');\n        }\n        units.push(variable.units || unit || '');\n    }\n    let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##DATA CLASS= NTUPLES\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n    header += addInfoData(resultInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${variableName.join(',')}\n##SYMBOL=    ${symbol.join(',')}\n##VAR_TYPE=  ${variableType.join(',')}\n##VAR_DIM=   ${variableDim.join(',')}\n##UNITS=     ${units.join(',')}\n##FIRST=     ${first.join(',')}\n##LAST=      ${last.join(',')}\n##MIN=       ${min.join(',')}\n##MAX=       ${max.join(',')}\n##PAGE= N=1\\n`;\n    header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n    for (let i = 0; i < variables.x.data.length; i++) {\n        const point = [];\n        for (const key of keys) {\n            const variable = variables[key];\n            if (!variable)\n                continue;\n            point.push(variable.data[i]);\n        }\n        header += `${point.join('\\t')}\\n`;\n    }\n    header += `##END NTUPLES= ${dataType}\\n`;\n    header += '##END=\\n##END=';\n    return header;\n}\n//# sourceMappingURL=creatorNtuples.js.map","export function getFactorNumber(minMax, maxValue = 2 ** 31 - 1) {\n    let factor;\n    if (minMax.min < 0) {\n        if (minMax.max > 0) {\n            factor = Math.max(-minMax.min, minMax.max) / maxValue;\n        }\n        else {\n            factor = -minMax.min / maxValue;\n        }\n    }\n    else {\n        factor = minMax.max / maxValue;\n    }\n    return factor;\n}\n//# sourceMappingURL=getFactorNumber.js.map","import { xMinMaxValues } from 'ml-spectra-processing/x';\nimport { getFactorNumber } from \"./getFactorNumber.js\";\nexport function getBestFactor(array, options = {}) {\n    const { maxValue, factor, minMax } = options;\n    if (factor !== undefined) {\n        return factor;\n    }\n    // is there non integer number ?\n    let isOnlyInteger = true;\n    for (const y of array) {\n        if (Math.round(y) !== y) {\n            isOnlyInteger = false;\n            break;\n        }\n    }\n    if (isOnlyInteger) {\n        return 1;\n    }\n    // we need to rescale the values\n    // need to find the max and min values\n    const extremeValues = minMax || xMinMaxValues(array);\n    return getFactorNumber(extremeValues, maxValue);\n}\n//# sourceMappingURL=getBestFactor.js.map","/**\n * Reconvert number to original value\n * @param number - Number used for computation\n * @param factor - Multiplying factor\n * @returns Original value\n */\nexport function getNumber(number, factor) {\n    if (factor !== 1)\n        number /= factor;\n    const rounded = Math.round(number);\n    if (rounded !== number && Math.abs(rounded - number) <= Number.EPSILON) {\n        return rounded;\n    }\n    return number;\n}\n//# sourceMappingURL=getNumber.js.map","import { getNumber } from \"./getNumber.js\";\nexport function peakTableCreator(data, options = {}) {\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    let firstX = Infinity;\n    let lastX = -Infinity;\n    let firstY = Infinity;\n    let lastY = -Infinity;\n    const lines = [];\n    for (let i = 0; i < data.x.length; i++) {\n        const x = data.x[i];\n        const y = data.y[i];\n        if (firstX > x) {\n            firstX = x;\n        }\n        if (lastX < x) {\n            lastX = x;\n        }\n        if (firstY > y) {\n            firstY = y;\n        }\n        if (lastY < y) {\n            lastY = y;\n        }\n    }\n    lines.push(`##FIRSTX=${firstX}`, `##LASTX=${lastX}`, `##FIRSTY=${firstY}`, `##LASTY=${lastY}`, `##XFACTOR=${xFactor}`, `##YFACTOR=${yFactor}`, '##PEAK TABLE=(XY..XY)');\n    for (let i = 0; i < data.x.length; i++) {\n        lines.push(`${getNumber(data.x[i], xFactor)} ${getNumber(data.y[i], yFactor)}`);\n    }\n    return lines;\n}\n//# sourceMappingURL=peakTableCreator.js.map","import { xDivide } from 'ml-spectra-processing/x';\nexport function rescaleAndEnsureInteger(data, factor = 1) {\n    if (factor === 1)\n        return data.map((value) => Math.round(value));\n    return xDivide(data, factor).map((value) => Math.round(value));\n}\n//# sourceMappingURL=rescaleAndEnsureInteger.js.map","/**\n * class encodes a integer vector as a String in order to store it in a text file.\n * The algorithms used to encode the data are describe in:\n *            https://www.iupac.org/publications/pac/pdf/2001/pdf/7311x1765.pdf\n */\nconst newLine = '\\n';\nconst pseudoDigits = [\n    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n    ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],\n    ['@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],\n    ['%', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R'],\n    ['%', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'],\n    [' ', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 's'],\n];\nconst SQZ_P = 1;\nconst SQZ_N = 2;\nconst DIF_P = 3;\nconst DIF_N = 4;\nconst DUP = 5;\nconst maxLinelength = 100;\n/**\n * This function encodes the given vector. The xyEncoding format is specified by the\n * xyEncoding option\n * @param data - Integer vector to encode.\n * @param firstX - First x value.\n * @param intervalX - Interval between two x values.\n * @param xyEncoding - 'FIX', 'SQZ', 'DIF', 'DIFDUP', 'CVS' or 'PAC'. Default 'DIFDUP'.\n * @returns The encoded data.\n */\nexport function vectorEncoder(data, firstX, intervalX, xyEncoding) {\n    switch (xyEncoding) {\n        case 'FIX':\n            return fixEncoding(data, firstX, intervalX);\n        case 'SQZ':\n            return squeezedEncoding(data, firstX, intervalX);\n        case 'DIF':\n            return differenceEncoding(data, firstX, intervalX);\n        case 'DIFDUP':\n            return differenceDuplicateEncoding(data, firstX, intervalX);\n        case 'CSV':\n            return commaSeparatedValuesEncoding(data, firstX, intervalX);\n        case 'PAC':\n            return packedEncoding(data, firstX, intervalX);\n        case undefined:\n        default:\n            return differenceEncoding(data, firstX, intervalX);\n    }\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @private\n * No data compression used. The data is separated by a comma(',').\n */\nexport function commaSeparatedValuesEncoding(data, firstX, intervalX) {\n    return fixEncoding(data, firstX, intervalX, ',');\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @param separator\n * @private\n * No data compression used. The data is separated by the specified separator.\n */\nexport function fixEncoding(data, firstX, intervalX, separator = ' ') {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData += `${separator}${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += `${separator}${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @private\n * No data compression used. The data is separated by the sign of the number.\n */\nexport function packedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData +=\n                data[j] < 0 ? String(data[j++]) : `+${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += data[i] < 0 ? String(data[i]) : `+${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @private\n * Data compression is possible using the squeezed form (SQZ) in which the delimiter, the leading digit,\n * and sign are replaced by a pseudo-digit from Table 1. For example, the Y-values 30, 32 would be\n * represented as C0C2.\n */\nexport function squeezedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    // String outputData = new String();\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 10) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 10; i++) {\n            outputData += squeezedDigit(String(data[j++]));\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += squeezedDigit(String(data[i]));\n        }\n    }\n    return outputData;\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @private\n * Duplicate suppression xyEncoding\n */\nexport function differenceDuplicateEncoding(data, firstX, intervalX) {\n    let mult = 0;\n    let index = 0;\n    let charCount = 0;\n    // We built a string where we store the encoded data.\n    let encodedData = '';\n    let encodedNumber = '';\n    let temporary = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (let i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    // We simulate a line carry\n    const numberDiff = diffData.length;\n    while (index < numberDiff) {\n        if (charCount === 0) {\n            // Start line\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else if (diffData[index - 1] === diffData[index]) {\n            // Try to insert next difference\n            mult++;\n        }\n        else if (mult > 0) {\n            // Now we know that it can be in line\n            mult++;\n            encodedNumber = duplicateDigit(mult.toString());\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n            mult = 0;\n            index--;\n        }\n        else {\n            // Check if it fits, otherwise start a new line\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                // start a new line\n                encodedData += newLine;\n                temporary = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}${encodedNumber}`;\n                encodedData += temporary; // Each line start with first index number.\n                charCount = temporary.length;\n            }\n        }\n        index++;\n    }\n    if (mult > 0) {\n        encodedData += duplicateDigit((mult + 1).toString());\n    }\n    // We insert the last data from fid. It is done to control of data\n    // The last line start with the number of datas in the fid.\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}`;\n    return encodedData;\n}\n/**\n * @param data\n * @param firstX\n * @param intervalX\n * @private\n * Differential xyEncoding\n */\nexport function differenceEncoding(data, firstX, intervalX) {\n    let index = 0;\n    let charCount = 0;\n    let i;\n    let encodedData = '';\n    let encodedNumber = '';\n    let temporary = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    const numberDiff = diffData.length;\n    while (index < numberDiff) {\n        if (charCount === 0) {\n            // We convert the first number.\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else {\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                encodedData += newLine;\n                temporary = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}${encodedNumber}`;\n                encodedData += temporary; // Each line start with first index number.\n                charCount = temporary.length;\n            }\n        }\n        index++;\n    }\n    // We insert the last number from data. It is done to control of data\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(String(data[index]))}`;\n    return encodedData;\n}\n/**\n * @param num\n * @param number_\n * @private\n * Convert number to the ZQZ format, using pseudo digits.\n */\nfunction squeezedDigit(number_) {\n    let sqzDigits = '';\n    if (number_.startsWith('-')) {\n        sqzDigits += pseudoDigit(SQZ_N, number_.charAt(1));\n        if (number_.length > 2) {\n            sqzDigits += number_.slice(2);\n        }\n    }\n    else {\n        sqzDigits += pseudoDigit(SQZ_P, number_.charAt(0));\n        if (number_.length > 1) {\n            sqzDigits += number_.slice(1);\n        }\n    }\n    return sqzDigits;\n}\n/**\n * Convert number to the DIF format, using pseudo digits.\n * @param num\n * @param number_\n */\nfunction differenceDigit(number_) {\n    let diffDigits = '';\n    if (number_.startsWith('-')) {\n        diffDigits += pseudoDigit(DIF_N, number_.charAt(1));\n        if (number_.length > 2) {\n            diffDigits += number_.slice(2);\n        }\n    }\n    else {\n        diffDigits += pseudoDigit(DIF_P, number_.charAt(0));\n        if (number_.length > 1) {\n            diffDigits += number_.slice(1);\n        }\n    }\n    return diffDigits;\n}\n/**\n * Convert number to the DUP format, using pseudo digits.\n * @param num\n * @param number_\n */\nfunction duplicateDigit(number_) {\n    let dupDigits = '';\n    dupDigits += pseudoDigit(DUP, number_.charAt(0));\n    if (number_.length > 1) {\n        dupDigits += number_.slice(1);\n    }\n    return dupDigits;\n}\nfunction pseudoDigit(row, digit) {\n    return pseudoDigits[row][Number(digit)];\n}\n//# sourceMappingURL=vectorEncoder.js.map","import { rescaleAndEnsureInteger } from \"./rescaleAndEnsureInteger.js\";\nimport { vectorEncoder } from \"./vectorEncoder.js\";\nexport function xyDataCreator(data, options = {}) {\n    const { xyEncoding = 'DIF' } = options;\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    const firstX = data.x[0];\n    const lastX = data.x.at(-1);\n    const firstY = data.y[0];\n    const lastY = data.y.at(-1);\n    const nbPoints = data.x.length;\n    const deltaX = (lastX - firstX) / (nbPoints - 1);\n    const lines = [\n        `##FIRSTX=${firstX}`,\n        `##LASTX=${lastX}`,\n        `##FIRSTY=${firstY}`,\n        `##LASTY=${lastY}`,\n        `##DELTAX=${deltaX}`,\n        `##XFACTOR=${xFactor}`,\n        `##YFACTOR=${yFactor}`,\n        '##XYDATA=(X++(Y..Y))',\n    ];\n    const line = vectorEncoder(rescaleAndEnsureInteger(data.y, yFactor), firstX / xFactor, deltaX / xFactor, xyEncoding);\n    if (line)\n        lines.push(line);\n    return lines;\n}\n//# sourceMappingURL=xyDataCreator.js.map","import { addInfoData } from \"./utils/addInfoData.js\";\nimport { getBestFactor } from \"./utils/getBestFactor.js\";\nimport { peakTableCreator } from \"./utils/peakTableCreator.js\";\nimport { xyDataCreator } from \"./utils/xyDataCreator.js\";\n/**\n * Create a jcamp\n * @param data - object of array\n * @param - - [options={meta:{},info:{}} - metadata object\n * @param options\n * @returns JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n    const { meta = {}, info = {}, xyEncoding } = options;\n    const { title = '', owner = '', origin = '', dataType = '', xUnits = '', yUnits = '', ...resultInfo } = info;\n    let { xFactor, yFactor } = info;\n    data = { x: data.x, y: data.y };\n    let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\\n`;\n    header += addInfoData(resultInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    // we leave the header and utf8 fonts ${header.replace(/[^\\t\\n\\x20-\\x7F]/g, '')\n    if (xyEncoding) {\n        xFactor = getBestFactor(data.x, { factor: xFactor });\n        yFactor = getBestFactor(data.y, { factor: yFactor });\n        return `${header}##NPOINTS=${data.x.length}\n${xyDataCreator(data, { info: { xFactor, yFactor }, xyEncoding }).join('\\n')}\n##END=`;\n    }\n    if (xFactor === undefined)\n        xFactor = 1;\n    if (yFactor === undefined)\n        yFactor = 1;\n    if (xFactor !== 1) {\n        data.x = data.x.map((value) => value / xFactor);\n    }\n    if (yFactor !== 1) {\n        data.y = data.y.map((value) => value / yFactor);\n    }\n    return `${header}##NPOINTS=${data.x.length}\n${peakTableCreator(data, { info: { xFactor, yFactor } }).join('\\n')}\n##END=`;\n}\n//# sourceMappingURL=fromJSON.js.map","import creatorNtuples from \"./creatorNtuples.js\";\nimport { fromJSON } from \"./fromJSON.js\";\nimport { checkNumberOrArray } from \"./utils/checkNumberOrArray.js\";\n/**\n * Create a jcamp from variables\n * @param variables\n * @param options\n */\nexport function fromVariables(\n/**\n * object of variables\n */\nvariables, options = {}) {\n    const { info = {}, meta = {}, forceNtuples = false } = options;\n    const jcampOptions = {\n        info,\n        meta,\n    };\n    const keys = Object.keys(variables).map((key) => key.toLowerCase());\n    if (!forceNtuples && keys.length === 2) {\n        const x = variables.x;\n        const xLabel = x.label || 'x';\n        if (variables.x.units) {\n            if (xLabel.includes(variables.x.units)) {\n                jcampOptions.info.xUnits = xLabel;\n            }\n            else {\n                jcampOptions.info.xUnits = `${xLabel} (${variables.x.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.xUnits = xLabel;\n        }\n        const y = variables.y;\n        const yLabel = y.label || 'y';\n        if (variables.y.units) {\n            if (yLabel.includes(variables.y.units)) {\n                jcampOptions.info.xUnits = yLabel;\n            }\n            else {\n                jcampOptions.info.yUnits = `${yLabel} (${variables.y.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.yUnits = yLabel;\n        }\n        const xData = variables.x.data;\n        const yData = variables.y.data;\n        checkNumberOrArray(xData);\n        checkNumberOrArray(yData);\n        return fromJSON({ x: xData, y: yData }, jcampOptions);\n    }\n    return creatorNtuples(variables, options);\n}\n//# sourceMappingURL=fromVariables.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * It returns an element if the input is an array otherwise it returns the input.\n * @param data - one list or single value\n * @param index - index of the desired element, if the index is out of the boundaries it throws an error.\n * @returns\n */\nexport function getOneIfArray(data, index = 0) {\n    if (isAnyArray(data)) {\n        const value = data.at(index);\n        if (value !== undefined) {\n            return value;\n        }\n        throw new RangeError('An array with a index out of boundaries');\n    }\n    return data;\n}\n//# sourceMappingURL=getOneIfArray.js.map","import { xMultiply } from 'ml-spectra-processing/x';\nimport { getOneIfArray } from \"./getOneIfArray.js\";\nimport { addInfoData } from \"./utils/addInfoData.js\";\nimport { checkNumberOrArray } from \"./utils/checkNumberOrArray.js\";\nimport { getBestFactor } from \"./utils/getBestFactor.js\";\nimport { getExtremeValues } from \"./utils/getExtremeValues.js\";\nimport { rescaleAndEnsureInteger } from \"./utils/rescaleAndEnsureInteger.js\";\nimport { vectorEncoder } from \"./utils/vectorEncoder.js\";\nconst ntuplesKeys = ['r', 'i'];\nfunction isNTuplesData(variables) {\n    return 'r' in variables && 'i' in variables;\n}\nfunction isRealData(variables) {\n    return 'r' in variables && !('i' in variables);\n}\n/**\n * Create a jcamp of 1D NMR data by variables x and y or x, r, i\n * @param variables - Variables to convert to jcamp\n * @param [options={}] - options that allows to add meta data in the jcamp\n * @returns JCAMP-DX text file corresponding to the variables\n */\nexport function from1DNMRVariables(variables, options) {\n    const { info: infoInput = {}, meta: currentMeta = {}, xyEncoding, nmrInfo, } = options;\n    const { isFid, title, frequencyOffset, decim, dspfvs, nucleus, originFrequency: originFreq, baseFrequency: baseFreq, spectralWidth: nmrSpectralWidth, solvent, owner: nmrOwner, dataType: nmrDataType, dataClass = variables.i ? 'NTUPLES' : 'XYDATA', scaleFactor, digitalFilter, ...currentInfo } = nmrInfo;\n    const baseFrequency = getOneIfArray(baseFreq || originFreq);\n    const originFrequency = getOneIfArray(originFreq || infoInput['.OBSERVE FREQUENCY']);\n    if (!originFrequency) {\n        throw new Error('originFrequency is mandatory into the info object for nmr data');\n    }\n    const xVariable = variables.x;\n    const x = xVariable.data.slice();\n    const xData = isFid ? x : xMultiply(x, originFrequency);\n    // --- Extracted: Metadata construction ---\n    const newMeta = constructMeta(xData, isFid, nmrSpectralWidth, baseFrequency, originFrequency, digitalFilter, decim, dspfvs, currentMeta, variables);\n    const meta = { ...currentInfo, ...currentMeta, ...newMeta };\n    // --- Extracted: Scaling logic ---\n    applyScaling(variables, scaleFactor, meta);\n    // --- Extracted: Info construction ---\n    const newInfo = constructInfo(isFid, xData, dataClass, solvent, nmrSpectralWidth, frequencyOffset, baseFrequency, title, originFrequency, nucleus, nmrDataType, nmrOwner);\n    const info = { ...infoInput, ...newInfo };\n    // --- Extracted: Header construction ---\n    const header = constructHeader(info, meta);\n    const nbPoints = xData.length;\n    const firstX = xData[0];\n    const secondX = xData[1];\n    const spectralWidth = Math.abs(xData[nbPoints - 1] - firstX);\n    const firstPoint = firstX > secondX ? spectralWidth : 0;\n    const lastPoint = firstX > secondX ? 0 : spectralWidth;\n    const symbol = ['X'];\n    const variableDim = [nbPoints];\n    const units = [xVariable.units ?? (isFid ? 'Time' : 'Hz')];\n    const variableType = ['INDEPENDENT'];\n    const variableForm = ['AFFN'];\n    const factor = 'factor' in options\n        ? { ...options.factor }\n        : {};\n    const factorArray = [spectralWidth / (nbPoints - 1)];\n    const variableName = [xVariable.label.replace(/ *\\[.*/, '') || 'X'];\n    const first = [firstPoint];\n    const last = [lastPoint];\n    const max = [Math.max(lastPoint, firstPoint)];\n    const min = [Math.min(lastPoint, firstPoint)];\n    for (const key of ntuplesKeys) {\n        const variable = variables[key];\n        if (!variable) {\n            if (key !== 'i') {\n                throw new Error(`variable ${key} is mandatory in real/imaginary data`);\n            }\n            continue;\n        }\n        const name = variable?.label.replace(/ *\\[.*/, '');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        factor[key] = getBestFactor(variable.data, {\n            factor: factor[key],\n            minMax,\n        });\n        const currentFactor = factor[key];\n        factorArray.push(currentFactor || 1);\n        symbol.push(variable.symbol || (key === 'r' ? 'R' : 'I'));\n        variableName.push(name || key);\n        variableDim.push(variable.data.length);\n        variableForm.push('ASDF');\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        variableType.push('DEPENDENT');\n        units.push(variable.units ?? 'Arbitrary');\n    }\n    return isNTuplesData(variables)\n        ? addNtuplesHeader(header, variables, {\n            symbol,\n            varName: variableName,\n            varDim: variableDim,\n            varForm: variableForm,\n            first,\n            last,\n            min,\n            max,\n            units,\n            factor,\n            varType: variableType,\n            factorArray,\n        }, nmrDataType)\n        : isRealData(variables)\n            ? addRealData(header, {\n                xData,\n                yData: variables.r.data,\n                xyEncoding,\n                info: {\n                    XUNITS: 'HZ',\n                    YUNITS: units[1],\n                    XFACTOR: factorArray[0],\n                    YFACTOR: factorArray[1],\n                    DELTAX: xData[1] - xData[0],\n                    FIRSTX: first[0],\n                    FIRSTY: first[1],\n                    LASTX: last[0],\n                    MAXY: max[1],\n                    MINY: min[1],\n                    NPOINTS: xData.length,\n                    XYDATA: '(X++(Y..Y))',\n                },\n            })\n            : header;\n}\nfunction addNtuplesHeader(header, variables, inputs, dataType = '') {\n    const { symbol, varName, varDim, first, last, min, max, units, varType, varForm, factorArray, xyEncoding, factor, } = inputs;\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join(',')}\n##SYMBOL=    ${symbol.join(',')}\n##VAR_TYPE=  ${varType.join(',')}\n##VAR_FORM=  ${varForm.join(',')}\n##VAR_DIM=   ${varDim.join(',')}\n##UNITS=     ${units.join(',')}\n##FACTOR=    ${factorArray.join(',')}\n##FIRST=     ${first.join(',')}\n##LAST=      ${last.join(',')}\n##MIN=       ${min.join(',')}\n##MAX=       ${max.join(',')}\\n`;\n    for (const key of ['r', 'i']) {\n        const variable = variables[key];\n        if (!variable)\n            continue;\n        checkNumberOrArray(variable.data);\n        header += `##PAGE= N=${key === 'r' ? 1 : 2}\\n`;\n        header += `##DATA TABLE= (X++(${key === 'r' ? 'R..R' : 'I..I'})), XYDATA\\n`;\n        header += vectorEncoder(rescaleAndEnsureInteger(variable.data, factor[key]), first[0] > last[0] ? varDim[0] : 0, first[0] > last[0] ? -1 : 1, xyEncoding);\n        header += '\\n';\n    }\n    header += `##END NTUPLES= ${dataType}\\n`;\n    header += '##END=';\n    return header;\n}\nfunction addRealData(header, options) {\n    const { xData, yData, info, xyEncoding } = options;\n    header += addInfoData(info, { prefix: '##' });\n    return `${header}${vectorEncoder(rescaleAndEnsureInteger(yData, info.YFACTOR), xData.length - 1, -1, xyEncoding)}\n##END=`;\n}\nfunction constructMeta(xData, isFid, nmrSpectralWidth, baseFrequency, originFrequency, digitalFilter, decim, dspfvs, currentMeta, variables) {\n    const newMeta = {\n        OFFSET: xData[0] / originFrequency,\n    };\n    maybeAdd(newMeta, 'SW', nmrSpectralWidth);\n    maybeAdd(newMeta, 'BF1', baseFrequency);\n    if (isFid) {\n        maybeAdd(newMeta, 'GRPDLY', digitalFilter);\n        maybeAdd(newMeta, 'DECIM', decim);\n        maybeAdd(newMeta, 'REVERSE', 'no');\n        maybeAdd(newMeta, 'DSPFVS', dspfvs);\n    }\n    maybeAdd(newMeta, 'SYMBOL', variables.i ? '' : currentMeta.SYMBOL);\n    return newMeta;\n}\nfunction constructInfo(isFid, xData, dataClass, solvent, nmrSpectralWidth, frequencyOffset, baseFrequency, title, originFrequency, nucleus, nmrDataType, nmrOwner) {\n    let shiftReference;\n    if (frequencyOffset && baseFrequency) {\n        const offset = frequencyOffset / baseFrequency;\n        shiftReference = offset + 0.5 * (nmrSpectralWidth ?? 0);\n    }\n    else {\n        shiftReference = xData.at(-1);\n    }\n    const newInfo = {};\n    maybeAdd(newInfo, '.SHIFT REFERENCE', `INTERNAL, ${String(solvent)}, ${isFid ? xData.length : 1}, ${shiftReference}`);\n    maybeAdd(newInfo, 'TITLE', title);\n    maybeAdd(newInfo, '.OBSERVE FREQUENCY', originFrequency);\n    maybeAdd(newInfo, '.OBSERVE NUCLEUS', getOneIfArray(nucleus));\n    maybeAdd(newInfo, 'DATATYPE', nmrDataType);\n    maybeAdd(newInfo, 'DATACLASS', dataClass);\n    maybeAdd(newInfo, '.SOLVENT', solvent);\n    maybeAdd(newInfo, 'OWNER', nmrOwner);\n    return newInfo;\n}\nfunction applyScaling(variables, scaleFactor, newMeta) {\n    const scale = 1 / (scaleFactor ?? 1);\n    if (scale === 1) {\n        return;\n    }\n    maybeAdd(newMeta, 'NC_proc', -Math.log2(scale));\n    xMultiply(variables.r?.data || [], scale, {\n        output: variables.r?.data,\n    });\n    if (variables.i) {\n        xMultiply(variables.i?.data || [], scale, {\n            output: variables.i?.data,\n        });\n    }\n}\nfunction constructHeader(info, meta) {\n    const { TITLE = '', OWNER = '', ORIGIN = '', DATATYPE = '', DATACLASS, ...resultInfo } = info;\n    let header = `##TITLE=${TITLE}\n##JCAMP-DX=6.00\n##DATA TYPE= ${DATATYPE}\n##DATA CLASS= ${DATACLASS}\n##ORIGIN=${ORIGIN}\n##OWNER=${OWNER}\\n`;\n    header += addInfoData(resultInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    return header;\n}\nfunction maybeAdd(object, name, value) {\n    if (value === undefined)\n        return;\n    object[name] = getOneIfArray(value);\n}\n//# sourceMappingURL=from1DNMRVariables.js.map","import { matrixMinMaxZ } from 'ml-spectra-processing/matrix';\nimport { getFactorNumber } from \"./getFactorNumber.js\";\nexport function getBestFactorMatrix(matrix, options = {}) {\n    const { maxValue, factor, minMax } = options;\n    if (factor !== undefined) {\n        return factor;\n    }\n    // is there non integer number ?\n    let isOnlyInteger = true;\n    for (const row of matrix) {\n        for (const y of row) {\n            if (Math.round(y) !== y) {\n                isOnlyInteger = false;\n                break;\n            }\n        }\n    }\n    if (isOnlyInteger) {\n        return 1;\n    }\n    // we need to rescale the values\n    // need to find the max and min values\n    const extremeValues = minMax || matrixMinMaxZ(matrix);\n    return getFactorNumber(extremeValues, maxValue);\n}\n//# sourceMappingURL=getBestFactorMatrix.js.map","import { isAnyArray } from 'is-any-array';\nimport { addInfoData } from \"./utils/addInfoData.js\";\nimport { checkMatrix } from \"./utils/checkMatrix.js\";\nimport { checkNumberOrArray } from \"./utils/checkNumberOrArray.js\";\nimport { getBestFactor } from \"./utils/getBestFactor.js\";\nimport { getBestFactorMatrix } from \"./utils/getBestFactorMatrix.js\";\nimport { getExtremeValues } from \"./utils/getExtremeValues.js\";\nimport { rescaleAndEnsureInteger } from \"./utils/rescaleAndEnsureInteger.js\";\nimport { vectorEncoder } from \"./utils/vectorEncoder.js\";\n/**\n * Create a jcamp of 2D NMR data by variables. Currently only the convertion of processed data\n * is supported. The variables x and y are the direct (F2 in Bruker) and indirect (F1 in bruker),\n * data should be in ppm scale, the z variable is the intensity (dependent)\n * @param variables\n * @param options\n */\nexport function from2DNMRVariables(variables, options) {\n    const { nmrInfo, info = {}, meta = {}, xyEncoding = 'DIFDUP' } = options;\n    const factor = 'factor' in options\n        ? { ...options.factor }\n        : {};\n    const { title = '', owner = '', origin = '', dataType = 'NMR SPECTRUM', ...otherInfo } = nmrInfo;\n    const symbol = [];\n    const variableName = [];\n    const variableType = [];\n    const variableDim = [];\n    const units = [];\n    const first = [];\n    const last = [];\n    const min = [];\n    const max = [];\n    const factors = [];\n    const keys = ['y', 'x', 'z'];\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const variable = variables[key];\n        if (!variable)\n            throw new Error('variables x, y and z are mandatory');\n        const name = variable?.label.replace(/ *\\[.*/, '');\n        const unit = variable?.label.replace(/.*\\[(?<units>.*)\\].*/, '$<units>');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        if (!Object.hasOwn(factor, key)) {\n            factor[key] = calculateFactor(variable.data, minMax);\n        }\n        symbol.push(variable.symbol || key);\n        variableName.push(name || key);\n        variableDim.push(variable.data.length);\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        factors.push(factor[key]);\n        if (variable.isDependent !== undefined) {\n            variableType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n        }\n        else {\n            variableType.push(variable.isDependent !== undefined\n                ? !variable.isDependent\n                : i === 0\n                    ? 'INDEPENDENT'\n                    : 'DEPENDENT');\n        }\n        units.push(variable.units || unit || '');\n    }\n    let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##DATA CLASS= NTUPLES\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n    header += addInfoData(info, { prefix: '##' });\n    header += addInfoData({ ...otherInfo, ...meta });\n    let xData = variables.x.data;\n    let yData = variables.y.data;\n    checkNumberOrArray(xData);\n    checkNumberOrArray(yData);\n    checkMandatoryParameters(meta);\n    const zData = variables.z?.data || [];\n    checkMatrix(zData);\n    const { direct, indirect, dependent } = getDimensionIndices(symbol);\n    const nuc1 = String(meta.NUC1);\n    const nuc2 = String(meta.NUC2);\n    const nucleus = new Array(3);\n    nucleus[direct] = nuc1;\n    nucleus[indirect] = nuc2;\n    const sfo1 = Number(meta.SFO1);\n    const sfo2 = Number(meta.SFO2);\n    const optionsScaleAndJoin = {\n        indices: { direct, indirect },\n        sfo1,\n        sfo2,\n    };\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${variableName.join(',')}\n##SYMBOL=    ${symbol.join(',')}\n##VAR_TYPE=  ${variableType.join(',')}\n##VAR_DIM=   ${variableDim.join(',')}\n##.NUCLEUS=  ${nucleus.join(',')}\n##UNITS=     ${units.join(',')}\n##FACTOR=    ${factors.join(',')}\n##FIRST=     ${scaleAndJoin(first, optionsScaleAndJoin)}\n##LAST=      ${scaleAndJoin(last, optionsScaleAndJoin)}\n##MIN=       ${scaleAndJoin(min, optionsScaleAndJoin)}\n##MAX=       ${scaleAndJoin(max, optionsScaleAndJoin)}\\n`;\n    header += `##VAR_FORM= AFFN, AFFN, ASDF\\n`;\n    header += '##NUM DIM= 2\\n';\n    if (keys[direct] !== 'x') {\n        [yData, xData] = [xData, yData];\n    }\n    const directSymbol = symbol[direct].toUpperCase();\n    const indirectSymbol = symbol[indirect].toUpperCase();\n    const firstY = yData[0] * sfo2;\n    const lastY = yData.at(-1) * sfo2;\n    const firstX = xData[0];\n    const lastX = xData.at(-1);\n    const deltaX = (lastX - firstX) / (xData.length - 1);\n    const deltaY = (lastY - firstY) / (yData.length - 1);\n    const firstData = new Float64Array(3);\n    firstData[direct] = firstX * sfo1;\n    firstData[indirect] = firstY;\n    const yFactor = factor.y || 1;\n    const xFactor = factor.x || 1;\n    const zFactor = factor.z || 1;\n    for (let index = 0; index < zData.length; index++) {\n        const row = zData[index];\n        firstData[dependent] = row[0];\n        header += `##PAGE= ${indirectSymbol}=${(firstY + deltaY * index) / yFactor}\\n`;\n        header += `##FIRST=  ${firstData.join(',')}\\n`;\n        header += `##DATA TABLE= (${directSymbol}++(Y..Y)), PROFILE\\n`;\n        header += vectorEncoder(rescaleAndEnsureInteger(row, zFactor), firstX / xFactor, deltaX / xFactor, xyEncoding);\n        header += '\\n';\n    }\n    return header;\n}\nfunction scaleAndJoin(variable, options) {\n    const { sfo1, sfo2 } = options;\n    const { direct, indirect } = options.indices;\n    const copy = variable.slice();\n    copy[direct] = copy[direct] * sfo1;\n    copy[indirect] = copy[indirect] * sfo2;\n    return copy.join(',');\n}\nfunction getDimensionIndices(entry) {\n    const symbol = entry.map((item) => item.toUpperCase());\n    const direct = symbol.includes('F2')\n        ? symbol.indexOf('F2')\n        : symbol.indexOf('T2');\n    const indirect = symbol.includes('F1')\n        ? symbol.indexOf('F1')\n        : symbol.indexOf('T1');\n    if (direct === -1 || indirect === -1) {\n        throw new Error('F2/T2 and F1/T1 symbol should be defined for nD NMR SPECTRUM');\n    }\n    return { direct, indirect, dependent: 3 - direct - indirect };\n}\nfunction checkMandatoryParameters(meta) {\n    const list = ['SFO1', 'SFO2', 'NUC1', 'NUC2'];\n    for (const key of list) {\n        const value = meta[key];\n        if (!value) {\n            throw new Error(`${key} in options.meta should be defined`);\n        }\n    }\n}\nfunction calculateFactor(data, minMax) {\n    return isAnyArray(data[0])\n        ? getBestFactorMatrix(data, { minMax })\n        : getBestFactor(data, { minMax });\n}\n//# sourceMappingURL=from2DNMRVariables.js.map"],"names":["addInfoData","data","options","keys","Object","prefix","header","key","JSON","stringify","toString","prototype","isAnyArray","value","tag","call","endsWith","includes","getOutputArray","output","length","undefined","TypeError","Float64Array","xCheck","input","minLength","Error","xDivide","array1","array2","isConstant","constant","RangeError","array3","i","Uint8Array","Uint16Array","buffer","xMinMaxValues","array","min","max","xMultiply","matrixCheck","firstLength","matrixMinMaxZ","matrix","nbRows","nbColumns","column","row","checkMatrix","checkNumberOrArray","getExtremeValues","firstRow","firstLast","first","last","at","minMax","creatorNtuples","variables","meta","info","title","owner","origin","dataType","resultInfo","symbol","variableName","variableType","variableDim","units","variable","name","label","replace","unit","push","isDependent","join","x","point","getFactorNumber","maxValue","factor","Math","getBestFactor","isOnlyInteger","y","round","extremeValues","getNumber","number","rounded","abs","Number","EPSILON","peakTableCreator","xFactor","yFactor","firstX","Infinity","lastX","firstY","lastY","lines","rescaleAndEnsureInteger","map","newLine","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","maxLinelength","vectorEncoder","intervalX","xyEncoding","fixEncoding","squeezedEncoding","differenceEncoding","differenceDuplicateEncoding","commaSeparatedValuesEncoding","packedEncoding","separator","outputData","j","dataLength","String","ceil","squeezedDigit","mult","index","charCount","encodedData","encodedNumber","temporary","diffData","Array","numberDiff","differenceDigit","duplicateDigit","number_","sqzDigits","startsWith","pseudoDigit","charAt","slice","diffDigits","dupDigits","digit","xyDataCreator","nbPoints","deltaX","line","fromJSON","xUnits","yUnits","fromVariables","forceNtuples","jcampOptions","toLowerCase","xLabel","yLabel","xData","yData","getOneIfArray","ntuplesKeys","isNTuplesData","isRealData","from1DNMRVariables","infoInput","currentMeta","nmrInfo","isFid","frequencyOffset","decim","dspfvs","nucleus","originFrequency","originFreq","baseFrequency","baseFreq","spectralWidth","nmrSpectralWidth","solvent","nmrOwner","nmrDataType","dataClass","scaleFactor","digitalFilter","currentInfo","xVariable","newMeta","constructMeta","applyScaling","newInfo","constructInfo","constructHeader","secondX","firstPoint","lastPoint","variableForm","factorArray","currentFactor","addNtuplesHeader","varName","varDim","varForm","varType","addRealData","r","XUNITS","YUNITS","XFACTOR","YFACTOR","DELTAX","FIRSTX","FIRSTY","LASTX","MAXY","MINY","NPOINTS","XYDATA","inputs","OFFSET","maybeAdd","SYMBOL","shiftReference","offset","scale","log2","TITLE","OWNER","ORIGIN","DATATYPE","DATACLASS","object","getBestFactorMatrix","from2DNMRVariables","otherInfo","factors","hasOwn","calculateFactor","checkMandatoryParameters","zData","z","direct","indirect","dependent","getDimensionIndices","nuc1","NUC1","nuc2","NUC2","sfo1","SFO1","sfo2","SFO2","optionsScaleAndJoin","indices","scaleAndJoin","directSymbol","toUpperCase","indirectSymbol","deltaY","firstData","zFactor","copy","entry","item","indexOf","list"],"mappings":";;;;;;;;;;;;;IAAO,MAAMA,WAAW,GAAGA,CACzBC,IAAyB,EACzBC,OAAA,GAGI,EAAE,KACJ;MACF,MAAM;IAAEC,IAAAA,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACF,IAAI,CAAC;IAAEI,IAAAA,MAAM,GAAG;IAAK,GAAE,GAAGH,OAAO;MAC5D,IAAII,MAAM,GAAG,EAAE;IACf,EAAA,KAAK,MAAMC,GAAG,IAAIJ,IAAI,EAAE;IACtBG,IAAAA,MAAM,IACJ,OAAOL,IAAI,CAACM,GAAG,CAAC,KAAK,QAAQ,GACzB,GAAGF,MAAM,CAAA,EAAGE,GAAG,CAAA,CAAA,EAAIC,IAAI,CAACC,SAAS,CAACR,IAAI,CAACM,GAAG,CAAC,CAAC,IAAI,GAChD,CAAA,EAAGF,MAAM,CAAA,EAAGE,GAAG,CAAA,CAAA,EAAIN,IAAI,CAACM,GAAG,CAAC,CAAA,EAAA,CAAI;IACxC,EAAA;IACA,EAAA,OAAOD,MAAM;IACf,CAAC;;IChBD;IACA,MAAMI,QAAQ,GAAGN,MAAM,CAACO,SAAS,CAACD,QAAQ;IAc1C;;;;;IAKM,SAAUE,UAAUA,CAACC,KAAc,EAAA;IACvC,EAAA,MAAMC,GAAG,GAAGJ,QAAQ,CAACK,IAAI,CAACF,KAAK,CAAC;IAChC,EAAA,OAAOC,GAAG,CAACE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAACF,GAAG,CAACG,QAAQ,CAAC,KAAK,CAAC;IACvD;;ICLA;;;;;;IAMM,SAAUC,cAAcA,CAC5BC,MAA+B,EAC/BC,MAAc,EAAA;MAEd,IAAID,MAAM,KAAKE,SAAS,EAAE;IACxB,IAAA,IAAI,CAACT,UAAU,CAACO,MAAM,CAAC,EAAE;IACvB,MAAA,MAAM,IAAIG,SAAS,CAAC,6CAA6C,CAAC;IACpE,IAAA;IACA,IAAA,IAAIH,MAAM,CAACC,MAAM,KAAKA,MAAM,EAAE;IAC5B,MAAA,MAAM,IAAIE,SAAS,CAAC,mDAAmD,CAAC;IAC1E,IAAA;IACA,IAAA,OAAOH,MAAM;IACf,EAAA,CAAC,MAAM;IACL,IAAA,OAAO,IAAII,YAAY,CAACH,MAAM,CAAC;IACjC,EAAA;IACF;;IC3BA;;;;;;IAMM,SAAUI,MAAMA,CACpBC,KAAc,EACdvB,OAAA,GAAyB,EAAE,EAAA;MAE3B,MAAM;IAAEwB,IAAAA,SAAS,GAAG;IAAC,GAAE,GAAGxB,OAAO;IACjC,EAAA,IAAI,CAACU,UAAU,CAACa,KAAK,CAAC,EAAE;IACtB,IAAA,MAAM,IAAIH,SAAS,CAAC,wBAAwB,CAAC;IAC/C,EAAA;IACA,EAAA,IAAIG,KAAK,CAACL,MAAM,KAAK,CAAC,EAAE;IACtB,IAAA,MAAM,IAAIE,SAAS,CAAC,yBAAyB,CAAC;IAChD,EAAA;IACA,EAAA,IAAI,OAAOG,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;IAChC,IAAA,MAAM,IAAIH,SAAS,CAAC,4BAA4B,CAAC;IACnD,EAAA;IACA,EAAA,IAAIG,KAAK,CAACL,MAAM,GAAGM,SAAS,EAAE;IAC5B,IAAA,MAAM,IAAIC,KAAK,CAAC,CAAA,qCAAA,EAAwCD,SAAS,EAAE,CAAC;IACtE,EAAA;IACF;;ICzBA;;;;;;IAMM,SAAUE,OAAOA,CACrBC,MAAmB,EACnBC,MAA4B,EAC5B5B,OAAA,GAAqC,EAAE,EAAA;MAEvC,IAAI6B,UAAU,GAAG,KAAK;MACtB,IAAIC,QAAQ,GAAG,CAAC;IAChB,EAAA,IAAIpB,UAAU,CAACkB,MAAM,CAAC,EAAE;IACtB,IAAA,IAAID,MAAM,CAACT,MAAM,KAAKU,MAAM,CAACV,MAAM,EAAE;IACnC,MAAA,MAAM,IAAIa,UAAU,CAAC,6CAA6C,CAAC;IACrE,IAAA;IACF,EAAA,CAAC,MAAM;IACLF,IAAAA,UAAU,GAAG,IAAI;IACjBC,IAAAA,QAAQ,GAAGF,MAAM;IACnB,EAAA;MAEA,MAAMI,MAAM,GAAGhB,cAAc,CAAChB,OAAO,CAACiB,MAAM,EAAEU,MAAM,CAACT,MAAM,CAAC;IAC5D,EAAA,IAAIW,UAAU,EAAE;IACd,IAAA,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACT,MAAM,EAAEe,CAAC,EAAE,EAAE;UACtCD,MAAM,CAACC,CAAC,CAAC,GAAGN,MAAM,CAACM,CAAC,CAAC,GAAGH,QAAQ;IAClC,IAAA;IACF,EAAA,CAAC,MAAM;IACL,IAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACT,MAAM,EAAEe,CAAC,EAAE,EAAE;IACtCD,MAAAA,MAAM,CAACC,CAAC,CAAC,GAAGN,MAAM,CAACM,CAAC,CAAC,GAAIL,MAAmB,CAACK,CAAC,CAAC;IACjD,IAAA;IACF,EAAA;IAEA,EAAA,OAAOD,MAAM;IACf;;IC5CsB,IAAIE,UAAU,CAAC,IAAIC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;;ICIzE;;;;;IAKM,SAAUC,aAAaA,CAACC,KAAkB,EAAA;MAI9ChB,MAAM,CAACgB,KAAK,CAAC;IAEb,EAAA,IAAIC,GAAG,GAAGD,KAAK,CAAC,CAAC,CAAC;IAClB,EAAA,IAAIE,GAAG,GAAGF,KAAK,CAAC,CAAC,CAAC;IAElB,EAAA,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGK,KAAK,CAACpB,MAAM,EAAEe,CAAC,EAAE,EAAE;IACrC,IAAA,MAAMtB,KAAK,GAAG2B,KAAK,CAACL,CAAC,CAAC;IACtB,IAAA,IAAItB,KAAK,GAAG4B,GAAG,EAAEA,GAAG,GAAG5B,KAAK,CAAC,KACxB,IAAIA,KAAK,GAAG6B,GAAG,EAAEA,GAAG,GAAG7B,KAAK;IACnC,EAAA;MAEA,OAAO;QAAE4B,GAAG;IAAEC,IAAAA;OAAK;IACrB;;ICbA;;;;;;IAMM,SAAUC,SAASA,CACvBd,MAAmB,EACnBC,MAA4B,EAC5B5B,OAAA,GAAuC,EAAE,EAAA;MAEzC,IAAI6B,UAAU,GAAG,KAAK;MACtB,IAAIC,QAAQ,GAAG,CAAC;IAChB,EAAA,IAAIpB,UAAU,CAACkB,MAAM,CAAC,EAAE;IACtB,IAAA,IAAID,MAAM,CAACT,MAAM,KAAKU,MAAM,CAACV,MAAM,EAAE;IACnC,MAAA,MAAM,IAAIO,KAAK,CAAC,6CAA6C,CAAC;IAChE,IAAA;IACF,EAAA,CAAC,MAAM;IACLI,IAAAA,UAAU,GAAG,IAAI;IACjBC,IAAAA,QAAQ,GAAGF,MAAM;IACnB,EAAA;MAEA,MAAMI,MAAM,GAAGhB,cAAc,CAAChB,OAAO,CAACiB,MAAM,EAAEU,MAAM,CAACT,MAAM,CAAC;IAC5D,EAAA,IAAIW,UAAU,EAAE;IACd,IAAA,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACT,MAAM,EAAEe,CAAC,EAAE,EAAE;UACtCD,MAAM,CAACC,CAAC,CAAC,GAAGN,MAAM,CAACM,CAAC,CAAC,GAAGH,QAAQ;IAClC,IAAA;IACF,EAAA,CAAC,MAAM;IACL,IAAA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,MAAM,CAACT,MAAM,EAAEe,CAAC,EAAE,EAAE;IACtCD,MAAAA,MAAM,CAACC,CAAC,CAAC,GAAGN,MAAM,CAACM,CAAC,CAAC,GAAIL,MAAa,CAACK,CAAC,CAAC;IAC3C,IAAA;IACF,EAAA;IAEA,EAAA,OAAOD,MAAM;IACf;;IC5CM,SAAUU,WAAWA,CAAC3C,IAAkB,EAAA;IAC5C,EAAA,IAAIA,IAAI,CAACmB,MAAM,KAAK,CAAC,IAAInB,IAAI,CAAC,CAAC,CAAC,CAACmB,MAAM,KAAK,CAAC,EAAE;IAC7C,IAAA,MAAM,IAAIa,UAAU,CAAC,0BAA0B,CAAC;IAClD,EAAA;IAEA,EAAA,MAAMY,WAAW,GAAG5C,IAAI,CAAC,CAAC,CAAC,CAACmB,MAAM;IAClC,EAAA,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,IAAI,CAACmB,MAAM,EAAEe,CAAC,EAAE,EAAE;QACpC,IAAIlC,IAAI,CAACkC,CAAC,CAAC,CAACf,MAAM,KAAKyB,WAAW,EAAE;IAClC,MAAA,MAAM,IAAIZ,UAAU,CAAC,mCAAmC,CAAC;IAC3D,IAAA;IACF,EAAA;IACF;;ICTA;;;;IAIM,SAAUa,aAAaA,CAACC,MAAoB,EAAA;MAIhDH,WAAW,CAACG,MAAM,CAAC;IACnB,EAAA,MAAMC,MAAM,GAAGD,MAAM,CAAC3B,MAAM;IAC5B,EAAA,MAAM6B,SAAS,GAAGF,MAAM,CAAC,CAAC,CAAC,CAAC3B,MAAM;MAElC,IAAIqB,GAAG,GAAGM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAIL,GAAG,GAAGK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEtB,KAAK,IAAIG,MAAM,GAAG,CAAC,EAAEA,MAAM,GAAGD,SAAS,EAAEC,MAAM,EAAE,EAAE;QACjD,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGH,MAAM,EAAEG,GAAG,EAAE,EAAE;IACrC,MAAA,IAAIJ,MAAM,CAACI,GAAG,CAAC,CAACD,MAAM,CAAC,GAAGT,GAAG,EAAEA,GAAG,GAAGM,MAAM,CAACI,GAAG,CAAC,CAACD,MAAM,CAAC;IACxD,MAAA,IAAIH,MAAM,CAACI,GAAG,CAAC,CAACD,MAAM,CAAC,GAAGR,GAAG,EAAEA,GAAG,GAAGK,MAAM,CAACI,GAAG,CAAC,CAACD,MAAM,CAAC;IAC1D,IAAA;IACF,EAAA;MAEA,OAAO;QAAET,GAAG;IAAEC,IAAAA;OAAK;IACrB;;ICxBM,SAAUU,WAAWA,CACzBnD,IAAiC,EAAA;IAEjC,EAAA,IAAI,CAACW,UAAU,CAACX,IAAI,CAAC,IAAI,CAACW,UAAU,CAACX,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAC7C,IAAA,MAAM,IAAI0B,KAAK,CAAC,CAAA,0BAAA,CAA4B,CAAC;IAC/C,EAAA;IACF;;ICNM,SAAU0B,kBAAkBA,CAChCpD,IAAiC,EAAA;IAEjC,EAAA,IAAI,CAACW,UAAU,CAACX,IAAI,CAAC,IAAIW,UAAU,CAACX,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;IAC5C,IAAA,MAAM,IAAI0B,KAAK,CAAC,CAAA,0CAAA,CAA4C,CAAC;IAC/D,EAAA;IACF;;ICDM,SAAU2B,gBAAgBA,CAACrD,IAAgC,EAAA;IAC/D,EAAA,IAAIW,UAAU,CAACX,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACvBmD,WAAW,CAACnD,IAAI,CAAC;IACjB,IAAA,MAAMsD,QAAQ,GAAGtD,IAAI,CAAC,CAAC,CAAC;QACxB,OAAO;IACLuD,MAAAA,SAAS,EAAE;IACTC,QAAAA,KAAK,EAAEF,QAAQ,CAAC,CAAC,CAAW;IAC5BG,QAAAA,IAAI,EAAGzD,IAAI,CAAC0D,EAAE,CAAC,EAAE,CAAiB,CAACJ,QAAQ,CAACnC,MAAM,GAAG,CAAC;IACvD,OAAA;UACDwC,MAAM,EAAEd,aAAa,CAAC7C,IAAI;IAC3B,KAAA;IACH,EAAA;MAEAoD,kBAAkB,CAACpD,IAAI,CAAC;MAExB,OAAO;IACLuD,IAAAA,SAAS,EAAE;IACTC,MAAAA,KAAK,EAAExD,IAAI,CAAC,CAAC,CAAW;IACxByD,MAAAA,IAAI,EAAEzD,IAAI,CAAC0D,EAAE,CAAC,EAAE;IACjB,KAAA;QACDC,MAAM,EAAErB,aAAa,CAACtC,IAAI;IAC3B,GAAA;IACH;;ICxBA;;;;;;IAMc,SAAU4D,cAAcA,CACpCC,SAAiC,EACjC5D,OAAqB,EAAA;MAErB,MAAM;IAAE6D,IAAAA,IAAI,GAAG,EAAE;IAAEC,IAAAA,IAAI,GAAG;IAAE,GAAE,GAAG9D,OAAO;MAExC,MAAM;IACJ+D,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,MAAM,GAAG,EAAE;IACXC,IAAAA,QAAQ,GAAG,EAAE;QACb,GAAGC;IAAU,GACd,GAAGL,IAAI;MAER,MAAMM,MAAM,GAAG,EAAE;MACjB,MAAMC,YAAY,GAAG,EAAE;MACvB,MAAMC,YAAY,GAAG,EAAE;MACvB,MAAMC,WAAW,GAAG,EAAE;MACtB,MAAMC,KAAK,GAAG,EAAE;MAChB,MAAMjB,KAAK,GAAG,EAAE;MAChB,MAAMC,IAAI,GAAG,EAAE;MACf,MAAMjB,GAAG,GAAG,EAAE;MACd,MAAMC,GAAG,GAAG,EAAE;IAEd,EAAA,MAAMvC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAAC2D,SAAS,CAAmB;IAErD,EAAA,KAAK,IAAI3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhC,IAAI,CAACiB,MAAM,EAAEe,CAAC,EAAE,EAAE;IACpC,IAAA,MAAM5B,GAAG,GAAGJ,IAAI,CAACgC,CAAC,CAAiB;IACnC,IAAA,MAAMwC,QAAQ,GAAGb,SAAS,CAACvD,GAAG,CAAC;QAC/B,IAAI,CAACoE,QAAQ,EAAE;QAEf,MAAMC,IAAI,GAAGD,QAAQ,EAAEE,KAAK,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,MAAMC,IAAI,GAAGJ,QAAQ,EAAEE,KAAK,CAACC,OAAO,CAAC,sBAAsB,EAAE,UAAU,CAAC;QAExE,MAAM;UAAEtB,SAAS;IAAEI,MAAAA;IAAM,KAAE,GAAGN,gBAAgB,CAACqB,QAAQ,CAAC1E,IAAI,CAAC;QAE7DqE,MAAM,CAACU,IAAI,CAACL,QAAQ,CAACL,MAAM,IAAI/D,GAAG,CAAC;IACnCgE,IAAAA,YAAY,CAACS,IAAI,CAACJ,IAAI,IAAIrE,GAAG,CAAC;QAC9BkE,WAAW,CAACO,IAAI,CAACL,QAAQ,CAAC1E,IAAI,CAACmB,MAAM,CAAC;IACtCqC,IAAAA,KAAK,CAACuB,IAAI,CAACxB,SAAS,CAACC,KAAK,CAAC;IAC3BC,IAAAA,IAAI,CAACsB,IAAI,CAACxB,SAAS,CAACE,IAAI,CAAC;IACzBhB,IAAAA,GAAG,CAACsC,IAAI,CAACpB,MAAM,CAAClB,GAAG,CAAC;IACpBD,IAAAA,GAAG,CAACuC,IAAI,CAACpB,MAAM,CAACnB,GAAG,CAAC;IAEpB,IAAA,IAAIkC,QAAQ,CAACM,WAAW,KAAK5D,SAAS,EAAE;UACtCmD,YAAY,CAACQ,IAAI,CAACL,QAAQ,CAACM,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;IACvE,IAAA,CAAC,MAAM;UACLT,YAAY,CAACQ,IAAI,CACfL,QAAQ,CAACM,WAAW,KAAK5D,SAAS,GAC9B,CAACsD,QAAQ,CAACM,WAAW,GACrB9C,CAAC,KAAK,CAAC,GACL,aAAa,GACb,WAAW,CAClB;IACH,IAAA;QAEAuC,KAAK,CAACM,IAAI,CAACL,QAAQ,CAACD,KAAK,IAAIK,IAAI,IAAI,EAAE,CAAC;IAC1C,EAAA;MAEA,IAAIzE,MAAM,GAAG,CAAA,QAAA,EAAW2D,KAAK;;cAEjBG,QAAQ;;WAEXD,MAAM;AACPD,QAAAA,EAAAA,KAAK,CAAA,EAAA,CAAI;IAEjB5D,EAAAA,MAAM,IAAIN,WAAW,CAACqE,UAAU,EAAE;IAAEhE,IAAAA,MAAM,EAAE;IAAI,GAAE,CAAC;IACnDC,EAAAA,MAAM,IAAIN,WAAW,CAAC+D,IAAI,CAAC;MAE3BzD,MAAM,IAAI,cAAc8D,QAAQ;AACnBG,aAAAA,EAAAA,YAAY,CAACW,IAAI,CAAC,GAAG,CAAC;AACtBZ,aAAAA,EAAAA,MAAM,CAACY,IAAI,CAAC,GAAG,CAAC;AAChBV,aAAAA,EAAAA,YAAY,CAACU,IAAI,CAAC,GAAG,CAAC;AACtBT,aAAAA,EAAAA,WAAW,CAACS,IAAI,CAAC,GAAG,CAAC;AACrBR,aAAAA,EAAAA,KAAK,CAACQ,IAAI,CAAC,GAAG,CAAC;AACfzB,aAAAA,EAAAA,KAAK,CAACyB,IAAI,CAAC,GAAG,CAAC;AACfxB,aAAAA,EAAAA,IAAI,CAACwB,IAAI,CAAC,GAAG,CAAC;AACdzC,aAAAA,EAAAA,GAAG,CAACyC,IAAI,CAAC,GAAG,CAAC;AACbxC,aAAAA,EAAAA,GAAG,CAACwC,IAAI,CAAC,GAAG,CAAC;AACd,aAAA,CAAA;IAEZ5E,EAAAA,MAAM,IAAI,CAAA,eAAA,EAAkBgE,MAAM,CAACY,IAAI,CAAC,EAAE,CAAC,CAAA,EAAA,EAAKZ,MAAM,CAACY,IAAI,CAAC,EAAE,CAAC,CAAA,UAAA,CAAY;IAC3E,EAAA,KAAK,IAAI/C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,SAAS,CAACqB,CAAC,CAAClF,IAAI,CAACmB,MAAM,EAAEe,CAAC,EAAE,EAAE;QAChD,MAAMiD,KAAK,GAAG,EAAE;IAChB,IAAA,KAAK,MAAM7E,GAAG,IAAIJ,IAAI,EAAE;IACtB,MAAA,MAAMwE,QAAQ,GAAGb,SAAS,CAACvD,GAAG,CAAC;UAC/B,IAAI,CAACoE,QAAQ,EAAE;UACfS,KAAK,CAACJ,IAAI,CAACL,QAAQ,CAAC1E,IAAI,CAACkC,CAAC,CAAC,CAAC;IAC9B,IAAA;QACA7B,MAAM,IAAI,GAAG8E,KAAK,CAACF,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;IACnC,EAAA;MAEA5E,MAAM,IAAI,CAAA,eAAA,EAAkB8D,QAAQ,CAAA,EAAA,CAAI;IACxC9D,EAAAA,MAAM,IAAI,gBAAgB;IAC1B,EAAA,OAAOA,MAAM;IACf;;ICzGM,SAAU+E,eAAeA,CAACzB,MAAc,EAAE0B,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAA;IACpE,EAAA,IAAIC,MAAc;IAClB,EAAA,IAAI3B,MAAM,CAACnB,GAAG,GAAG,CAAC,EAAE;IAClB,IAAA,IAAImB,MAAM,CAAClB,GAAG,GAAG,CAAC,EAAE;IAClB6C,MAAAA,MAAM,GAAGC,IAAI,CAAC9C,GAAG,CAAC,CAACkB,MAAM,CAACnB,GAAG,EAAEmB,MAAM,CAAClB,GAAG,CAAC,GAAG4C,QAAQ;IACvD,IAAA,CAAC,MAAM;IACLC,MAAAA,MAAM,GAAG,CAAC3B,MAAM,CAACnB,GAAG,GAAG6C,QAAQ;IACjC,IAAA;IACF,EAAA,CAAC,MAAM;IACLC,IAAAA,MAAM,GAAG3B,MAAM,CAAClB,GAAG,GAAG4C,QAAQ;IAChC,EAAA;IACA,EAAA,OAAOC,MAAM;IACf;;ICRM,SAAUE,aAAaA,CAC3BjD,KAAkB,EAClBtC,OAAA,GAOI,EAAE,EAAA;MAEN,MAAM;QAAEoF,QAAQ;QAAEC,MAAM;IAAE3B,IAAAA;IAAM,GAAE,GAAG1D,OAAO;MAE5C,IAAIqF,MAAM,KAAKlE,SAAS,EAAE;IACxB,IAAA,OAAOkE,MAAM;IACf,EAAA;IAEA;MACA,IAAIG,aAAa,GAAG,IAAI;IACxB,EAAA,KAAK,MAAMC,CAAC,IAAInD,KAAK,EAAE;QACrB,IAAIgD,IAAI,CAACI,KAAK,CAACD,CAAC,CAAC,KAAKA,CAAC,EAAE;IACvBD,MAAAA,aAAa,GAAG,KAAK;IACrB,MAAA;IACF,IAAA;IACF,EAAA;IACA,EAAA,IAAIA,aAAa,EAAE;IACjB,IAAA,OAAO,CAAC;IACV,EAAA;IACA;IACA;IACA,EAAA,MAAMG,aAAa,GAAGjC,MAAM,IAAIrB,aAAa,CAACC,KAAK,CAAC;IACpD,EAAA,OAAO6C,eAAe,CAACQ,aAAa,EAAEP,QAAQ,CAAC;IACjD;;ICtCA;;;;;;IAMM,SAAUQ,SAASA,CAACC,MAAc,EAAER,MAAc,EAAA;IACtD,EAAA,IAAIA,MAAM,KAAK,CAAC,EAAEQ,MAAM,IAAIR,MAAM;IAClC,EAAA,MAAMS,OAAO,GAAGR,IAAI,CAACI,KAAK,CAACG,MAAM,CAAC;IAClC,EAAA,IAAIC,OAAO,KAAKD,MAAM,IAAIP,IAAI,CAACS,GAAG,CAACD,OAAO,GAAGD,MAAM,CAAC,IAAIG,MAAM,CAACC,OAAO,EAAE;IACtE,IAAA,OAAOH,OAAO;IAChB,EAAA;IACA,EAAA,OAAOD,MAAM;IACf;;ICPM,SAAUK,gBAAgBA,CAACnG,IAAY,EAAEC,OAAA,GAAwB,EAAE,EAAA;MACvE,MAAM;IAAEmG,IAAAA,OAAO,GAAG,CAAC;IAAEC,IAAAA,OAAO,GAAG;IAAC,GAAE,GAAGpG,OAAO,CAAC8D,IAAI,IAAI,EAAE;MACvD,IAAIuC,MAAM,GAAGC,QAAQ;MACrB,IAAIC,KAAK,GAAG,CAACD,QAAQ;MACrB,IAAIE,MAAM,GAAGF,QAAQ;MACrB,IAAIG,KAAK,GAAG,CAACH,QAAQ;MAErB,MAAMI,KAAK,GAAG,EAAE;IAEhB,EAAA,KAAK,IAAIzE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,IAAI,CAACkF,CAAC,CAAC/D,MAAM,EAAEe,CAAC,EAAE,EAAE;IACtC,IAAA,MAAMgD,CAAC,GAAGlF,IAAI,CAACkF,CAAC,CAAChD,CAAC,CAAW;IAC7B,IAAA,MAAMwD,CAAC,GAAG1F,IAAI,CAAC0F,CAAC,CAACxD,CAAC,CAAW;QAC7B,IAAIoE,MAAM,GAAGpB,CAAC,EAAE;IACdoB,MAAAA,MAAM,GAAGpB,CAAC;IACZ,IAAA;QACA,IAAIsB,KAAK,GAAGtB,CAAC,EAAE;IACbsB,MAAAA,KAAK,GAAGtB,CAAC;IACX,IAAA;QACA,IAAIuB,MAAM,GAAGf,CAAC,EAAE;IACde,MAAAA,MAAM,GAAGf,CAAC;IACZ,IAAA;QACA,IAAIgB,KAAK,GAAGhB,CAAC,EAAE;IACbgB,MAAAA,KAAK,GAAGhB,CAAC;IACX,IAAA;IACF,EAAA;IACAiB,EAAAA,KAAK,CAAC5B,IAAI,CACR,CAAA,SAAA,EAAYuB,MAAM,CAAA,CAAE,EACpB,CAAA,QAAA,EAAWE,KAAK,CAAA,CAAE,EAClB,CAAA,SAAA,EAAYC,MAAM,CAAA,CAAE,EACpB,CAAA,QAAA,EAAWC,KAAK,CAAA,CAAE,EAClB,CAAA,UAAA,EAAaN,OAAO,CAAA,CAAE,EACtB,CAAA,UAAA,EAAaC,OAAO,CAAA,CAAE,EACtB,uBAAuB,CACxB;IAED,EAAA,KAAK,IAAInE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlC,IAAI,CAACkF,CAAC,CAAC/D,MAAM,EAAEe,CAAC,EAAE,EAAE;IACtCyE,IAAAA,KAAK,CAAC5B,IAAI,CACR,CAAA,EAAGc,SAAS,CAAC7F,IAAI,CAACkF,CAAC,CAAChD,CAAC,CAAW,EAAEkE,OAAO,CAAC,CAAA,CAAA,EAAIP,SAAS,CAAC7F,IAAI,CAAC0F,CAAC,CAACxD,CAAC,CAAW,EAAEmE,OAAO,CAAC,CAAA,CAAE,CACxF;IACH,EAAA;IACA,EAAA,OAAOM,KAAK;IACd;;IC5CM,SAAUC,uBAAuBA,CAAC5G,IAAiB,EAAEsF,MAAM,GAAG,CAAC,EAAA;IACnE,EAAA,IAAIA,MAAM,KAAK,CAAC,EAAE,OAAOtF,IAAI,CAAC6G,GAAG,CAAEjG,KAAK,IAAK2E,IAAI,CAACI,KAAK,CAAC/E,KAAK,CAAC,CAAC;IAC/D,EAAA,OAAOe,OAAO,CAAC3B,IAAI,EAAEsF,MAAM,CAAC,CAACuB,GAAG,CAAEjG,KAAK,IAAK2E,IAAI,CAACI,KAAK,CAAC/E,KAAK,CAAC,CAAC;IAChE;;ICJA;;;;;IAKA,MAAMkG,OAAO,GAAG,IAAI;IAEpB,MAAMC,YAAY,GAAe,CAC/B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClD,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CACnD;IAED,MAAMC,KAAK,GAAG,CAAC;IACf,MAAMC,KAAK,GAAG,CAAC;IACf,MAAMC,KAAK,GAAG,CAAC;IACf,MAAMC,KAAK,GAAG,CAAC;IACf,MAAMC,GAAG,GAAG,CAAC;IACb,MAAMC,aAAa,GAAG,GAAG;IAEzB;;;;;;;;;IASM,SAAUC,aAAaA,CAC3BtH,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EACjBC,UAAmB,EAAA;IAEnB,EAAA,QAAQA,UAAU;IAChB,IAAA,KAAK,KAAK;IACR,MAAA,OAAOC,WAAW,CAACzH,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IAC7C,IAAA,KAAK,KAAK;IACR,MAAA,OAAOG,gBAAgB,CAAC1H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IAClD,IAAA,KAAK,KAAK;IACR,MAAA,OAAOI,kBAAkB,CAAC3H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IACpD,IAAA,KAAK,QAAQ;IACX,MAAA,OAAOK,2BAA2B,CAAC5H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IAC7D,IAAA,KAAK,KAAK;IACR,MAAA,OAAOM,4BAA4B,CAAC7H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IAC9D,IAAA,KAAK,KAAK;IACR,MAAA,OAAOO,cAAc,CAAC9H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IAChD,IAAA,KAAKnG,SAAS;IACd,IAAA;IACE,MAAA,OAAOuG,kBAAkB,CAAC3H,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,CAAC;IACtD;IACF;IAEA;;;;;;;IAOM,SAAUM,4BAA4BA,CAC1C7H,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EAAA;MAEjB,OAAOE,WAAW,CAACzH,IAAI,EAAEsG,MAAM,EAAEiB,SAAS,EAAE,GAAG,CAAC;IAClD;IAEA;;;;;;;;IAQM,SAAUE,WAAWA,CACzBzH,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EACjBQ,SAAS,GAAG,GAAG,EAAA;MAEf,IAAIC,UAAU,GAAG,EAAE;MACnB,IAAIC,CAAC,GAAG,CAAC;IACT,EAAA,MAAMC,UAAU,GAAGlI,IAAI,CAACmB,MAAM;IAC9B,EAAA,OAAO8G,CAAC,GAAGC,UAAU,GAAG,CAAC,EAAE;IACzBF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UAC1B8F,UAAU,IAAI,GAAGD,SAAS,CAAA,EAAG/H,IAAI,CAACiI,CAAC,EAAE,CAAC,CAAA,CAAE;IAC1C,IAAA;IACAD,IAAAA,UAAU,IAAIlB,OAAO;IACvB,EAAA;MACA,IAAImB,CAAC,GAAGC,UAAU,EAAE;IAClB;IACAF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG+F,CAAC,EAAE/F,CAAC,GAAGgG,UAAU,EAAEhG,CAAC,EAAE,EAAE;UACnC8F,UAAU,IAAI,GAAGD,SAAS,CAAA,EAAG/H,IAAI,CAACkC,CAAC,CAAC,CAAA,CAAE;IACxC,IAAA;IACF,EAAA;IACA,EAAA,OAAO8F,UAAU;IACnB;IAEA;;;;;;;IAOM,SAAUF,cAAcA,CAC5B9H,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EAAA;MAEjB,IAAIS,UAAU,GAAG,EAAE;MACnB,IAAIC,CAAC,GAAG,CAAC;IACT,EAAA,MAAMC,UAAU,GAAGlI,IAAI,CAACmB,MAAM;IAE9B,EAAA,OAAO8G,CAAC,GAAGC,UAAU,GAAG,CAAC,EAAE;IACzBF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UAC1B8F,UAAU,IACPhI,IAAI,CAACiI,CAAC,CAAY,GAAG,CAAC,GAAGE,MAAM,CAACnI,IAAI,CAACiI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAA,CAAA,EAAIjI,IAAI,CAACiI,CAAC,EAAE,CAAC,CAAA,CAAE;IACjE,IAAA;IACAD,IAAAA,UAAU,IAAIlB,OAAO;IACvB,EAAA;MACA,IAAImB,CAAC,GAAGC,UAAU,EAAE;IAClB;IACAF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG+F,CAAC,EAAE/F,CAAC,GAAGgG,UAAU,EAAEhG,CAAC,EAAE,EAAE;UACnC8F,UAAU,IAAKhI,IAAI,CAACkC,CAAC,CAAY,GAAG,CAAC,GAAGiG,MAAM,CAACnI,IAAI,CAACkC,CAAC,CAAC,CAAC,GAAG,IAAIlC,IAAI,CAACkC,CAAC,CAAC,CAAA,CAAE;IACzE,IAAA;IACF,EAAA;IACA,EAAA,OAAO8F,UAAU;IACnB;IAEA;;;;;;;;;IASM,SAAUN,gBAAgBA,CAC9B1H,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EAAA;MAEjB,IAAIS,UAAU,GAAG,EAAE;IACnB;MACA,IAAIC,CAAC,GAAG,CAAC;IACT,EAAA,MAAMC,UAAU,GAAGlI,IAAI,CAACmB,MAAM;IAC9B,EAAA,OAAO8G,CAAC,GAAGC,UAAU,GAAG,EAAE,EAAE;IAC1BF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;UAC3B8F,UAAU,IAAIK,aAAa,CAACF,MAAM,CAACnI,IAAI,CAACiI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,IAAA;IACAD,IAAAA,UAAU,IAAIlB,OAAO;IACvB,EAAA;MACA,IAAImB,CAAC,GAAGC,UAAU,EAAE;IAClB;IACAF,IAAAA,UAAU,IAAIG,MAAM,CAAC5C,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAG2B,CAAC,GAAGV,SAAS,CAAC,CAAC;QACvD,KAAK,IAAIrF,CAAC,GAAG+F,CAAC,EAAE/F,CAAC,GAAGgG,UAAU,EAAEhG,CAAC,EAAE,EAAE;UACnC8F,UAAU,IAAIK,aAAa,CAACF,MAAM,CAACnI,IAAI,CAACkC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAA;IACF,EAAA;IAEA,EAAA,OAAO8F,UAAU;IACnB;IAEA;;;;;;;IAOM,SAAUJ,2BAA2BA,CACzC5H,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EAAA;MAEjB,IAAIe,IAAI,GAAG,CAAC;MACZ,IAAIC,KAAK,GAAG,CAAC;MACb,IAAIC,SAAS,GAAG,CAAC;IACjB;MACA,IAAIC,WAAW,GAAG,EAAE;MACpB,IAAIC,aAAa,GAAG,EAAE;MACtB,IAAIC,SAAS,GAAG,EAAE;IAElB;MACA,MAAMC,QAAQ,GAAG,IAAIC,KAAK,CAAC7I,IAAI,CAACmB,MAAM,GAAG,CAAC,CAAC;IAC3C,EAAA,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0G,QAAQ,CAACzH,MAAM,EAAEe,CAAC,EAAE,EAAE;IACxC0G,IAAAA,QAAQ,CAAC1G,CAAC,CAAC,GAAIlC,IAAI,CAACkC,CAAC,GAAG,CAAC,CAAY,GAAIlC,IAAI,CAACkC,CAAC,CAAY;IAC7D,EAAA;IAEA;IACA,EAAA,MAAM4G,UAAU,GAAGF,QAAQ,CAACzH,MAAM;MAClC,OAAOoH,KAAK,GAAGO,UAAU,EAAE;QACzB,IAAIN,SAAS,KAAK,CAAC,EAAE;IACnB;IACAE,MAAAA,aAAa,GAAG,CAAA,EAAGnD,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAAC,CAAA,EAAGc,aAAa,CACtEF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CACpB,GAAGQ,eAAe,CAACH,QAAQ,CAACL,KAAK,CAAC,CAAC9H,QAAQ,EAAE,CAAC,CAAA,CAAE;IACjDgI,MAAAA,WAAW,IAAIC,aAAa;UAC5BF,SAAS,IAAIE,aAAa,CAACvH,MAAM;IACnC,IAAA,CAAC,MAAM,IAAIyH,QAAQ,CAACL,KAAK,GAAG,CAAC,CAAC,KAAKK,QAAQ,CAACL,KAAK,CAAC,EAAE;IAClD;IACAD,MAAAA,IAAI,EAAE;IACR,IAAA,CAAC,MAAM,IAAIA,IAAI,GAAG,CAAC,EAAE;IACnB;IACAA,MAAAA,IAAI,EAAE;IACNI,MAAAA,aAAa,GAAGM,cAAc,CAACV,IAAI,CAAC7H,QAAQ,EAAE,CAAC;IAC/CgI,MAAAA,WAAW,IAAIC,aAAa;UAC5BF,SAAS,IAAIE,aAAa,CAACvH,MAAM;IACjCmH,MAAAA,IAAI,GAAG,CAAC;IACRC,MAAAA,KAAK,EAAE;IACT,IAAA,CAAC,MAAM;IACL;UACAG,aAAa,GAAGK,eAAe,CAACH,QAAQ,CAACL,KAAK,CAAC,CAAC9H,QAAQ,EAAE,CAAC;IAC3D,MAAA,IAAIiI,aAAa,CAACvH,MAAM,GAAGqH,SAAS,GAAGnB,aAAa,EAAE;IACpDoB,QAAAA,WAAW,IAAIC,aAAa;YAC5BF,SAAS,IAAIE,aAAa,CAACvH,MAAM;IACnC,MAAA,CAAC,MAAM;IACL;IACAsH,QAAAA,WAAW,IAAI3B,OAAO;YACtB6B,SAAS,GAAG,CAAA,EAAGpD,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAAC,GAAGc,aAAa,CAClEF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CACpB,CAAA,EAAGG,aAAa,CAAA,CAAE;YACnBD,WAAW,IAAIE,SAAS,CAAC;YACzBH,SAAS,GAAGG,SAAS,CAACxH,MAAM;IAC9B,MAAA;IACF,IAAA;IACAoH,IAAAA,KAAK,EAAE;IACT,EAAA;MACA,IAAID,IAAI,GAAG,CAAC,EAAE;QACZG,WAAW,IAAIO,cAAc,CAAC,CAACV,IAAI,GAAG,CAAC,EAAE7H,QAAQ,EAAE,CAAC;IACtD,EAAA;IACA;IACA;MACAgI,WAAW,IAAI,CAAA,EAAG3B,OAAO,CAAA,EAAGvB,IAAI,CAAC6C,IAAI,CACnC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAC3B,CAAA,EAAGc,aAAa,CAACF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;IAExC,EAAA,OAAOE,WAAW;IACpB;IAEA;;;;;;;IAOM,SAAUd,kBAAkBA,CAChC3H,IAAiB,EACjBsG,MAAc,EACdiB,SAAiB,EAAA;MAEjB,IAAIgB,KAAK,GAAG,CAAC;MACb,IAAIC,SAAS,GAAG,CAAC;IACjB,EAAA,IAAItG,CAAC;MAEL,IAAIuG,WAAW,GAAG,EAAE;MACpB,IAAIC,aAAa,GAAG,EAAE;MACtB,IAAIC,SAAS,GAAG,EAAE;IAElB;MACA,MAAMC,QAAQ,GAAG,IAAIC,KAAK,CAAC7I,IAAI,CAACmB,MAAM,GAAG,CAAC,CAAC;IAC3C,EAAA,KAAKe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0G,QAAQ,CAACzH,MAAM,EAAEe,CAAC,EAAE,EAAE;IACpC0G,IAAAA,QAAQ,CAAC1G,CAAC,CAAC,GAAIlC,IAAI,CAACkC,CAAC,GAAG,CAAC,CAAY,GAAIlC,IAAI,CAACkC,CAAC,CAAY;IAC7D,EAAA;IAEA,EAAA,MAAM4G,UAAU,GAAGF,QAAQ,CAACzH,MAAM;MAClC,OAAOoH,KAAK,GAAGO,UAAU,EAAE;QACzB,IAAIN,SAAS,KAAK,CAAC,EAAE;IACnB;IACAE,MAAAA,aAAa,GAAG,CAAA,EAAGnD,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAAC,CAAA,EAAGc,aAAa,CACtEF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CACpB,GAAGQ,eAAe,CAACH,QAAQ,CAACL,KAAK,CAAC,CAAC9H,QAAQ,EAAE,CAAC,CAAA,CAAE;IACjDgI,MAAAA,WAAW,IAAIC,aAAa;UAC5BF,SAAS,IAAIE,aAAa,CAACvH,MAAM;IACnC,IAAA,CAAC,MAAM;UACLuH,aAAa,GAAGK,eAAe,CAACH,QAAQ,CAACL,KAAK,CAAC,CAAC9H,QAAQ,EAAE,CAAC;IAC3D,MAAA,IAAIiI,aAAa,CAACvH,MAAM,GAAGqH,SAAS,GAAGnB,aAAa,EAAE;IACpDoB,QAAAA,WAAW,IAAIC,aAAa;YAC5BF,SAAS,IAAIE,aAAa,CAACvH,MAAM;IACnC,MAAA,CAAC,MAAM;IACLsH,QAAAA,WAAW,IAAI3B,OAAO;YACtB6B,SAAS,GAAG,CAAA,EAAGpD,IAAI,CAAC6C,IAAI,CAAC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAAC,GAAGc,aAAa,CAClEF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CACpB,CAAA,EAAGG,aAAa,CAAA,CAAE;YACnBD,WAAW,IAAIE,SAAS,CAAC;YACzBH,SAAS,GAAGG,SAAS,CAACxH,MAAM;IAC9B,MAAA;IACF,IAAA;IACAoH,IAAAA,KAAK,EAAE;IACT,EAAA;IACA;MACAE,WAAW,IAAI,CAAA,EAAG3B,OAAO,CAAA,EAAGvB,IAAI,CAAC6C,IAAI,CACnC9B,MAAM,GAAGiC,KAAK,GAAGhB,SAAS,CAC3B,CAAA,EAAGc,aAAa,CAACF,MAAM,CAACnI,IAAI,CAACuI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;IAExC,EAAA,OAAOE,WAAW;IACpB;IAEA;;;;;;IAMA,SAASJ,aAAaA,CAACY,OAAe,EAAA;MACpC,IAAIC,SAAS,GAAG,EAAE;IAClB,EAAA,IAAID,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;QAC3BD,SAAS,IAAIE,WAAW,CAACnC,KAAK,EAAEgC,OAAO,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,IAAA,IAAIJ,OAAO,CAAC9H,MAAM,GAAG,CAAC,EAAE;IACtB+H,MAAAA,SAAS,IAAID,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;IAC/B,IAAA;IACF,EAAA,CAAC,MAAM;QACLJ,SAAS,IAAIE,WAAW,CAACpC,KAAK,EAAEiC,OAAO,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;IAClD,IAAA,IAAIJ,OAAO,CAAC9H,MAAM,GAAG,CAAC,EAAE;IACtB+H,MAAAA,SAAS,IAAID,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;IAC/B,IAAA;IACF,EAAA;IAEA,EAAA,OAAOJ,SAAS;IAClB;IAEA;;;;;IAKA,SAASH,eAAeA,CAACE,OAAe,EAAA;MACtC,IAAIM,UAAU,GAAG,EAAE;IAEnB,EAAA,IAAIN,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;QAC3BI,UAAU,IAAIH,WAAW,CAACjC,KAAK,EAAE8B,OAAO,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,IAAA,IAAIJ,OAAO,CAAC9H,MAAM,GAAG,CAAC,EAAE;IACtBoI,MAAAA,UAAU,IAAIN,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;IAChC,IAAA;IACF,EAAA,CAAC,MAAM;QACLC,UAAU,IAAIH,WAAW,CAAClC,KAAK,EAAE+B,OAAO,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,IAAA,IAAIJ,OAAO,CAAC9H,MAAM,GAAG,CAAC,EAAE;IACtBoI,MAAAA,UAAU,IAAIN,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;IAChC,IAAA;IACF,EAAA;IAEA,EAAA,OAAOC,UAAU;IACnB;IAEA;;;;;IAKA,SAASP,cAAcA,CAACC,OAAe,EAAA;MACrC,IAAIO,SAAS,GAAG,EAAE;MAClBA,SAAS,IAAIJ,WAAW,CAAChC,GAAG,EAAE6B,OAAO,CAACI,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,EAAA,IAAIJ,OAAO,CAAC9H,MAAM,GAAG,CAAC,EAAE;IACtBqI,IAAAA,SAAS,IAAIP,OAAO,CAACK,KAAK,CAAC,CAAC,CAAC;IAC/B,EAAA;IAEA,EAAA,OAAOE,SAAS;IAClB;IAEA,SAASJ,WAAWA,CAAClG,GAAW,EAAEuG,KAAa,EAAA;MAC7C,OAAQ1C,YAAY,CAAC7D,GAAG,CAAc,CAAC+C,MAAM,CAACwD,KAAK,CAAC,CAAW;IACjE;;IClXM,SAAUC,aAAaA,CAAC1J,IAAY,EAAEC,OAAA,GAAwB,EAAE,EAAA;MACpE,MAAM;IAAEuH,IAAAA,UAAU,GAAG;IAAK,GAAE,GAAGvH,OAAO;MACtC,MAAM;IAAEmG,IAAAA,OAAO,GAAG,CAAC;IAAEC,IAAAA,OAAO,GAAG;IAAC,GAAE,GAAGpG,OAAO,CAAC8D,IAAI,IAAI,EAAE;IACvD,EAAA,MAAMuC,MAAM,GAAGtG,IAAI,CAACkF,CAAC,CAAC,CAAC,CAAW;MAClC,MAAMsB,KAAK,GAAGxG,IAAI,CAACkF,CAAC,CAACxB,EAAE,CAAC,EAAE,CAAW;IACrC,EAAA,MAAM+C,MAAM,GAAGzG,IAAI,CAAC0F,CAAC,CAAC,CAAC,CAAC;MACxB,MAAMgB,KAAK,GAAG1G,IAAI,CAAC0F,CAAC,CAAChC,EAAE,CAAC,EAAE,CAAC;IAC3B,EAAA,MAAMiG,QAAQ,GAAG3J,IAAI,CAACkF,CAAC,CAAC/D,MAAM;MAC9B,MAAMyI,MAAM,GAAG,CAACpD,KAAK,GAAGF,MAAM,KAAKqD,QAAQ,GAAG,CAAC,CAAC;IAChD,EAAA,MAAMhD,KAAK,GAAG,CACZ,CAAA,SAAA,EAAYL,MAAM,CAAA,CAAE,EACpB,CAAA,QAAA,EAAWE,KAAK,CAAA,CAAE,EAClB,CAAA,SAAA,EAAYC,MAAM,EAAE,EACpB,CAAA,QAAA,EAAWC,KAAK,CAAA,CAAE,EAClB,CAAA,SAAA,EAAYkD,MAAM,CAAA,CAAE,EACpB,CAAA,UAAA,EAAaxD,OAAO,CAAA,CAAE,EACtB,CAAA,UAAA,EAAaC,OAAO,CAAA,CAAE,EACtB,sBAAsB,CACvB;MAED,MAAMwD,IAAI,GAAGvC,aAAa,CACxBV,uBAAuB,CAAC5G,IAAI,CAAC0F,CAAC,EAAEW,OAAO,CAAC,EACxCC,MAAM,GAAGF,OAAO,EAChBwD,MAAM,GAAGxD,OAAO,EAChBoB,UAAU,CACX;IACD,EAAA,IAAIqC,IAAI,EAAElD,KAAK,CAAC5B,IAAI,CAAC8E,IAAI,CAAC;IAC1B,EAAA,OAAOlD,KAAK;IACd;;IC3BA;;;;;;;IAOM,SAAUmD,QAAQA,CAAC9J,IAAY,EAAEC,OAAA,GAAwB,EAAE,EAAA;MAC/D,MAAM;IAAE6D,IAAAA,IAAI,GAAG,EAAE;IAAEC,IAAAA,IAAI,GAAG,EAAE;IAAEyD,IAAAA;IAAU,GAAE,GAAGvH,OAAO;MAEpD,MAAM;IACJ+D,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,MAAM,GAAG,EAAE;IACXC,IAAAA,QAAQ,GAAG,EAAE;IACb4F,IAAAA,MAAM,GAAG,EAAE;IACXC,IAAAA,MAAM,GAAG,EAAE;QACX,GAAG5F;IAAU,GACd,GAAGL,IAAI;MAER,IAAI;QAAEqC,OAAO;IAAEC,IAAAA;IAAO,GAAE,GAAGtC,IAAI;IAE/B/D,EAAAA,IAAI,GAAG;QAAEkF,CAAC,EAAElF,IAAI,CAACkF,CAAC;QAAEQ,CAAC,EAAE1F,IAAI,CAAC0F;OAAG;MAE/B,IAAIrF,MAAM,GAAG,CAAA,QAAA,EAAW2D,KAAK;;cAEjBG,QAAQ;WACXD,MAAM;UACPD,KAAK;WACJ8F,MAAM;AACNC,SAAAA,EAAAA,MAAM,CAAA,EAAA,CAAI;IAEnB3J,EAAAA,MAAM,IAAIN,WAAW,CAACqE,UAAU,EAAE;IAAEhE,IAAAA,MAAM,EAAE;IAAI,GAAE,CAAC;IACnDC,EAAAA,MAAM,IAAIN,WAAW,CAAC+D,IAAI,CAAC;IAE3B;IAEA,EAAA,IAAI0D,UAAU,EAAE;IACdpB,IAAAA,OAAO,GAAGZ,aAAa,CAACxF,IAAI,CAACkF,CAAC,EAAE;IAAEI,MAAAA,MAAM,EAAEc;IAAO,KAAE,CAAC;IACpDC,IAAAA,OAAO,GAAGb,aAAa,CAACxF,IAAI,CAAC0F,CAAC,EAAE;IAAEJ,MAAAA,MAAM,EAAEe;IAAO,KAAE,CAAC;IACpD,IAAA,OAAO,GAAGhG,MAAM,CAAA,UAAA,EAAaL,IAAI,CAACkF,CAAC,CAAC/D,MAAM;EAC5CuI,aAAa,CAAC1J,IAAI,EAAE;AAAE+D,MAAAA,IAAI,EAAE;QAAEqC,OAAO;AAAEC,QAAAA;OAAS;AAAEmB,MAAAA;AAAU,KAAE,CAAC,CAACvC,IAAI,CAAC,IAAI,CAAC;AACrE,MAAA,CAAA;IACL,EAAA;IACA,EAAA,IAAImB,OAAO,KAAKhF,SAAS,EAAEgF,OAAO,GAAG,CAAC;IACtC,EAAA,IAAIC,OAAO,KAAKjF,SAAS,EAAEiF,OAAO,GAAG,CAAC;MACtC,IAAID,OAAO,KAAK,CAAC,EAAE;IACjBpG,IAAAA,IAAI,CAACkF,CAAC,GAAGlF,IAAI,CAACkF,CAAC,CAAC2B,GAAG,CAAEjG,KAAK,IAAKA,KAAK,GAAGwF,OAAO,CAAC;IACjD,EAAA;MACA,IAAIC,OAAO,KAAK,CAAC,EAAE;IACjBrG,IAAAA,IAAI,CAAC0F,CAAC,GAAG1F,IAAI,CAAC0F,CAAC,CAACmB,GAAG,CAAEjG,KAAK,IAAKA,KAAK,GAAGyF,OAAO,CAAC;IACjD,EAAA;IACA,EAAA,OAAO,GAAGhG,MAAM,CAAA,UAAA,EAAaL,IAAI,CAACkF,CAAC,CAAC/D,MAAM;EAC1CgF,gBAAgB,CAACnG,IAAI,EAAE;AAAE+D,IAAAA,IAAI,EAAE;MAAEqC,OAAO;AAAEC,MAAAA;AAAO;AAAE,GAAE,CAAC,CAACpB,IAAI,CAAC,IAAI,CAAC;AAC5D,MAAA,CAAA;IACP;;ICxDA;;;;;IAKM,SAAUgF,aAAaA;IAC3B;;;IAGApG,SAAiC,EACjC5D,OAAA,GAAwB,EAAE,EAAA;MAE1B,MAAM;IAAE8D,IAAAA,IAAI,GAAG,EAAE;IAAED,IAAAA,IAAI,GAAG,EAAE;IAAEoG,IAAAA,YAAY,GAAG;IAAK,GAAE,GAAGjK,OAAO;IAE9D,EAAA,MAAMkK,YAAY,GAAG;QACnBpG,IAAI;IACJD,IAAAA;IACD,GAAA;IAED,EAAA,MAAM5D,IAAI,GAAGC,MAAM,CAACD,IAAI,CAAC2D,SAAS,CAAC,CAACgD,GAAG,CAAEvG,GAAG,IAAKA,GAAG,CAAC8J,WAAW,EAAE,CAAC;MACnE,IAAI,CAACF,YAAY,IAAIhK,IAAI,CAACiB,MAAM,KAAK,CAAC,EAAE;IACtC,IAAA,MAAM+D,CAAC,GAAGrB,SAAS,CAACqB,CAAC;IACrB,IAAA,MAAMmF,MAAM,GAAGnF,CAAC,CAACN,KAAK,IAAI,GAAG;IAE7B,IAAA,IAAIf,SAAS,CAACqB,CAAC,CAACT,KAAK,EAAE;UACrB,IAAI4F,MAAM,CAACrJ,QAAQ,CAAC6C,SAAS,CAACqB,CAAC,CAACT,KAAK,CAAC,EAAE;IACtC0F,QAAAA,YAAY,CAACpG,IAAI,CAACgG,MAAM,GAAGM,MAAM;IACnC,MAAA,CAAC,MAAM;IACLF,QAAAA,YAAY,CAACpG,IAAI,CAACgG,MAAM,GAAG,CAAA,EAAGM,MAAM,CAAA,EAAA,EAAKxG,SAAS,CAACqB,CAAC,CAACT,KAAK,CAAA,CAAA,CAAG;IAC/D,MAAA;IACF,IAAA,CAAC,MAAM;IACL0F,MAAAA,YAAY,CAACpG,IAAI,CAACgG,MAAM,GAAGM,MAAM;IACnC,IAAA;IAEA,IAAA,MAAM3E,CAAC,GAAG7B,SAAS,CAAC6B,CAAC;IACrB,IAAA,MAAM4E,MAAM,GAAG5E,CAAC,CAACd,KAAK,IAAI,GAAG;IAE7B,IAAA,IAAIf,SAAS,CAAC6B,CAAC,CAACjB,KAAK,EAAE;UACrB,IAAI6F,MAAM,CAACtJ,QAAQ,CAAC6C,SAAS,CAAC6B,CAAC,CAACjB,KAAK,CAAC,EAAE;IACtC0F,QAAAA,YAAY,CAACpG,IAAI,CAACgG,MAAM,GAAGO,MAAM;IACnC,MAAA,CAAC,MAAM;IACLH,QAAAA,YAAY,CAACpG,IAAI,CAACiG,MAAM,GAAG,CAAA,EAAGM,MAAM,CAAA,EAAA,EAAKzG,SAAS,CAAC6B,CAAC,CAACjB,KAAK,CAAA,CAAA,CAAG;IAC/D,MAAA;IACF,IAAA,CAAC,MAAM;IACL0F,MAAAA,YAAY,CAACpG,IAAI,CAACiG,MAAM,GAAGM,MAAM;IACnC,IAAA;IAEA,IAAA,MAAMC,KAAK,GAAG1G,SAAS,CAACqB,CAAC,CAAClF,IAAI;IAC9B,IAAA,MAAMwK,KAAK,GAAG3G,SAAS,CAAC6B,CAAC,CAAC1F,IAAI;QAE9BoD,kBAAkB,CAACmH,KAAK,CAAC;QACzBnH,kBAAkB,CAACoH,KAAK,CAAC;IAEzB,IAAA,OAAOV,QAAQ,CAAC;IAAE5E,MAAAA,CAAC,EAAEqF,KAAK;IAAE7E,MAAAA,CAAC,EAAE8E;SAAO,EAAEL,YAAY,CAAC;IACvD,EAAA;IACA,EAAA,OAAOvG,cAAc,CAACC,SAAS,EAAE5D,OAAO,CAAC;IAC3C;;IC3DA;;;;;;IAMM,SAAUwK,aAAaA,CAC3BzK,IAAc,EACduI,KAAK,GAAG,CAAC,EAAA;IAET,EAAA,IAAI5H,UAAU,CAACX,IAAI,CAAC,EAAE;IACpB,IAAA,MAAMY,KAAK,GAAGZ,IAAI,CAAC0D,EAAE,CAAC6E,KAAK,CAAC;QAC5B,IAAI3H,KAAK,KAAKQ,SAAS,EAAE;IACvB,MAAA,OAAOR,KAAK;IACd,IAAA;IACA,IAAA,MAAM,IAAIoB,UAAU,CAAC,yCAAyC,CAAC;IACjE,EAAA;IAEA,EAAA,OAAOhC,IAAI;IACb;;ICIA,MAAM0K,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,CAA6B;IAyD1D,SAASC,aAAaA,CACpB9G,SAA0C,EAAA;IAE1C,EAAA,OAAO,GAAG,IAAIA,SAAS,IAAI,GAAG,IAAIA,SAAS;IAC7C;IAEA,SAAS+G,UAAUA,CACjB/G,SAA0C,EAAA;MAE1C,OAAO,GAAG,IAAIA,SAAS,IAAI,EAAE,GAAG,IAAIA,SAAS,CAAC;IAChD;IAKA;;;;;;IAMM,SAAUgH,kBAAkBA,CAChChH,SAAyB,EACzB5D,OAAwB,EAAA;MAExB,MAAM;QACJ8D,IAAI,EAAE+G,SAAS,GAAG,EAAE;QACpBhH,IAAI,EAAEiH,WAAW,GAAG,EAAE;QACtBvD,UAAU;IACVwD,IAAAA;IAAO,GACR,GAAG/K,OAAO;MACX,MAAM;QACJgL,KAAK;QACLjH,KAAK;QACLkH,eAAe;QACfC,KAAK;QACLC,MAAM;QACNC,OAAO;IACPC,IAAAA,eAAe,EAAEC,UAAU;IAC3BC,IAAAA,aAAa,EAAEC,QAAQ;IACvBC,IAAAA,aAAa,EAAEC,gBAAgB;QAC/BC,OAAO;IACP3H,IAAAA,KAAK,EAAE4H,QAAQ;IACf1H,IAAAA,QAAQ,EAAE2H,WAAW;IACrBC,IAAAA,SAAS,GAAGlI,SAAS,CAAC3B,CAAC,GAAG,SAAS,GAAG,QAAQ;QAC9C8J,WAAW;QACXC,aAAa;QACb,GAAGC;IAAW,GACf,GAAGlB,OAAO;IACX,EAAA,MAAMQ,aAAa,GAAGf,aAAa,CAACgB,QAAQ,IAAIF,UAAU,CAAC;MAE3D,MAAMD,eAAe,GAAGb,aAAa,CACnCc,UAAU,IAAIT,SAAS,CAAC,oBAAoB,CAAC,CAC9C;MAED,IAAI,CAACQ,eAAe,EAAE;IACpB,IAAA,MAAM,IAAI5J,KAAK,CACb,gEAAgE,CACjE;IACH,EAAA;IAEA,EAAA,MAAMyK,SAAS,GAAGtI,SAAS,CAACqB,CAAC;IAC7B,EAAA,MAAMA,CAAC,GAAGiH,SAAS,CAACnM,IAAI,CAACsJ,KAAK,EAAE;MAChC,MAAMiB,KAAK,GAAGU,KAAK,GAAG/F,CAAC,GAAGxC,SAAS,CAACwC,CAAC,EAAEoG,eAAe,CAAC;IAEvD;MACA,MAAMc,OAAO,GAAGC,aAAa,CAC3B9B,KAAK,EACLU,KAAK,EACLU,gBAAgB,EAChBH,aAAa,EACbF,eAAe,EACfW,aAAa,EACbd,KAAK,EACLC,MAAM,EACNL,WAAW,EACXlH,SAAS,CACV;IACD,EAAA,MAAMC,IAAI,GAAG;IAAE,IAAA,GAAGoI,WAAW;IAAE,IAAA,GAAGnB,WAAW;QAAE,GAAGqB;OAAS;IAE3D;IACAE,EAAAA,YAAY,CAACzI,SAAS,EAAEmI,WAAW,EAAElI,IAAI,CAAC;IAE1C;MACA,MAAMyI,OAAO,GAAGC,aAAa,CAC3BvB,KAAK,EACLV,KAAK,EACLwB,SAAS,EACTH,OAAO,EACPD,gBAAgB,EAChBT,eAAe,EACfM,aAAa,EACbxH,KAAK,EACLsH,eAAe,EACfD,OAAO,EACPS,WAAW,EACXD,QAAQ,CACT;IACD,EAAA,MAAM9H,IAAI,GAAG;IAAE,IAAA,GAAG+G,SAAS;QAAE,GAAGyB;OAAS;IAEzC;IAEA,EAAA,MAAMlM,MAAM,GAAGoM,eAAe,CAAC1I,IAAI,EAAED,IAAI,CAAC;IAE1C,EAAA,MAAM6F,QAAQ,GAAGY,KAAK,CAACpJ,MAAM;IAC7B,EAAA,MAAMmF,MAAM,GAAGiE,KAAK,CAAC,CAAC,CAAW;IACjC,EAAA,MAAMmC,OAAO,GAAGnC,KAAK,CAAC,CAAC,CAAW;IAClC,EAAA,MAAMmB,aAAa,GAAGnG,IAAI,CAACS,GAAG,CAAEuE,KAAK,CAACZ,QAAQ,GAAG,CAAC,CAAY,GAAGrD,MAAM,CAAC;MACxE,MAAMqG,UAAU,GAAGrG,MAAM,GAAGoG,OAAO,GAAGhB,aAAa,GAAG,CAAC;MACvD,MAAMkB,SAAS,GAAGtG,MAAM,GAAGoG,OAAO,GAAG,CAAC,GAAGhB,aAAa;IAEtD,EAAA,MAAMrH,MAAM,GAAG,CAAC,GAAG,CAAC;IACpB,EAAA,MAAMG,WAAW,GAAG,CAACmF,QAAQ,CAAC;IAC9B,EAAA,MAAMlF,KAAK,GAAG,CAAC0H,SAAS,CAAC1H,KAAK,KAAKwG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,EAAA,MAAM1G,YAAY,GAAG,CAAC,aAAa,CAAC;IACpC,EAAA,MAAMsI,YAAY,GAAG,CAAC,MAAM,CAAC;IAC7B,EAAA,MAAMvH,MAAM,GACV,QAAQ,IAAIrF,OAAO,GACf;IAAE,IAAA,GAAGA,OAAO,CAACqF;IAAM,GAAE,GACpB,EAAmC;MAC1C,MAAMwH,WAAW,GAAG,CAACpB,aAAa,IAAI/B,QAAQ,GAAG,CAAC,CAAC,CAAC;IACpD,EAAA,MAAMrF,YAAY,GAAG,CAAC6H,SAAS,CAACvH,KAAK,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IAEnE,EAAA,MAAMrB,KAAK,GAAG,CAACmJ,UAAU,CAAC;IAC1B,EAAA,MAAMlJ,IAAI,GAAG,CAACmJ,SAAS,CAAC;MAExB,MAAMnK,GAAG,GAAG,CAAC8C,IAAI,CAAC9C,GAAG,CAACmK,SAAS,EAAED,UAAU,CAAC,CAAC;MAC7C,MAAMnK,GAAG,GAAG,CAAC+C,IAAI,CAAC/C,GAAG,CAACoK,SAAS,EAAED,UAAU,CAAC,CAAC;IAE7C,EAAA,KAAK,MAAMrM,GAAG,IAAIoK,WAAW,EAAE;IAC7B,IAAA,MAAMhG,QAAQ,GAAGb,SAAS,CAACvD,GAAG,CAAC;QAE/B,IAAI,CAACoE,QAAQ,EAAE;UACb,IAAIpE,GAAG,KAAK,GAAG,EAAE;IACf,QAAA,MAAM,IAAIoB,KAAK,CAAC,CAAA,SAAA,EAAYpB,GAAG,sCAAsC,CAAC;IACxE,MAAA;IACA,MAAA;IACF,IAAA;QAEA,MAAMqE,IAAI,GAAGD,QAAQ,EAAEE,KAAK,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,MAAM;UAAEtB,SAAS;IAAEI,MAAAA;IAAM,KAAE,GAAGN,gBAAgB,CAACqB,QAAQ,CAAC1E,IAAI,CAAC;QAC7DsF,MAAM,CAAChF,GAAG,CAAC,GAAGkF,aAAa,CAACd,QAAQ,CAAC1E,IAAI,EAAE;IACzCsF,MAAAA,MAAM,EAAEA,MAAM,CAAChF,GAAG,CAAC;IACnBqD,MAAAA;SACD,CAAC;IAEF,IAAA,MAAMoJ,aAAa,GAAGzH,MAAM,CAAChF,GAAG,CAAC;IACjCwM,IAAAA,WAAW,CAAC/H,IAAI,CAACgI,aAAa,IAAI,CAAC,CAAC;IACpC1I,IAAAA,MAAM,CAACU,IAAI,CAACL,QAAQ,CAACL,MAAM,KAAK/D,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACzDgE,IAAAA,YAAY,CAACS,IAAI,CAACJ,IAAI,IAAIrE,GAAG,CAAC;QAC9BkE,WAAW,CAACO,IAAI,CAACL,QAAQ,CAAC1E,IAAI,CAACmB,MAAM,CAAC;IACtC0L,IAAAA,YAAY,CAAC9H,IAAI,CAAC,MAAM,CAAC;IACzBvB,IAAAA,KAAK,CAACuB,IAAI,CAACxB,SAAS,CAACC,KAAK,CAAC;IAC3BC,IAAAA,IAAI,CAACsB,IAAI,CAACxB,SAAS,CAACE,IAAI,CAAC;IACzBhB,IAAAA,GAAG,CAACsC,IAAI,CAACpB,MAAM,CAAClB,GAAG,CAAC;IACpBD,IAAAA,GAAG,CAACuC,IAAI,CAACpB,MAAM,CAACnB,GAAG,CAAC;IACpB+B,IAAAA,YAAY,CAACQ,IAAI,CAAC,WAAW,CAAC;QAC9BN,KAAK,CAACM,IAAI,CAACL,QAAQ,CAACD,KAAK,IAAI,WAAW,CAAC;IAC3C,EAAA;MAEA,OAAOkG,aAAa,CAAC9G,SAAS,CAAC,GAC3BmJ,gBAAgB,CACd3M,MAAM,EACNwD,SAAS,EACT;QACEQ,MAAM;IACN4I,IAAAA,OAAO,EAAE3I,YAAY;IACrB4I,IAAAA,MAAM,EAAE1I,WAAW;IACnB2I,IAAAA,OAAO,EAAEN,YAAY;QACrBrJ,KAAK;QACLC,IAAI;QACJjB,GAAG;QACHC,GAAG;QACHgC,KAAK;QACLa,MAAM;IACN8H,IAAAA,OAAO,EAAE7I,YAAY;IACrBuI,IAAAA;OACD,EACDhB,WAAW,CACZ,GACDlB,UAAU,CAAC/G,SAAS,CAAC,GACnBwJ,WAAW,CAAChN,MAAM,EAAE;QAClBkK,KAAK;IACLC,IAAAA,KAAK,EAAE3G,SAAS,CAACyJ,CAAC,CAACtN,IAAI;QACvBwH,UAAU;IACVzD,IAAAA,IAAI,EAAE;IACJwJ,MAAAA,MAAM,EAAE,IAAI;IACZC,MAAAA,MAAM,EAAE/I,KAAK,CAAC,CAAC,CAAC;IAChBgJ,MAAAA,OAAO,EAAEX,WAAW,CAAC,CAAC,CAAC;IACvBY,MAAAA,OAAO,EAAEZ,WAAW,CAAC,CAAC,CAAC;UACvBa,MAAM,EAAGpD,KAAK,CAAC,CAAC,CAAY,GAAIA,KAAK,CAAC,CAAC,CAAY;IACnDqD,MAAAA,MAAM,EAAEpK,KAAK,CAAC,CAAC,CAAC;IAChBqK,MAAAA,MAAM,EAAErK,KAAK,CAAC,CAAC,CAAC;IAChBsK,MAAAA,KAAK,EAAErK,IAAI,CAAC,CAAC,CAAC;IACdsK,MAAAA,IAAI,EAAEtL,GAAG,CAAC,CAAC,CAAC;IACZuL,MAAAA,IAAI,EAAExL,GAAG,CAAC,CAAC,CAAC;UACZyL,OAAO,EAAE1D,KAAK,CAACpJ,MAAM;IACrB+M,MAAAA,MAAM,EAAE;;IAEX,GAAA,CAAC,GACF7N,MAAM;IACd;IAEA,SAAS2M,gBAAgBA,CACvB3M,MAAc,EACdwD,SAAyB,EACzBsK,MAA2B,EAC3BhK,QAAQ,GAAG,EAAE,EAAA;MAEb,MAAM;QACJE,MAAM;QACN4I,OAAO;QACPC,MAAM;QACN1J,KAAK;QACLC,IAAI;QACJjB,GAAG;QACHC,GAAG;QACHgC,KAAK;QACL2I,OAAO;QACPD,OAAO;QACPL,WAAW;QACXtF,UAAU;IACVlC,IAAAA;IAAM,GACP,GAAG6I,MAAM;MAEV9N,MAAM,IAAI,cAAc8D,QAAQ;AACnB8I,aAAAA,EAAAA,OAAO,CAAChI,IAAI,CAAC,GAAG,CAAC;AACjBZ,aAAAA,EAAAA,MAAM,CAACY,IAAI,CAAC,GAAG,CAAC;AAChBmI,aAAAA,EAAAA,OAAO,CAACnI,IAAI,CAAC,GAAG,CAAC;AACjBkI,aAAAA,EAAAA,OAAO,CAAClI,IAAI,CAAC,GAAG,CAAC;AACjBiI,aAAAA,EAAAA,MAAM,CAACjI,IAAI,CAAC,GAAG,CAAC;AAChBR,aAAAA,EAAAA,KAAK,CAACQ,IAAI,CAAC,GAAG,CAAC;AACf6H,aAAAA,EAAAA,WAAW,CAAC7H,IAAI,CAAC,GAAG,CAAC;AACrBzB,aAAAA,EAAAA,KAAK,CAACyB,IAAI,CAAC,GAAG,CAAC;AACfxB,aAAAA,EAAAA,IAAI,CAACwB,IAAI,CAAC,GAAG,CAAC;AACdzC,aAAAA,EAAAA,GAAG,CAACyC,IAAI,CAAC,GAAG,CAAC;AACbxC,aAAAA,EAAAA,GAAG,CAACwC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI;MAE9B,KAAK,MAAM3E,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAU,EAAE;IACrC,IAAA,MAAMoE,QAAQ,GAAGb,SAAS,CAACvD,GAAG,CAAC;QAE/B,IAAI,CAACoE,QAAQ,EAAE;IAEftB,IAAAA,kBAAkB,CAACsB,QAAQ,CAAC1E,IAAI,CAAC;QACjCK,MAAM,IAAI,aAAaC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI;QAC9CD,MAAM,IAAI,sBAAsBC,GAAG,KAAK,GAAG,GAAG,MAAM,GAAG,MAAM,CAAA,YAAA,CAAc;QAC3ED,MAAM,IAAIiH,aAAa,CACrBV,uBAAuB,CAAClC,QAAQ,CAAC1E,IAAI,EAAEsF,MAAM,CAAChF,GAAG,CAAC,CAAC,EACnDkD,KAAK,CAAC,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC,CAAC,GAAGyJ,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAClC1J,KAAK,CAAC,CAAC,CAAC,GAAGC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAC3B+D,UAAU,CACX;IACDnH,IAAAA,MAAM,IAAI,IAAI;IAChB,EAAA;MAEAA,MAAM,IAAI,CAAA,eAAA,EAAkB8D,QAAQ,CAAA,EAAA,CAAI;IACxC9D,EAAAA,MAAM,IAAI,QAAQ;IAClB,EAAA,OAAOA,MAAM;IACf;IAEA,SAASgN,WAAWA,CAAChN,MAAc,EAAEJ,OAAY,EAAA;MAC/C,MAAM;QAAEsK,KAAK;QAAEC,KAAK;QAAEzG,IAAI;IAAEyD,IAAAA;IAAU,GAAE,GAAGvH,OAAO;IAClDI,EAAAA,MAAM,IAAIN,WAAW,CAACgE,IAAI,EAAE;IAAE3D,IAAAA,MAAM,EAAE;IAAI,GAAE,CAAC;MAC7C,OAAO,CAAA,EAAGC,MAAM,CAAA,EAAGiH,aAAa,CAC9BV,uBAAuB,CAAC4D,KAAK,EAAEzG,IAAI,CAAC2J,OAAO,CAAC,EAC5CnD,KAAK,CAACpJ,MAAM,GAAG,CAAC,EAChB,EAAE,EACFqG,UAAU,CACX;AACI,MAAA,CAAA;IACP;IAEA,SAAS6E,aAAaA,CACpB9B,KAAkB,EAClBU,KAAc,EACdU,gBAAoC,EACpCH,aAAqB,EACrBF,eAAuB,EACvBW,aAAiC,EACjCd,KAAyB,EACzBC,MAA0B,EAC1BL,WAAgC,EAChClH,SAAyB,EAAA;IAEzB,EAAA,MAAMuI,OAAO,GAAQ;IACnBgC,IAAAA,MAAM,EAAG7D,KAAK,CAAC,CAAC,CAAY,GAAGe;IAChC,GAAA;IACD+C,EAAAA,QAAQ,CAACjC,OAAO,EAAE,IAAI,EAAET,gBAAgB,CAAC;IACzC0C,EAAAA,QAAQ,CAACjC,OAAO,EAAE,KAAK,EAAEZ,aAAa,CAAC;IAEvC,EAAA,IAAIP,KAAK,EAAE;IACToD,IAAAA,QAAQ,CAACjC,OAAO,EAAE,QAAQ,EAAEH,aAAa,CAAC;IAC1CoC,IAAAA,QAAQ,CAACjC,OAAO,EAAE,OAAO,EAAEjB,KAAK,CAAC;IACjCkD,IAAAA,QAAQ,CAACjC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;IAClCiC,IAAAA,QAAQ,CAACjC,OAAO,EAAE,QAAQ,EAAEhB,MAAM,CAAC;IACrC,EAAA;IACAiD,EAAAA,QAAQ,CAACjC,OAAO,EAAE,QAAQ,EAAEvI,SAAS,CAAC3B,CAAC,GAAG,EAAE,GAAG6I,WAAW,CAACuD,MAAM,CAAC;IAClE,EAAA,OAAOlC,OAAO;IAChB;IAEA,SAASI,aAAaA,CACpBvB,KAAc,EACdV,KAAkB,EAClBwB,SAAiB,EACjBH,OAA2B,EAC3BD,gBAAoC,EACpCT,eAAmC,EACnCM,aAAiC,EACjCxH,KAAyB,EACzBsH,eAAuB,EACvBD,OAA2B,EAC3BS,WAA+B,EAC/BD,QAA4B,EAAA;IAE5B,EAAA,IAAI0C,cAAc;MAClB,IAAIrD,eAAe,IAAIM,aAAa,EAAE;IACpC,IAAA,MAAMgD,MAAM,GAAGtD,eAAe,GAAGM,aAAa;QAC9C+C,cAAc,GAAGC,MAAM,GAAG,GAAG,IAAI7C,gBAAgB,IAAI,CAAC,CAAC;IACzD,EAAA,CAAC,MAAM;IACL4C,IAAAA,cAAc,GAAGhE,KAAK,CAAC7G,EAAE,CAAC,EAAE,CAAC;IAC/B,EAAA;MAEA,MAAM6I,OAAO,GAAwB,EAAE;MACvC8B,QAAQ,CACN9B,OAAO,EACP,kBAAkB,EAClB,CAAA,UAAA,EAAapE,MAAM,CAACyD,OAAO,CAAC,KAAKX,KAAK,GAAGV,KAAK,CAACpJ,MAAM,GAAG,CAAC,CAAA,EAAA,EAAKoN,cAAc,CAAA,CAAE,CAC/E;IACDF,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,OAAO,EAAEvI,KAAK,CAAC;IACjCqK,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,oBAAoB,EAAEjB,eAAe,CAAC;MACxD+C,QAAQ,CAAC9B,OAAO,EAAE,kBAAkB,EAAE9B,aAAa,CAACY,OAAO,CAAC,CAAC;IAC7DgD,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,UAAU,EAAET,WAAW,CAAC;IAC1CuC,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,WAAW,EAAER,SAAS,CAAC;IACzCsC,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,UAAU,EAAEX,OAAO,CAAC;IACtCyC,EAAAA,QAAQ,CAAC9B,OAAO,EAAE,OAAO,EAAEV,QAAQ,CAAC;IAEpC,EAAA,OAAOU,OAAO;IAChB;IAEA,SAASD,YAAYA,CACnBzI,SAAyB,EACzBmI,WAA+B,EAC/BI,OAA4B,EAAA;IAE5B,EAAA,MAAMqC,KAAK,GAAG,CAAC,IAAIzC,WAAW,IAAI,CAAC,CAAC;MACpC,IAAIyC,KAAK,KAAK,CAAC,EAAE;IACf,IAAA;IACF,EAAA;IAEAJ,EAAAA,QAAQ,CAACjC,OAAO,EAAE,SAAS,EAAE,CAAC7G,IAAI,CAACmJ,IAAI,CAACD,KAAK,CAAC,CAAC;MAC/C/L,SAAS,CAACmB,SAAS,CAACyJ,CAAC,EAAEtN,IAAI,IAAI,EAAE,EAAEyO,KAAK,EAAE;IACxCvN,IAAAA,MAAM,EAAE2C,SAAS,CAACyJ,CAAC,EAAEtN;OACtB,CAAC;MACF,IAAI6D,SAAS,CAAC3B,CAAC,EAAE;QACfQ,SAAS,CAACmB,SAAS,CAAC3B,CAAC,EAAElC,IAAI,IAAI,EAAE,EAAEyO,KAAK,EAAE;IACxCvN,MAAAA,MAAM,EAAE2C,SAAS,CAAC3B,CAAC,EAAElC;SACtB,CAAC;IACJ,EAAA;IACF;IAEA,SAASyM,eAAeA,CAAC1I,IAAyB,EAAED,IAAyB,EAAA;MAC3E,MAAM;IACJ6K,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,MAAM,GAAG,EAAE;IACXC,IAAAA,QAAQ,GAAG,EAAE;QACbC,SAAS;QACT,GAAG3K;IAAU,GACd,GAAGL,IAAI;MACR,IAAI1D,MAAM,GAAG,CAAA,QAAA,EAAWsO,KAAK;;eAEhBG,QAAQ;gBACPC,SAAS;WACdF,MAAM;AACPD,QAAAA,EAAAA,KAAK,CAAA,EAAA,CAAI;IAEjBvO,EAAAA,MAAM,IAAIN,WAAW,CAACqE,UAAU,EAAE;IAAEhE,IAAAA,MAAM,EAAE;IAAI,GAAE,CAAC;IACnDC,EAAAA,MAAM,IAAIN,WAAW,CAAC+D,IAAI,CAAC;IAC3B,EAAA,OAAOzD,MAAM;IACf;IAEA,SAASgO,QAAQA,CACfW,MAAW,EACXrK,IAAY,EACZ/D,KAAmE,EAAA;MAEnE,IAAIA,KAAK,KAAKQ,SAAS,EAAE;IACzB4N,EAAAA,MAAM,CAACrK,IAAI,CAAC,GAAG8F,aAAa,CAAC7J,KAAK,CAAC;IACrC;;IC/cM,SAAUqO,mBAAmBA,CACjCnM,MAAoB,EACpB7C,OAAA,GAMI,EAAE,EAAA;MAEN,MAAM;QAAEoF,QAAQ;QAAEC,MAAM;IAAE3B,IAAAA;IAAM,GAAE,GAAG1D,OAAO;MAE5C,IAAIqF,MAAM,KAAKlE,SAAS,EAAE;IACxB,IAAA,OAAOkE,MAAM;IACf,EAAA;IAEA;MACA,IAAIG,aAAa,GAAG,IAAI;IACxB,EAAA,KAAK,MAAMvC,GAAG,IAAIJ,MAAM,EAAE;IACxB,IAAA,KAAK,MAAM4C,CAAC,IAAIxC,GAAG,EAAE;UACnB,IAAIqC,IAAI,CAACI,KAAK,CAACD,CAAC,CAAC,KAAKA,CAAC,EAAE;IACvBD,QAAAA,aAAa,GAAG,KAAK;IACrB,QAAA;IACF,MAAA;IACF,IAAA;IACF,EAAA;IACA,EAAA,IAAIA,aAAa,EAAE;IACjB,IAAA,OAAO,CAAC;IACV,EAAA;IACA;IACA;IACA,EAAA,MAAMG,aAAa,GAAGjC,MAAM,IAAId,aAAa,CAACC,MAAM,CAAC;IACrD,EAAA,OAAOsC,eAAe,CAACQ,aAAa,EAAEP,QAAQ,CAAC;IACjD;;ICpBA;;;;;;;IAOM,SAAU6J,kBAAkBA,CAChCrL,SAAyB,EACzB5D,OAAwB,EAAA;MAExB,MAAM;QAAE+K,OAAO;IAAEjH,IAAAA,IAAI,GAAG,EAAE;IAAED,IAAAA,IAAI,GAAG,EAAE;IAAE0D,IAAAA,UAAU,GAAG;IAAQ,GAAE,GAAGvH,OAAO;IAExE,EAAA,MAAMqF,MAAM,GACV,QAAQ,IAAIrF,OAAO,GACf;IAAE,IAAA,GAAGA,OAAO,CAACqF;IAAM,GAAE,GACpB,EAAmC;MAE1C,MAAM;IACJtB,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,KAAK,GAAG,EAAE;IACVC,IAAAA,MAAM,GAAG,EAAE;IACXC,IAAAA,QAAQ,GAAG,cAAc;QACzB,GAAGgL;IAAS,GACb,GAAGnE,OAAO;MAEX,MAAM3G,MAAM,GAAG,EAAE;MACjB,MAAMC,YAAY,GAAG,EAAE;MACvB,MAAMC,YAAY,GAAG,EAAE;MACvB,MAAMC,WAAW,GAAG,EAAE;MACtB,MAAMC,KAAK,GAAG,EAAE;MAChB,MAAMjB,KAAK,GAAG,EAAE;MAChB,MAAMC,IAAI,GAAG,EAAE;MACf,MAAMjB,GAAG,GAAG,EAAE;MACd,MAAMC,GAAG,GAAG,EAAE;MACd,MAAM2M,OAAO,GAAG,EAAE;MAElB,MAAMlP,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAgC;IAE3D,EAAA,KAAK,IAAIgC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhC,IAAI,CAACiB,MAAM,EAAEe,CAAC,EAAE,EAAE;IACpC,IAAA,MAAM5B,GAAG,GAAGJ,IAAI,CAACgC,CAAC,CAAyB;IAC3C,IAAA,MAAMwC,QAAQ,GAAGb,SAAS,CAACvD,GAAG,CAAC;QAC/B,IAAI,CAACoE,QAAQ,EAAE,MAAM,IAAIhD,KAAK,CAAC,oCAAoC,CAAC;QAEpE,MAAMiD,IAAI,GAAGD,QAAQ,EAAEE,KAAK,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClD,MAAMC,IAAI,GAAGJ,QAAQ,EAAEE,KAAK,CAACC,OAAO,CAAC,sBAAsB,EAAE,UAAU,CAAC;QAExE,MAAM;UAAEtB,SAAS;IAAEI,MAAAA;IAAM,KAAE,GAAGN,gBAAgB,CAACqB,QAAQ,CAAC1E,IAAI,CAAC;QAC7D,IAAI,CAACG,MAAM,CAACkP,MAAM,CAAC/J,MAAM,EAAEhF,GAAG,CAAC,EAAE;UAC/BgF,MAAM,CAAChF,GAAG,CAAC,GAAGgP,eAAe,CAAC5K,QAAQ,CAAC1E,IAAI,EAAE2D,MAAM,CAAC;IACtD,IAAA;QAEAU,MAAM,CAACU,IAAI,CAACL,QAAQ,CAACL,MAAM,IAAI/D,GAAG,CAAC;IACnCgE,IAAAA,YAAY,CAACS,IAAI,CAACJ,IAAI,IAAIrE,GAAG,CAAC;QAC9BkE,WAAW,CAACO,IAAI,CAACL,QAAQ,CAAC1E,IAAI,CAACmB,MAAM,CAAC;IACtCqC,IAAAA,KAAK,CAACuB,IAAI,CAACxB,SAAS,CAACC,KAAK,CAAC;IAC3BC,IAAAA,IAAI,CAACsB,IAAI,CAACxB,SAAS,CAACE,IAAI,CAAC;IACzBhB,IAAAA,GAAG,CAACsC,IAAI,CAACpB,MAAM,CAAClB,GAAG,CAAC;IACpBD,IAAAA,GAAG,CAACuC,IAAI,CAACpB,MAAM,CAACnB,GAAG,CAAC;IACpB4M,IAAAA,OAAO,CAACrK,IAAI,CAACO,MAAM,CAAChF,GAAG,CAAC,CAAC;IAEzB,IAAA,IAAIoE,QAAQ,CAACM,WAAW,KAAK5D,SAAS,EAAE;UACtCmD,YAAY,CAACQ,IAAI,CAACL,QAAQ,CAACM,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;IACvE,IAAA,CAAC,MAAM;UACLT,YAAY,CAACQ,IAAI,CACfL,QAAQ,CAACM,WAAW,KAAK5D,SAAS,GAC9B,CAACsD,QAAQ,CAACM,WAAW,GACrB9C,CAAC,KAAK,CAAC,GACL,aAAa,GACb,WAAW,CAClB;IACH,IAAA;QAEAuC,KAAK,CAACM,IAAI,CAACL,QAAQ,CAACD,KAAK,IAAIK,IAAI,IAAI,EAAE,CAAC;IAC1C,EAAA;MAEA,IAAIzE,MAAM,GAAG,CAAA,QAAA,EAAW2D,KAAK;;cAEjBG,QAAQ;;WAEXD,MAAM;AACPD,QAAAA,EAAAA,KAAK,CAAA,EAAA,CAAI;IAEjB5D,EAAAA,MAAM,IAAIN,WAAW,CAACgE,IAAI,EAAE;IAAE3D,IAAAA,MAAM,EAAE;IAAI,GAAE,CAAC;MAC7CC,MAAM,IAAIN,WAAW,CAAC;IAAE,IAAA,GAAGoP,SAAS;QAAE,GAAGrL;IAAI,GAAE,CAAC;IAEhD,EAAA,IAAIyG,KAAK,GAAG1G,SAAS,CAACqB,CAAC,CAAClF,IAAI;IAC5B,EAAA,IAAIwK,KAAK,GAAG3G,SAAS,CAAC6B,CAAC,CAAC1F,IAAI;MAC5BoD,kBAAkB,CAACmH,KAAK,CAAC;MACzBnH,kBAAkB,CAACoH,KAAK,CAAC;MACzB+E,wBAAwB,CAACzL,IAAI,CAAC;MAE9B,MAAM0L,KAAK,GAAG3L,SAAS,CAAC4L,CAAC,EAAEzP,IAAI,IAAI,EAAE;MACrCmD,WAAW,CAACqM,KAAK,CAAC;MAElB,MAAM;QAAEE,MAAM;QAAEC,QAAQ;IAAEC,IAAAA;IAAS,GAAE,GAAGC,mBAAmB,CAACxL,MAAM,CAAC;IAEnE,EAAA,MAAMyL,IAAI,GAAG3H,MAAM,CAACrE,IAAI,CAACiM,IAAI,CAAC;IAC9B,EAAA,MAAMC,IAAI,GAAG7H,MAAM,CAACrE,IAAI,CAACmM,IAAI,CAAC;IAC9B,EAAA,MAAM5E,OAAO,GAAG,IAAIxC,KAAK,CAAC,CAAC,CAAC;IAC5BwC,EAAAA,OAAO,CAACqE,MAAM,CAAC,GAAGI,IAAI;IACtBzE,EAAAA,OAAO,CAACsE,QAAQ,CAAC,GAAGK,IAAI;IAExB,EAAA,MAAME,IAAI,GAAGjK,MAAM,CAACnC,IAAI,CAACqM,IAAI,CAAC;IAC9B,EAAA,MAAMC,IAAI,GAAGnK,MAAM,CAACnC,IAAI,CAACuM,IAAI,CAAC;IAC9B,EAAA,MAAMC,mBAAmB,GAAG;IAC1BC,IAAAA,OAAO,EAAE;UAAEb,MAAM;IAAEC,MAAAA;SAAU;QAC7BO,IAAI;IACJE,IAAAA;IACD,GAAA;MAED/P,MAAM,IAAI,cAAc8D,QAAQ;AACnBG,aAAAA,EAAAA,YAAY,CAACW,IAAI,CAAC,GAAG,CAAC;AACtBZ,aAAAA,EAAAA,MAAM,CAACY,IAAI,CAAC,GAAG,CAAC;AAChBV,aAAAA,EAAAA,YAAY,CAACU,IAAI,CAAC,GAAG,CAAC;AACtBT,aAAAA,EAAAA,WAAW,CAACS,IAAI,CAAC,GAAG,CAAC;AACrBoG,aAAAA,EAAAA,OAAO,CAACpG,IAAI,CAAC,GAAG,CAAC;AACjBR,aAAAA,EAAAA,KAAK,CAACQ,IAAI,CAAC,GAAG,CAAC;AACfmK,aAAAA,EAAAA,OAAO,CAACnK,IAAI,CAAC,GAAG,CAAC;AACjBuL,aAAAA,EAAAA,YAAY,CAAChN,KAAK,EAAE8M,mBAAmB,CAAC;AACxCE,aAAAA,EAAAA,YAAY,CAAC/M,IAAI,EAAE6M,mBAAmB,CAAC;AACvCE,aAAAA,EAAAA,YAAY,CAAChO,GAAG,EAAE8N,mBAAmB,CAAC;AACtCE,aAAAA,EAAAA,YAAY,CAAC/N,GAAG,EAAE6N,mBAAmB,CAAC,CAAA,EAAA,CAAI;IACvDjQ,EAAAA,MAAM,IAAI,CAAA,8BAAA,CAAgC;IAC1CA,EAAAA,MAAM,IAAI,gBAAgB;IAE1B,EAAA,IAAIH,IAAI,CAACwP,MAAM,CAAC,KAAK,GAAG,EAAE;QACxB,CAAClF,KAAK,EAAED,KAAK,CAAC,GAAG,CAACA,KAAK,EAAEC,KAAK,CAAC;IACjC,EAAA;MACA,MAAMiG,YAAY,GAAIpM,MAAM,CAACqL,MAAM,CAAY,CAACgB,WAAW,EAAE;MAC7D,MAAMC,cAAc,GAAItM,MAAM,CAACsL,QAAQ,CAAY,CAACe,WAAW,EAAE;IAEjE,EAAA,MAAMjK,MAAM,GAAI+D,KAAK,CAAC,CAAC,CAAY,GAAG4F,IAAI;MAC1C,MAAM1J,KAAK,GAAI8D,KAAK,CAAC9G,EAAE,CAAC,EAAE,CAAY,GAAG0M,IAAI;IAC7C,EAAA,MAAM9J,MAAM,GAAGiE,KAAK,CAAC,CAAC,CAAW;MACjC,MAAM/D,KAAK,GAAG+D,KAAK,CAAC7G,EAAE,CAAC,EAAE,CAAW;IACpC,EAAA,MAAMkG,MAAM,GAAG,CAACpD,KAAK,GAAGF,MAAM,KAAKiE,KAAK,CAACpJ,MAAM,GAAG,CAAC,CAAC;IACpD,EAAA,MAAMyP,MAAM,GAAG,CAAClK,KAAK,GAAGD,MAAM,KAAK+D,KAAK,CAACrJ,MAAM,GAAG,CAAC,CAAC;IAEpD,EAAA,MAAM0P,SAAS,GAAG,IAAIvP,YAAY,CAAC,CAAC,CAAC;IACrCuP,EAAAA,SAAS,CAACnB,MAAM,CAAC,GAAGpJ,MAAM,GAAG4J,IAAI;IACjCW,EAAAA,SAAS,CAAClB,QAAQ,CAAC,GAAGlJ,MAAM;IAE5B,EAAA,MAAMJ,OAAO,GAAGf,MAAM,CAACI,CAAC,IAAI,CAAC;IAC7B,EAAA,MAAMU,OAAO,GAAGd,MAAM,CAACJ,CAAC,IAAI,CAAC;IAC7B,EAAA,MAAM4L,OAAO,GAAGxL,MAAM,CAACmK,CAAC,IAAI,CAAC;IAE7B,EAAA,KAAK,IAAIlH,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGiH,KAAK,CAACrO,MAAM,EAAEoH,KAAK,EAAE,EAAE;IACjD,IAAA,MAAMrF,GAAG,GAAGsM,KAAK,CAACjH,KAAK,CAAgB;IACvCsI,IAAAA,SAAS,CAACjB,SAAS,CAAC,GAAG1M,GAAG,CAAC,CAAC,CAAW;IACvC7C,IAAAA,MAAM,IAAI,CAAA,QAAA,EAAWsQ,cAAc,CAAA,CAAA,EACjC,CAAClK,MAAM,GAAGmK,MAAM,GAAGrI,KAAK,IAAIlC,OAC9B,CAAA,EAAA,CAAI;QACJhG,MAAM,IAAI,aAAawQ,SAAS,CAAC5L,IAAI,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI;QAC9C5E,MAAM,IAAI,CAAA,eAAA,EAAkBoQ,YAAY,CAAA,oBAAA,CAAsB;IAC9DpQ,IAAAA,MAAM,IAAIiH,aAAa,CACrBV,uBAAuB,CAAC1D,GAAG,EAAE4N,OAAO,CAAC,EACrCxK,MAAM,GAAGF,OAAO,EAChBwD,MAAM,GAAGxD,OAAO,EAChBoB,UAAU,CACX;IACDnH,IAAAA,MAAM,IAAI,IAAI;IAChB,EAAA;IAEA,EAAA,OAAOA,MAAM;IACf;IAEA,SAASmQ,YAAYA,CACnB9L,QAAkB,EAClBzE,OAIC,EAAA;MAED,MAAM;QAAEiQ,IAAI;IAAEE,IAAAA;IAAI,GAAE,GAAGnQ,OAAO;MAC9B,MAAM;QAAEyP,MAAM;IAAEC,IAAAA;OAAU,GAAG1P,OAAO,CAACsQ,OAAO;IAC5C,EAAA,MAAMQ,IAAI,GAAGrM,QAAQ,CAAC4E,KAAK,EAAE;MAC7ByH,IAAI,CAACrB,MAAM,CAAC,GAAIqB,IAAI,CAACrB,MAAM,CAAY,GAAGQ,IAAI;MAC9Ca,IAAI,CAACpB,QAAQ,CAAC,GAAIoB,IAAI,CAACpB,QAAQ,CAAY,GAAGS,IAAI;IAClD,EAAA,OAAOW,IAAI,CAAC9L,IAAI,CAAC,GAAG,CAAC;IACvB;IAEA,SAAS4K,mBAAmBA,CAACmB,KAAe,EAAA;IAC1C,EAAA,MAAM3M,MAAM,GAAG2M,KAAK,CAACnK,GAAG,CAAEoK,IAAI,IAAKA,IAAI,CAACP,WAAW,EAAE,CAAC;MACtD,MAAMhB,MAAM,GAAGrL,MAAM,CAACrD,QAAQ,CAAC,IAAI,CAAC,GAChCqD,MAAM,CAAC6M,OAAO,CAAC,IAAI,CAAC,GACpB7M,MAAM,CAAC6M,OAAO,CAAC,IAAI,CAAC;MACxB,MAAMvB,QAAQ,GAAGtL,MAAM,CAACrD,QAAQ,CAAC,IAAI,CAAC,GAClCqD,MAAM,CAAC6M,OAAO,CAAC,IAAI,CAAC,GACpB7M,MAAM,CAAC6M,OAAO,CAAC,IAAI,CAAC;MACxB,IAAIxB,MAAM,KAAK,EAAE,IAAIC,QAAQ,KAAK,EAAE,EAAE;IACpC,IAAA,MAAM,IAAIjO,KAAK,CACb,8DAA8D,CAC/D;IACH,EAAA;MACA,OAAO;QAAEgO,MAAM;QAAEC,QAAQ;IAAEC,IAAAA,SAAS,EAAE,CAAC,GAAGF,MAAM,GAAGC;OAAU;IAC/D;IAEA,SAASJ,wBAAwBA,CAACzL,IAAyB,EAAA;MACzD,MAAMqN,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAE7C,EAAA,KAAK,MAAM7Q,GAAG,IAAI6Q,IAAI,EAAE;IACtB,IAAA,MAAMvQ,KAAK,GAAGkD,IAAI,CAACxD,GAAG,CAAC;QACvB,IAAI,CAACM,KAAK,EAAE;IACV,MAAA,MAAM,IAAIc,KAAK,CAAC,CAAA,EAAGpB,GAAG,oCAAoC,CAAC;IAC7D,IAAA;IACF,EAAA;IACF;IAEA,SAASgP,eAAeA,CAACtP,IAAgC,EAAE2D,MAAc,EAAA;MACvE,OAAOhD,UAAU,CAACX,IAAI,CAAC,CAAC,CAAC,CAAC,GACtBiP,mBAAmB,CAACjP,IAAoB,EAAE;IAAE2D,IAAAA;IAAM,GAAE,CAAC,GACrD6B,aAAa,CAACxF,IAAmB,EAAE;IAAE2D,IAAAA;IAAM,GAAE,CAAC;IACpD;;;;;;;","x_google_ignoreList":[1,2,3,4,5,6,7,8,9]}